{"id":"0fe91e1246eb073e381d5b5d7b533467","_format":"hh-sol-build-info-1","solcVersion":"0.8.28","solcLongVersion":"0.8.28+commit.7893614a","input":{"language":"Solidity","sources":{"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ninterface AggregatorV3Interface {\n  function decimals() external view returns (uint8);\n\n  function description() external view returns (string memory);\n\n  function version() external view returns (uint256);\n\n  function getRoundData(uint80 _roundId)\n    external\n    view\n    returns (\n      uint80 roundId,\n      int256 answer,\n      uint256 startedAt,\n      uint256 updatedAt,\n      uint80 answeredInRound\n    );\n\n  function latestRoundData()\n    external\n    view\n    returns (\n      uint80 roundId,\n      int256 answer,\n      uint256 startedAt,\n      uint256 updatedAt,\n      uint80 answeredInRound\n    );\n}\n"},"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable2Step.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./OwnableUpgradeable.sol\";\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module which provides 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} and {acceptOwnership}.\n *\n * This module is used through inheritance. It will make available all functions\n * from parent (Ownable).\n */\nabstract contract Ownable2StepUpgradeable is Initializable, OwnableUpgradeable {\n    address private _pendingOwner;\n\n    event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner);\n\n    function __Ownable2Step_init() internal onlyInitializing {\n        __Ownable_init_unchained();\n    }\n\n    function __Ownable2Step_init_unchained() internal onlyInitializing {\n    }\n    /**\n     * @dev Returns the address of the pending owner.\n     */\n    function pendingOwner() public view virtual returns (address) {\n        return _pendingOwner;\n    }\n\n    /**\n     * @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.\n     * Can only be called by the current owner.\n     */\n    function transferOwnership(address newOwner) public virtual override onlyOwner {\n        _pendingOwner = newOwner;\n        emit OwnershipTransferStarted(owner(), newOwner);\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.\n     * Internal function without access restriction.\n     */\n    function _transferOwnership(address newOwner) internal virtual override {\n        delete _pendingOwner;\n        super._transferOwnership(newOwner);\n    }\n\n    /**\n     * @dev The new owner accepts the ownership transfer.\n     */\n    function acceptOwnership() public virtual {\n        address sender = _msgSender();\n        require(pendingOwner() == sender, \"Ownable2Step: caller is not the new owner\");\n        _transferOwnership(sender);\n    }\n\n    /**\n     * @dev This empty reserved space is put in place to allow future versions to add new\n     * variables without shifting down storage in the inheritance chain.\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n     */\n    uint256[49] private __gap;\n}\n"},"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/ContextUpgradeable.sol\";\nimport {Initializable} from \"../proxy/utils/Initializable.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 OwnableUpgradeable is Initializable, ContextUpgradeable {\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    function __Ownable_init() internal onlyInitializing {\n        __Ownable_init_unchained();\n    }\n\n    function __Ownable_init_unchained() internal onlyInitializing {\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. Can only be called by the current owner.\n     *\n     * NOTE: Renouncing ownership will leave the contract without an owner,\n     * thereby disabling any functionality that is only available to the owner.\n     */\n    function renounceOwnership() public virtual onlyOwner {\n        _transferOwnership(address(0));\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Can only be called by the current owner.\n     */\n    function transferOwnership(address newOwner) public virtual onlyOwner {\n        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    /**\n     * @dev This empty reserved space is put in place to allow future versions to add new\n     * variables without shifting down storage in the inheritance chain.\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n     */\n    uint256[49] private __gap;\n}\n"},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\n\npragma solidity ^0.8.2;\n\nimport \"../../utils/AddressUpgradeable.sol\";\n\n/**\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n *\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n * reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n * case an upgrade adds a module that needs to be initialized.\n *\n * For example:\n *\n * [.hljs-theme-light.nopadding]\n * ```solidity\n * contract MyToken is ERC20Upgradeable {\n *     function initialize() initializer public {\n *         __ERC20_init(\"MyToken\", \"MTK\");\n *     }\n * }\n *\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n *     function initializeV2() reinitializer(2) public {\n *         __ERC20Permit_init(\"MyToken\");\n *     }\n * }\n * ```\n *\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n *\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n *\n * [CAUTION]\n * ====\n * Avoid leaving a contract uninitialized.\n *\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n *\n * [.hljs-theme-light.nopadding]\n * ```\n * /// @custom:oz-upgrades-unsafe-allow constructor\n * constructor() {\n *     _disableInitializers();\n * }\n * ```\n * ====\n */\nabstract contract Initializable {\n    /**\n     * @dev Indicates that the contract has been initialized.\n     * @custom:oz-retyped-from bool\n     */\n    uint8 private _initialized;\n\n    /**\n     * @dev Indicates that the contract is in the process of being initialized.\n     */\n    bool private _initializing;\n\n    /**\n     * @dev Triggered when the contract has been initialized or reinitialized.\n     */\n    event Initialized(uint8 version);\n\n    /**\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n     * `onlyInitializing` functions can be used to initialize parent contracts.\n     *\n     * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\n     * constructor.\n     *\n     * Emits an {Initialized} event.\n     */\n    modifier initializer() {\n        bool isTopLevelCall = !_initializing;\n        require(\n            (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\n            \"Initializable: contract is already initialized\"\n        );\n        _initialized = 1;\n        if (isTopLevelCall) {\n            _initializing = true;\n        }\n        _;\n        if (isTopLevelCall) {\n            _initializing = false;\n            emit Initialized(1);\n        }\n    }\n\n    /**\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n     * used to initialize parent contracts.\n     *\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\n     * are added through upgrades and that require initialization.\n     *\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\n     *\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n     * a contract, executing them in the right order is up to the developer or operator.\n     *\n     * WARNING: setting the version to 255 will prevent any future reinitialization.\n     *\n     * Emits an {Initialized} event.\n     */\n    modifier reinitializer(uint8 version) {\n        require(!_initializing && _initialized < version, \"Initializable: contract is already initialized\");\n        _initialized = version;\n        _initializing = true;\n        _;\n        _initializing = false;\n        emit Initialized(version);\n    }\n\n    /**\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\n     */\n    modifier onlyInitializing() {\n        require(_initializing, \"Initializable: contract is not initializing\");\n        _;\n    }\n\n    /**\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n     * through proxies.\n     *\n     * Emits an {Initialized} event the first time it is successfully executed.\n     */\n    function _disableInitializers() internal virtual {\n        require(!_initializing, \"Initializable: contract is initializing\");\n        if (_initialized != type(uint8).max) {\n            _initialized = type(uint8).max;\n            emit Initialized(type(uint8).max);\n        }\n    }\n\n    /**\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\n     */\n    function _getInitializedVersion() internal view returns (uint8) {\n        return _initialized;\n    }\n\n    /**\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\n     */\n    function _isInitializing() internal view returns (bool) {\n        return _initializing;\n    }\n}\n"},"@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (security/ReentrancyGuard.sol)\n\npragma solidity ^0.8.0;\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module that helps prevent reentrant calls to a function.\n *\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n * available, which can be applied to functions to make sure there are no nested\n * (reentrant) calls to them.\n *\n * Note that because there is a single `nonReentrant` guard, functions marked as\n * `nonReentrant` may not call one another. This can be worked around by making\n * those functions `private`, and then adding `external` `nonReentrant` entry\n * points to them.\n *\n * TIP: If you would like to learn more about reentrancy and alternative ways\n * to protect against it, check out our blog post\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\n */\nabstract contract ReentrancyGuardUpgradeable is Initializable {\n    // Booleans are more expensive than uint256 or any type that takes up a full\n    // word because each write operation emits an extra SLOAD to first read the\n    // slot's contents, replace the bits taken up by the boolean, and then write\n    // back. This is the compiler's defense against contract upgrades and\n    // pointer aliasing, and it cannot be disabled.\n\n    // The values being non-zero value makes deployment a bit more expensive,\n    // but in exchange the refund on every call to nonReentrant will be lower in\n    // amount. Since refunds are capped to a percentage of the total\n    // transaction's gas, it is best to keep them low in cases like this one, to\n    // increase the likelihood of the full refund coming into effect.\n    uint256 private constant _NOT_ENTERED = 1;\n    uint256 private constant _ENTERED = 2;\n\n    uint256 private _status;\n\n    function __ReentrancyGuard_init() internal onlyInitializing {\n        __ReentrancyGuard_init_unchained();\n    }\n\n    function __ReentrancyGuard_init_unchained() internal onlyInitializing {\n        _status = _NOT_ENTERED;\n    }\n\n    /**\n     * @dev Prevents a contract from calling itself, directly or indirectly.\n     * Calling a `nonReentrant` function from another `nonReentrant`\n     * function is not supported. It is possible to prevent this from happening\n     * by making the `nonReentrant` function external, and making it call a\n     * `private` function that does the actual work.\n     */\n    modifier nonReentrant() {\n        _nonReentrantBefore();\n        _;\n        _nonReentrantAfter();\n    }\n\n    function _nonReentrantBefore() private {\n        // On the first call to nonReentrant, _status will be _NOT_ENTERED\n        require(_status != _ENTERED, \"ReentrancyGuard: reentrant call\");\n\n        // Any calls to nonReentrant after this point will fail\n        _status = _ENTERED;\n    }\n\n    function _nonReentrantAfter() private {\n        // By storing the original value once again, a refund is triggered (see\n        // https://eips.ethereum.org/EIPS/eip-2200)\n        _status = _NOT_ENTERED;\n    }\n\n    /**\n     * @dev Returns true if the reentrancy guard is currently set to \"entered\", which indicates there is a\n     * `nonReentrant` function in the call stack.\n     */\n    function _reentrancyGuardEntered() internal view returns (bool) {\n        return _status == _ENTERED;\n    }\n\n    /**\n     * @dev This empty reserved space is put in place to allow future versions to add new\n     * variables without shifting down storage in the inheritance chain.\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n     */\n    uint256[49] private __gap;\n}\n"},"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.4) (token/ERC20/extensions/IERC20Permit.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n *\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\n * need to send a transaction, and thus is not required to hold Ether at all.\n *\n * ==== Security Considerations\n *\n * There are two important considerations concerning the use of `permit`. The first is that a valid permit signature\n * expresses an allowance, and it should not be assumed to convey additional meaning. In particular, it should not be\n * considered as an intention to spend the allowance in any specific way. The second is that because permits have\n * built-in replay protection and can be submitted by anyone, they can be frontrun. A protocol that uses permits should\n * take this into consideration and allow a `permit` call to fail. Combining these two aspects, a pattern that may be\n * generally recommended is:\n *\n * ```solidity\n * function doThingWithPermit(..., uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {\n *     try token.permit(msg.sender, address(this), value, deadline, v, r, s) {} catch {}\n *     doThing(..., value);\n * }\n *\n * function doThing(..., uint256 value) public {\n *     token.safeTransferFrom(msg.sender, address(this), value);\n *     ...\n * }\n * ```\n *\n * Observe that: 1) `msg.sender` is used as the owner, leaving no ambiguity as to the signer intent, and 2) the use of\n * `try/catch` allows the permit to fail and makes the code tolerant to frontrunning. (See also\n * {SafeERC20-safeTransferFrom}).\n *\n * Additionally, note that smart contract wallets (such as Argent or Safe) are not able to produce permit signatures, so\n * contracts should have entry points that don't rely on permit.\n */\ninterface IERC20PermitUpgradeable {\n    /**\n     * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\n     * given ``owner``'s signed approval.\n     *\n     * IMPORTANT: The same issues {IERC20-approve} has related to transaction\n     * ordering also apply here.\n     *\n     * Emits an {Approval} event.\n     *\n     * Requirements:\n     *\n     * - `spender` cannot be the zero address.\n     * - `deadline` must be a timestamp in the future.\n     * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n     * over the EIP712-formatted function arguments.\n     * - the signature must use ``owner``'s current nonce (see {nonces}).\n     *\n     * For more information on the signature format, see the\n     * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n     * section].\n     *\n     * CAUTION: See Security Considerations above.\n     */\n    function permit(\n        address owner,\n        address spender,\n        uint256 value,\n        uint256 deadline,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external;\n\n    /**\n     * @dev Returns the current nonce for `owner`. This value must be\n     * included whenever a signature is generated for {permit}.\n     *\n     * Every successful call to {permit} increases ``owner``'s nonce by one. This\n     * prevents a signature from being used multiple times.\n     */\n    function nonces(address owner) external view returns (uint256);\n\n    /**\n     * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\n     */\n    // solhint-disable-next-line func-name-mixedcase\n    function DOMAIN_SEPARATOR() external view returns (bytes32);\n}\n"},"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.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 IERC20Upgradeable {\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(address from, address to, uint256 amount) external returns (bool);\n}\n"},"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.3) (token/ERC20/utils/SafeERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC20Upgradeable.sol\";\nimport \"../extensions/IERC20PermitUpgradeable.sol\";\nimport \"../../../utils/AddressUpgradeable.sol\";\n\n/**\n * @title SafeERC20\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */\nlibrary SafeERC20Upgradeable {\n    using AddressUpgradeable for address;\n\n    /**\n     * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\n     * non-reverting calls are assumed to be successful.\n     */\n    function safeTransfer(IERC20Upgradeable token, address to, uint256 value) internal {\n        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\n    }\n\n    /**\n     * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\n     * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\n     */\n    function safeTransferFrom(IERC20Upgradeable token, address from, address to, uint256 value) internal {\n        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\n    }\n\n    /**\n     * @dev Deprecated. This function has issues similar to the ones found in\n     * {IERC20-approve}, and its usage is discouraged.\n     *\n     * Whenever possible, use {safeIncreaseAllowance} and\n     * {safeDecreaseAllowance} instead.\n     */\n    function safeApprove(IERC20Upgradeable token, address spender, uint256 value) internal {\n        // safeApprove should only be called when setting an initial allowance,\n        // or when resetting it to zero. To increase and decrease it, use\n        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\n        require(\n            (value == 0) || (token.allowance(address(this), spender) == 0),\n            \"SafeERC20: approve from non-zero to non-zero allowance\"\n        );\n        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\n    }\n\n    /**\n     * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n     * non-reverting calls are assumed to be successful.\n     */\n    function safeIncreaseAllowance(IERC20Upgradeable token, address spender, uint256 value) internal {\n        uint256 oldAllowance = token.allowance(address(this), spender);\n        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance + value));\n    }\n\n    /**\n     * @dev Decrease the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n     * non-reverting calls are assumed to be successful.\n     */\n    function safeDecreaseAllowance(IERC20Upgradeable token, address spender, uint256 value) internal {\n        unchecked {\n            uint256 oldAllowance = token.allowance(address(this), spender);\n            require(oldAllowance >= value, \"SafeERC20: decreased allowance below zero\");\n            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance - value));\n        }\n    }\n\n    /**\n     * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\n     * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\n     * to be set to zero before setting it to a non-zero value, such as USDT.\n     */\n    function forceApprove(IERC20Upgradeable token, address spender, uint256 value) internal {\n        bytes memory approvalCall = abi.encodeWithSelector(token.approve.selector, spender, value);\n\n        if (!_callOptionalReturnBool(token, approvalCall)) {\n            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, 0));\n            _callOptionalReturn(token, approvalCall);\n        }\n    }\n\n    /**\n     * @dev Use a ERC-2612 signature to set the `owner` approval toward `spender` on `token`.\n     * Revert on invalid signature.\n     */\n    function safePermit(\n        IERC20PermitUpgradeable token,\n        address owner,\n        address spender,\n        uint256 value,\n        uint256 deadline,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) internal {\n        uint256 nonceBefore = token.nonces(owner);\n        token.permit(owner, spender, value, deadline, v, r, s);\n        uint256 nonceAfter = token.nonces(owner);\n        require(nonceAfter == nonceBefore + 1, \"SafeERC20: permit did not succeed\");\n    }\n\n    /**\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\n     * @param token The token targeted by the call.\n     * @param data The call data (encoded using abi.encode or one of its variants).\n     */\n    function _callOptionalReturn(IERC20Upgradeable token, bytes memory data) private {\n        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\n        // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that\n        // the target address contains contract code and also asserts for success in the low-level call.\n\n        bytes memory returndata = address(token).functionCall(data, \"SafeERC20: low-level call failed\");\n        require(returndata.length == 0 || abi.decode(returndata, (bool)), \"SafeERC20: ERC20 operation did not succeed\");\n    }\n\n    /**\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\n     * @param token The token targeted by the call.\n     * @param data The call data (encoded using abi.encode or one of its variants).\n     *\n     * This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead.\n     */\n    function _callOptionalReturnBool(IERC20Upgradeable token, bytes memory data) private returns (bool) {\n        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\n        // we're implementing it ourselves. We cannot use {Address-functionCall} here since this should return false\n        // and not revert is the subcall reverts.\n\n        (bool success, bytes memory returndata) = address(token).call(data);\n        return\n            success && (returndata.length == 0 || abi.decode(returndata, (bool))) && AddressUpgradeable.isContract(address(token));\n    }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary AddressUpgradeable {\n    /**\n     * @dev Returns true if `account` is a contract.\n     *\n     * [IMPORTANT]\n     * ====\n     * It is unsafe to assume that an address for which this function returns\n     * false is an externally-owned account (EOA) and not a contract.\n     *\n     * Among others, `isContract` will return false for the following\n     * types of addresses:\n     *\n     *  - an externally-owned account\n     *  - a contract in construction\n     *  - an address where a contract will be created\n     *  - an address where a contract lived, but was destroyed\n     *\n     * Furthermore, `isContract` will also return true if the target contract within\n     * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n     * which only has an effect at the end of a transaction.\n     * ====\n     *\n     * [IMPORTANT]\n     * ====\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\n     *\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n     * constructor.\n     * ====\n     */\n    function isContract(address account) internal view returns (bool) {\n        // This method relies on extcodesize/address.code.length, which returns 0\n        // for contracts in construction, since the code is only stored at the end\n        // of the constructor execution.\n\n        return account.code.length > 0;\n    }\n\n    /**\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n     * `recipient`, forwarding all available gas and reverting on errors.\n     *\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\n     * imposed by `transfer`, making them unable to receive funds via\n     * `transfer`. {sendValue} removes this limitation.\n     *\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n     *\n     * IMPORTANT: because control is transferred to `recipient`, care must be\n     * taken to not create reentrancy vulnerabilities. Consider using\n     * {ReentrancyGuard} or the\n     * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n     */\n    function sendValue(address payable recipient, uint256 amount) internal {\n        require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n        (bool success, ) = recipient.call{value: amount}(\"\");\n        require(success, \"Address: unable to send value, recipient may have reverted\");\n    }\n\n    /**\n     * @dev Performs a Solidity function call using a low level `call`. A\n     * plain `call` is an unsafe replacement for a function call: use this\n     * function instead.\n     *\n     * If `target` reverts with a revert reason, it is bubbled up by this\n     * function (like regular Solidity function calls).\n     *\n     * Returns the raw returned data. To convert to the expected return value,\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n     *\n     * Requirements:\n     *\n     * - `target` must be a contract.\n     * - calling `target` with `data` must not revert.\n     *\n     * _Available since v3.1._\n     */\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, 0, \"Address: low-level call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n     * `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, 0, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but also transferring `value` wei to `target`.\n     *\n     * Requirements:\n     *\n     * - the calling contract must have an ETH balance of at least `value`.\n     * - the called Solidity function must be `payable`.\n     *\n     * _Available since v3.1._\n     */\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCallWithValue(\n        address target,\n        bytes memory data,\n        uint256 value,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        require(address(this).balance >= value, \"Address: insufficient balance for call\");\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n        return functionStaticCall(target, data, \"Address: low-level static call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal view returns (bytes memory) {\n        (bool success, bytes memory returndata) = target.staticcall(data);\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a delegate call.\n     *\n     * _Available since v3.4._\n     */\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a delegate call.\n     *\n     * _Available since v3.4._\n     */\n    function functionDelegateCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        (bool success, bytes memory returndata) = target.delegatecall(data);\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n     * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n     *\n     * _Available since v4.8._\n     */\n    function verifyCallResultFromTarget(\n        address target,\n        bool success,\n        bytes memory returndata,\n        string memory errorMessage\n    ) internal view returns (bytes memory) {\n        if (success) {\n            if (returndata.length == 0) {\n                // only check isContract if the call was successful and the return data is empty\n                // otherwise we already know that it was a contract\n                require(isContract(target), \"Address: call to non-contract\");\n            }\n            return returndata;\n        } else {\n            _revert(returndata, errorMessage);\n        }\n    }\n\n    /**\n     * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n     * revert reason or using the provided one.\n     *\n     * _Available since v4.3._\n     */\n    function verifyCallResult(\n        bool success,\n        bytes memory returndata,\n        string memory errorMessage\n    ) internal pure returns (bytes memory) {\n        if (success) {\n            return returndata;\n        } else {\n            _revert(returndata, errorMessage);\n        }\n    }\n\n    function _revert(bytes memory returndata, string memory errorMessage) private pure {\n        // Look for revert reason and bubble it up if present\n        if (returndata.length > 0) {\n            // The easiest way to bubble the revert reason is using memory via assembly\n            /// @solidity memory-safe-assembly\n            assembly {\n                let returndata_size := mload(returndata)\n                revert(add(32, returndata), returndata_size)\n            }\n        } else {\n            revert(errorMessage);\n        }\n    }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\n\npragma solidity ^0.8.0;\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\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 ContextUpgradeable is Initializable {\n    function __Context_init() internal onlyInitializing {\n    }\n\n    function __Context_init_unchained() internal onlyInitializing {\n    }\n    function _msgSender() internal view virtual returns (address) {\n        return msg.sender;\n    }\n\n    function _msgData() internal view virtual returns (bytes calldata) {\n        return msg.data;\n    }\n\n    function _contextSuffixLength() internal view virtual returns (uint256) {\n        return 0;\n    }\n\n    /**\n     * @dev This empty reserved space is put in place to allow future versions to add new\n     * variables without shifting down storage in the inheritance chain.\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\n     */\n    uint256[50] private __gap;\n}\n"},"@openzeppelin/contracts/access/IAccessControl.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev External interface of AccessControl declared to support ERC165 detection.\n */\ninterface IAccessControl {\n    /**\n     * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n     *\n     * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n     * {RoleAdminChanged} not being emitted signaling this.\n     *\n     * _Available since v3.1._\n     */\n    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\n\n    /**\n     * @dev Emitted when `account` is granted `role`.\n     *\n     * `sender` is the account that originated the contract call, an admin role\n     * bearer except when using {AccessControl-_setupRole}.\n     */\n    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\n\n    /**\n     * @dev Emitted when `account` is revoked `role`.\n     *\n     * `sender` is the account that originated the contract call:\n     *   - if using `revokeRole`, it is the admin role bearer\n     *   - if using `renounceRole`, it is the role bearer (i.e. `account`)\n     */\n    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\n\n    /**\n     * @dev Returns `true` if `account` has been granted `role`.\n     */\n    function hasRole(bytes32 role, address account) external view returns (bool);\n\n    /**\n     * @dev Returns the admin role that controls `role`. See {grantRole} and\n     * {revokeRole}.\n     *\n     * To change a role's admin, use {AccessControl-_setRoleAdmin}.\n     */\n    function getRoleAdmin(bytes32 role) external view returns (bytes32);\n\n    /**\n     * @dev Grants `role` to `account`.\n     *\n     * If `account` had not been already granted `role`, emits a {RoleGranted}\n     * event.\n     *\n     * Requirements:\n     *\n     * - the caller must have ``role``'s admin role.\n     */\n    function grantRole(bytes32 role, address account) external;\n\n    /**\n     * @dev Revokes `role` from `account`.\n     *\n     * If `account` had been granted `role`, emits a {RoleRevoked} event.\n     *\n     * Requirements:\n     *\n     * - the caller must have ``role``'s admin role.\n     */\n    function revokeRole(bytes32 role, address account) external;\n\n    /**\n     * @dev Revokes `role` from the calling account.\n     *\n     * Roles are often managed via {grantRole} and {revokeRole}: this function's\n     * purpose is to provide a mechanism for accounts to lose their privileges\n     * if they are compromised (such as when a trusted device is misplaced).\n     *\n     * If the calling account had been granted `role`, emits a {RoleRevoked}\n     * event.\n     *\n     * Requirements:\n     *\n     * - the caller must be `account`.\n     */\n    function renounceRole(bytes32 role, address account) external;\n}\n"},"@openzeppelin/contracts/access/Ownable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.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. Can only be called by the current owner.\n     *\n     * NOTE: Renouncing ownership will leave the contract without an owner,\n     * thereby disabling any functionality that is only available to the owner.\n     */\n    function renounceOwnership() public virtual onlyOwner {\n        _transferOwnership(address(0));\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Can only be called by the current owner.\n     */\n    function transferOwnership(address newOwner) public virtual onlyOwner {\n        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/contracts/access/Ownable2Step.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable2Step.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./Ownable.sol\";\n\n/**\n * @dev Contract module which provides 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} and {acceptOwnership}.\n *\n * This module is used through inheritance. It will make available all functions\n * from parent (Ownable).\n */\nabstract contract Ownable2Step is Ownable {\n    address private _pendingOwner;\n\n    event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner);\n\n    /**\n     * @dev Returns the address of the pending owner.\n     */\n    function pendingOwner() public view virtual returns (address) {\n        return _pendingOwner;\n    }\n\n    /**\n     * @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.\n     * Can only be called by the current owner.\n     */\n    function transferOwnership(address newOwner) public virtual override onlyOwner {\n        _pendingOwner = newOwner;\n        emit OwnershipTransferStarted(owner(), newOwner);\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.\n     * Internal function without access restriction.\n     */\n    function _transferOwnership(address newOwner) internal virtual override {\n        delete _pendingOwner;\n        super._transferOwnership(newOwner);\n    }\n\n    /**\n     * @dev The new owner accepts the ownership transfer.\n     */\n    function acceptOwnership() public virtual {\n        address sender = _msgSender();\n        require(pendingOwner() == sender, \"Ownable2Step: caller is not the new owner\");\n        _transferOwnership(sender);\n    }\n}\n"},"@openzeppelin/contracts/interfaces/IERC5267.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC5267.sol)\n\npragma solidity ^0.8.0;\n\ninterface IERC5267 {\n    /**\n     * @dev MAY be emitted to signal that the domain could have changed.\n     */\n    event EIP712DomainChanged();\n\n    /**\n     * @dev returns the fields and values that describe the domain separator used by this contract for EIP-712\n     * signature.\n     */\n    function eip712Domain()\n        external\n        view\n        returns (\n            bytes1 fields,\n            string memory name,\n            string memory version,\n            uint256 chainId,\n            address verifyingContract,\n            bytes32 salt,\n            uint256[] memory extensions\n        );\n}\n"},"@openzeppelin/contracts/security/ReentrancyGuard.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (security/ReentrancyGuard.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Contract module that helps prevent reentrant calls to a function.\n *\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n * available, which can be applied to functions to make sure there are no nested\n * (reentrant) calls to them.\n *\n * Note that because there is a single `nonReentrant` guard, functions marked as\n * `nonReentrant` may not call one another. This can be worked around by making\n * those functions `private`, and then adding `external` `nonReentrant` entry\n * points to them.\n *\n * TIP: If you would like to learn more about reentrancy and alternative ways\n * to protect against it, check out our blog post\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\n */\nabstract contract ReentrancyGuard {\n    // Booleans are more expensive than uint256 or any type that takes up a full\n    // word because each write operation emits an extra SLOAD to first read the\n    // slot's contents, replace the bits taken up by the boolean, and then write\n    // back. This is the compiler's defense against contract upgrades and\n    // pointer aliasing, and it cannot be disabled.\n\n    // The values being non-zero value makes deployment a bit more expensive,\n    // but in exchange the refund on every call to nonReentrant will be lower in\n    // amount. Since refunds are capped to a percentage of the total\n    // transaction's gas, it is best to keep them low in cases like this one, to\n    // increase the likelihood of the full refund coming into effect.\n    uint256 private constant _NOT_ENTERED = 1;\n    uint256 private constant _ENTERED = 2;\n\n    uint256 private _status;\n\n    constructor() {\n        _status = _NOT_ENTERED;\n    }\n\n    /**\n     * @dev Prevents a contract from calling itself, directly or indirectly.\n     * Calling a `nonReentrant` function from another `nonReentrant`\n     * function is not supported. It is possible to prevent this from happening\n     * by making the `nonReentrant` function external, and making it call a\n     * `private` function that does the actual work.\n     */\n    modifier nonReentrant() {\n        _nonReentrantBefore();\n        _;\n        _nonReentrantAfter();\n    }\n\n    function _nonReentrantBefore() private {\n        // On the first call to nonReentrant, _status will be _NOT_ENTERED\n        require(_status != _ENTERED, \"ReentrancyGuard: reentrant call\");\n\n        // Any calls to nonReentrant after this point will fail\n        _status = _ENTERED;\n    }\n\n    function _nonReentrantAfter() private {\n        // By storing the original value once again, a refund is triggered (see\n        // https://eips.ethereum.org/EIPS/eip-2200)\n        _status = _NOT_ENTERED;\n    }\n\n    /**\n     * @dev Returns true if the reentrancy guard is currently set to \"entered\", which indicates there is a\n     * `nonReentrant` function in the call stack.\n     */\n    function _reentrancyGuardEntered() internal view returns (bool) {\n        return _status == _ENTERED;\n    }\n}\n"},"@openzeppelin/contracts/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/contracts/token/ERC20/extensions/IERC20Permit.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.4) (token/ERC20/extensions/IERC20Permit.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n *\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\n * need to send a transaction, and thus is not required to hold Ether at all.\n *\n * ==== Security Considerations\n *\n * There are two important considerations concerning the use of `permit`. The first is that a valid permit signature\n * expresses an allowance, and it should not be assumed to convey additional meaning. In particular, it should not be\n * considered as an intention to spend the allowance in any specific way. The second is that because permits have\n * built-in replay protection and can be submitted by anyone, they can be frontrun. A protocol that uses permits should\n * take this into consideration and allow a `permit` call to fail. Combining these two aspects, a pattern that may be\n * generally recommended is:\n *\n * ```solidity\n * function doThingWithPermit(..., uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {\n *     try token.permit(msg.sender, address(this), value, deadline, v, r, s) {} catch {}\n *     doThing(..., value);\n * }\n *\n * function doThing(..., uint256 value) public {\n *     token.safeTransferFrom(msg.sender, address(this), value);\n *     ...\n * }\n * ```\n *\n * Observe that: 1) `msg.sender` is used as the owner, leaving no ambiguity as to the signer intent, and 2) the use of\n * `try/catch` allows the permit to fail and makes the code tolerant to frontrunning. (See also\n * {SafeERC20-safeTransferFrom}).\n *\n * Additionally, note that smart contract wallets (such as Argent or Safe) are not able to produce permit signatures, so\n * contracts should have entry points that don't rely on permit.\n */\ninterface IERC20Permit {\n    /**\n     * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\n     * given ``owner``'s signed approval.\n     *\n     * IMPORTANT: The same issues {IERC20-approve} has related to transaction\n     * ordering also apply here.\n     *\n     * Emits an {Approval} event.\n     *\n     * Requirements:\n     *\n     * - `spender` cannot be the zero address.\n     * - `deadline` must be a timestamp in the future.\n     * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n     * over the EIP712-formatted function arguments.\n     * - the signature must use ``owner``'s current nonce (see {nonces}).\n     *\n     * For more information on the signature format, see the\n     * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n     * section].\n     *\n     * CAUTION: See Security Considerations above.\n     */\n    function permit(\n        address owner,\n        address spender,\n        uint256 value,\n        uint256 deadline,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external;\n\n    /**\n     * @dev Returns the current nonce for `owner`. This value must be\n     * included whenever a signature is generated for {permit}.\n     *\n     * Every successful call to {permit} increases ``owner``'s nonce by one. This\n     * prevents a signature from being used multiple times.\n     */\n    function nonces(address owner) external view returns (uint256);\n\n    /**\n     * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\n     */\n    // solhint-disable-next-line func-name-mixedcase\n    function DOMAIN_SEPARATOR() external view returns (bytes32);\n}\n"},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.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(address from, address to, uint256 amount) external returns (bool);\n}\n"},"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.3) (token/ERC20/utils/SafeERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC20.sol\";\nimport \"../extensions/IERC20Permit.sol\";\nimport \"../../../utils/Address.sol\";\n\n/**\n * @title SafeERC20\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */\nlibrary SafeERC20 {\n    using Address for address;\n\n    /**\n     * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\n     * non-reverting calls are assumed to be successful.\n     */\n    function safeTransfer(IERC20 token, address to, uint256 value) internal {\n        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\n    }\n\n    /**\n     * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\n     * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\n     */\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\n        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\n    }\n\n    /**\n     * @dev Deprecated. This function has issues similar to the ones found in\n     * {IERC20-approve}, and its usage is discouraged.\n     *\n     * Whenever possible, use {safeIncreaseAllowance} and\n     * {safeDecreaseAllowance} instead.\n     */\n    function safeApprove(IERC20 token, address spender, uint256 value) internal {\n        // safeApprove should only be called when setting an initial allowance,\n        // or when resetting it to zero. To increase and decrease it, use\n        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\n        require(\n            (value == 0) || (token.allowance(address(this), spender) == 0),\n            \"SafeERC20: approve from non-zero to non-zero allowance\"\n        );\n        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\n    }\n\n    /**\n     * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n     * non-reverting calls are assumed to be successful.\n     */\n    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\n        uint256 oldAllowance = token.allowance(address(this), spender);\n        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance + value));\n    }\n\n    /**\n     * @dev Decrease the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n     * non-reverting calls are assumed to be successful.\n     */\n    function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {\n        unchecked {\n            uint256 oldAllowance = token.allowance(address(this), spender);\n            require(oldAllowance >= value, \"SafeERC20: decreased allowance below zero\");\n            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance - value));\n        }\n    }\n\n    /**\n     * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\n     * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\n     * to be set to zero before setting it to a non-zero value, such as USDT.\n     */\n    function forceApprove(IERC20 token, address spender, uint256 value) internal {\n        bytes memory approvalCall = abi.encodeWithSelector(token.approve.selector, spender, value);\n\n        if (!_callOptionalReturnBool(token, approvalCall)) {\n            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, 0));\n            _callOptionalReturn(token, approvalCall);\n        }\n    }\n\n    /**\n     * @dev Use a ERC-2612 signature to set the `owner` approval toward `spender` on `token`.\n     * Revert on invalid signature.\n     */\n    function safePermit(\n        IERC20Permit token,\n        address owner,\n        address spender,\n        uint256 value,\n        uint256 deadline,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) internal {\n        uint256 nonceBefore = token.nonces(owner);\n        token.permit(owner, spender, value, deadline, v, r, s);\n        uint256 nonceAfter = token.nonces(owner);\n        require(nonceAfter == nonceBefore + 1, \"SafeERC20: permit did not succeed\");\n    }\n\n    /**\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\n     * @param token The token targeted by the call.\n     * @param data The call data (encoded using abi.encode or one of its variants).\n     */\n    function _callOptionalReturn(IERC20 token, bytes memory data) private {\n        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\n        // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that\n        // the target address contains contract code and also asserts for success in the low-level call.\n\n        bytes memory returndata = address(token).functionCall(data, \"SafeERC20: low-level call failed\");\n        require(returndata.length == 0 || abi.decode(returndata, (bool)), \"SafeERC20: ERC20 operation did not succeed\");\n    }\n\n    /**\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\n     * @param token The token targeted by the call.\n     * @param data The call data (encoded using abi.encode or one of its variants).\n     *\n     * This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead.\n     */\n    function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {\n        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\n        // we're implementing it ourselves. We cannot use {Address-functionCall} here since this should return false\n        // and not revert is the subcall reverts.\n\n        (bool success, bytes memory returndata) = address(token).call(data);\n        return\n            success && (returndata.length == 0 || abi.decode(returndata, (bool))) && Address.isContract(address(token));\n    }\n}\n"},"@openzeppelin/contracts/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n    /**\n     * @dev Returns true if `account` is a contract.\n     *\n     * [IMPORTANT]\n     * ====\n     * It is unsafe to assume that an address for which this function returns\n     * false is an externally-owned account (EOA) and not a contract.\n     *\n     * Among others, `isContract` will return false for the following\n     * types of addresses:\n     *\n     *  - an externally-owned account\n     *  - a contract in construction\n     *  - an address where a contract will be created\n     *  - an address where a contract lived, but was destroyed\n     *\n     * Furthermore, `isContract` will also return true if the target contract within\n     * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n     * which only has an effect at the end of a transaction.\n     * ====\n     *\n     * [IMPORTANT]\n     * ====\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\n     *\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n     * constructor.\n     * ====\n     */\n    function isContract(address account) internal view returns (bool) {\n        // This method relies on extcodesize/address.code.length, which returns 0\n        // for contracts in construction, since the code is only stored at the end\n        // of the constructor execution.\n\n        return account.code.length > 0;\n    }\n\n    /**\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n     * `recipient`, forwarding all available gas and reverting on errors.\n     *\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\n     * imposed by `transfer`, making them unable to receive funds via\n     * `transfer`. {sendValue} removes this limitation.\n     *\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n     *\n     * IMPORTANT: because control is transferred to `recipient`, care must be\n     * taken to not create reentrancy vulnerabilities. Consider using\n     * {ReentrancyGuard} or the\n     * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n     */\n    function sendValue(address payable recipient, uint256 amount) internal {\n        require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n        (bool success, ) = recipient.call{value: amount}(\"\");\n        require(success, \"Address: unable to send value, recipient may have reverted\");\n    }\n\n    /**\n     * @dev Performs a Solidity function call using a low level `call`. A\n     * plain `call` is an unsafe replacement for a function call: use this\n     * function instead.\n     *\n     * If `target` reverts with a revert reason, it is bubbled up by this\n     * function (like regular Solidity function calls).\n     *\n     * Returns the raw returned data. To convert to the expected return value,\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n     *\n     * Requirements:\n     *\n     * - `target` must be a contract.\n     * - calling `target` with `data` must not revert.\n     *\n     * _Available since v3.1._\n     */\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, 0, \"Address: low-level call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n     * `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, 0, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but also transferring `value` wei to `target`.\n     *\n     * Requirements:\n     *\n     * - the calling contract must have an ETH balance of at least `value`.\n     * - the called Solidity function must be `payable`.\n     *\n     * _Available since v3.1._\n     */\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCallWithValue(\n        address target,\n        bytes memory data,\n        uint256 value,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        require(address(this).balance >= value, \"Address: insufficient balance for call\");\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n        return functionStaticCall(target, data, \"Address: low-level static call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal view returns (bytes memory) {\n        (bool success, bytes memory returndata) = target.staticcall(data);\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a delegate call.\n     *\n     * _Available since v3.4._\n     */\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a delegate call.\n     *\n     * _Available since v3.4._\n     */\n    function functionDelegateCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        (bool success, bytes memory returndata) = target.delegatecall(data);\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n     * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n     *\n     * _Available since v4.8._\n     */\n    function verifyCallResultFromTarget(\n        address target,\n        bool success,\n        bytes memory returndata,\n        string memory errorMessage\n    ) internal view returns (bytes memory) {\n        if (success) {\n            if (returndata.length == 0) {\n                // only check isContract if the call was successful and the return data is empty\n                // otherwise we already know that it was a contract\n                require(isContract(target), \"Address: call to non-contract\");\n            }\n            return returndata;\n        } else {\n            _revert(returndata, errorMessage);\n        }\n    }\n\n    /**\n     * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n     * revert reason or using the provided one.\n     *\n     * _Available since v4.3._\n     */\n    function verifyCallResult(\n        bool success,\n        bytes memory returndata,\n        string memory errorMessage\n    ) internal pure returns (bytes memory) {\n        if (success) {\n            return returndata;\n        } else {\n            _revert(returndata, errorMessage);\n        }\n    }\n\n    function _revert(bytes memory returndata, string memory errorMessage) private pure {\n        // Look for revert reason and bubble it up if present\n        if (returndata.length > 0) {\n            // The easiest way to bubble the revert reason is using memory via assembly\n            /// @solidity memory-safe-assembly\n            assembly {\n                let returndata_size := mload(returndata)\n                revert(add(32, returndata), returndata_size)\n            }\n        } else {\n            revert(errorMessage);\n        }\n    }\n}\n"},"@openzeppelin/contracts/utils/Context.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.4) (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    function _contextSuffixLength() internal view virtual returns (uint256) {\n        return 0;\n    }\n}\n"},"@openzeppelin/contracts/utils/cryptography/ECDSA.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/cryptography/ECDSA.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../Strings.sol\";\n\n/**\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n *\n * These functions can be used to verify that a message was signed by the holder\n * of the private keys of a given address.\n */\nlibrary ECDSA {\n    enum RecoverError {\n        NoError,\n        InvalidSignature,\n        InvalidSignatureLength,\n        InvalidSignatureS,\n        InvalidSignatureV // Deprecated in v4.8\n    }\n\n    function _throwError(RecoverError error) private pure {\n        if (error == RecoverError.NoError) {\n            return; // no error: do nothing\n        } else if (error == RecoverError.InvalidSignature) {\n            revert(\"ECDSA: invalid signature\");\n        } else if (error == RecoverError.InvalidSignatureLength) {\n            revert(\"ECDSA: invalid signature length\");\n        } else if (error == RecoverError.InvalidSignatureS) {\n            revert(\"ECDSA: invalid signature 's' value\");\n        }\n    }\n\n    /**\n     * @dev Returns the address that signed a hashed message (`hash`) with\n     * `signature` or error string. This address can then be used for verification purposes.\n     *\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n     * this function rejects them by requiring the `s` value to be in the lower\n     * half order, and the `v` value to be either 27 or 28.\n     *\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n     * verification to be secure: it is possible to craft signatures that\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n     * this is by receiving a hash of the original message (which may otherwise\n     * be too long), and then calling {toEthSignedMessageHash} on it.\n     *\n     * Documentation for signature generation:\n     * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n     * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\n     *\n     * _Available since v4.3._\n     */\n    function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\n        if (signature.length == 65) {\n            bytes32 r;\n            bytes32 s;\n            uint8 v;\n            // ecrecover takes the signature parameters, and the only way to get them\n            // currently is to use assembly.\n            /// @solidity memory-safe-assembly\n            assembly {\n                r := mload(add(signature, 0x20))\n                s := mload(add(signature, 0x40))\n                v := byte(0, mload(add(signature, 0x60)))\n            }\n            return tryRecover(hash, v, r, s);\n        } else {\n            return (address(0), RecoverError.InvalidSignatureLength);\n        }\n    }\n\n    /**\n     * @dev Returns the address that signed a hashed message (`hash`) with\n     * `signature`. This address can then be used for verification purposes.\n     *\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n     * this function rejects them by requiring the `s` value to be in the lower\n     * half order, and the `v` value to be either 27 or 28.\n     *\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n     * verification to be secure: it is possible to craft signatures that\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n     * this is by receiving a hash of the original message (which may otherwise\n     * be too long), and then calling {toEthSignedMessageHash} on it.\n     */\n    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\n        (address recovered, RecoverError error) = tryRecover(hash, signature);\n        _throwError(error);\n        return recovered;\n    }\n\n    /**\n     * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n     *\n     * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\n     *\n     * _Available since v4.3._\n     */\n    function tryRecover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address, RecoverError) {\n        bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\n        uint8 v = uint8((uint256(vs) >> 255) + 27);\n        return tryRecover(hash, v, r, s);\n    }\n\n    /**\n     * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\n     *\n     * _Available since v4.2._\n     */\n    function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {\n        (address recovered, RecoverError error) = tryRecover(hash, r, vs);\n        _throwError(error);\n        return recovered;\n    }\n\n    /**\n     * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n     * `r` and `s` signature fields separately.\n     *\n     * _Available since v4.3._\n     */\n    function tryRecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address, RecoverError) {\n        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\n        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\n        // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most\n        // signatures from current libraries generate a unique signature with an s-value in the lower half order.\n        //\n        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\n        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\n        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\n        // these malleable signatures as well.\n        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\n            return (address(0), RecoverError.InvalidSignatureS);\n        }\n\n        // If the signature is valid (and not malleable), return the signer address\n        address signer = ecrecover(hash, v, r, s);\n        if (signer == address(0)) {\n            return (address(0), RecoverError.InvalidSignature);\n        }\n\n        return (signer, RecoverError.NoError);\n    }\n\n    /**\n     * @dev Overload of {ECDSA-recover} that receives the `v`,\n     * `r` and `s` signature fields separately.\n     */\n    function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {\n        (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\n        _throwError(error);\n        return recovered;\n    }\n\n    /**\n     * @dev Returns an Ethereum Signed Message, created from a `hash`. This\n     * produces hash corresponding to the one signed with the\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n     * JSON-RPC method as part of EIP-191.\n     *\n     * See {recover}.\n     */\n    function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32 message) {\n        // 32 is the length in bytes of hash,\n        // enforced by the type signature above\n        /// @solidity memory-safe-assembly\n        assembly {\n            mstore(0x00, \"\\x19Ethereum Signed Message:\\n32\")\n            mstore(0x1c, hash)\n            message := keccak256(0x00, 0x3c)\n        }\n    }\n\n    /**\n     * @dev Returns an Ethereum Signed Message, created from `s`. This\n     * produces hash corresponding to the one signed with the\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n     * JSON-RPC method as part of EIP-191.\n     *\n     * See {recover}.\n     */\n    function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\n        return keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n\", Strings.toString(s.length), s));\n    }\n\n    /**\n     * @dev Returns an Ethereum Signed Typed Data, created from a\n     * `domainSeparator` and a `structHash`. This produces hash corresponding\n     * to the one signed with the\n     * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\n     * JSON-RPC method as part of EIP-712.\n     *\n     * See {recover}.\n     */\n    function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32 data) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            let ptr := mload(0x40)\n            mstore(ptr, \"\\x19\\x01\")\n            mstore(add(ptr, 0x02), domainSeparator)\n            mstore(add(ptr, 0x22), structHash)\n            data := keccak256(ptr, 0x42)\n        }\n    }\n\n    /**\n     * @dev Returns an Ethereum Signed Data with intended validator, created from a\n     * `validator` and `data` according to the version 0 of EIP-191.\n     *\n     * See {recover}.\n     */\n    function toDataWithIntendedValidatorHash(address validator, bytes memory data) internal pure returns (bytes32) {\n        return keccak256(abi.encodePacked(\"\\x19\\x00\", validator, data));\n    }\n}\n"},"@openzeppelin/contracts/utils/cryptography/EIP712.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/cryptography/EIP712.sol)\n\npragma solidity ^0.8.8;\n\nimport \"./ECDSA.sol\";\nimport \"../ShortStrings.sol\";\nimport \"../../interfaces/IERC5267.sol\";\n\n/**\n * @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\n *\n * The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,\n * thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding\n * they need in their contracts using a combination of `abi.encode` and `keccak256`.\n *\n * This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\n * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\n * ({_hashTypedDataV4}).\n *\n * The implementation of the domain separator was designed to be as efficient as possible while still properly updating\n * the chain id to protect against replay attacks on an eventual fork of the chain.\n *\n * NOTE: This contract implements the version of the encoding known as \"v4\", as implemented by the JSON RPC method\n * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\n *\n * NOTE: In the upgradeable version of this contract, the cached values will correspond to the address, and the domain\n * separator of the implementation contract. This will cause the `_domainSeparatorV4` function to always rebuild the\n * separator from the immutable values, which is cheaper than accessing a cached version in cold storage.\n *\n * _Available since v3.4._\n *\n * @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\n */\nabstract contract EIP712 is IERC5267 {\n    using ShortStrings for *;\n\n    bytes32 private constant _TYPE_HASH =\n        keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\");\n\n    // Cache the domain separator as an immutable value, but also store the chain id that it corresponds to, in order to\n    // invalidate the cached domain separator if the chain id changes.\n    bytes32 private immutable _cachedDomainSeparator;\n    uint256 private immutable _cachedChainId;\n    address private immutable _cachedThis;\n\n    bytes32 private immutable _hashedName;\n    bytes32 private immutable _hashedVersion;\n\n    ShortString private immutable _name;\n    ShortString private immutable _version;\n    string private _nameFallback;\n    string private _versionFallback;\n\n    /**\n     * @dev Initializes the domain separator and parameter caches.\n     *\n     * The meaning of `name` and `version` is specified in\n     * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\n     *\n     * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\n     * - `version`: the current major version of the signing domain.\n     *\n     * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\n     * contract upgrade].\n     */\n    constructor(string memory name, string memory version) {\n        _name = name.toShortStringWithFallback(_nameFallback);\n        _version = version.toShortStringWithFallback(_versionFallback);\n        _hashedName = keccak256(bytes(name));\n        _hashedVersion = keccak256(bytes(version));\n\n        _cachedChainId = block.chainid;\n        _cachedDomainSeparator = _buildDomainSeparator();\n        _cachedThis = address(this);\n    }\n\n    /**\n     * @dev Returns the domain separator for the current chain.\n     */\n    function _domainSeparatorV4() internal view returns (bytes32) {\n        if (address(this) == _cachedThis && block.chainid == _cachedChainId) {\n            return _cachedDomainSeparator;\n        } else {\n            return _buildDomainSeparator();\n        }\n    }\n\n    function _buildDomainSeparator() private view returns (bytes32) {\n        return keccak256(abi.encode(_TYPE_HASH, _hashedName, _hashedVersion, block.chainid, address(this)));\n    }\n\n    /**\n     * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\n     * function returns the hash of the fully encoded EIP712 message for this domain.\n     *\n     * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\n     *\n     * ```solidity\n     * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\n     *     keccak256(\"Mail(address to,string contents)\"),\n     *     mailTo,\n     *     keccak256(bytes(mailContents))\n     * )));\n     * address signer = ECDSA.recover(digest, signature);\n     * ```\n     */\n    function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {\n        return ECDSA.toTypedDataHash(_domainSeparatorV4(), structHash);\n    }\n\n    /**\n     * @dev See {EIP-5267}.\n     *\n     * _Available since v4.9._\n     */\n    function eip712Domain()\n        public\n        view\n        virtual\n        override\n        returns (\n            bytes1 fields,\n            string memory name,\n            string memory version,\n            uint256 chainId,\n            address verifyingContract,\n            bytes32 salt,\n            uint256[] memory extensions\n        )\n    {\n        return (\n            hex\"0f\", // 01111\n            _name.toStringWithFallback(_nameFallback),\n            _version.toStringWithFallback(_versionFallback),\n            block.chainid,\n            address(this),\n            bytes32(0),\n            new uint256[](0)\n        );\n    }\n}\n"},"@openzeppelin/contracts/utils/math/Math.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.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(uint256 x, uint256 y, uint256 denominator) 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                // Solidity will revert if denominator == 0, unlike the div opcode on its own.\n                // The surrounding unchecked block does not change this fact.\n                // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\n                return prod0 / denominator;\n            }\n\n            // Make sure the result is less than 2^256. Also prevents denominator == 0.\n            require(denominator > prod1, \"Math: mulDiv overflow\");\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(uint256 x, uint256 y, uint256 denominator, Rounding rounding) 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 256, 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 << 3) < value ? 1 : 0);\n        }\n    }\n}\n"},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Standard signed math utilities missing in the Solidity language.\n */\nlibrary SignedMath {\n    /**\n     * @dev Returns the largest of two signed numbers.\n     */\n    function max(int256 a, int256 b) internal pure returns (int256) {\n        return a > b ? a : b;\n    }\n\n    /**\n     * @dev Returns the smallest of two signed numbers.\n     */\n    function min(int256 a, int256 b) internal pure returns (int256) {\n        return a < b ? a : b;\n    }\n\n    /**\n     * @dev Returns the average of two signed numbers without overflow.\n     * The result is rounded towards zero.\n     */\n    function average(int256 a, int256 b) internal pure returns (int256) {\n        // Formula from the book \"Hacker's Delight\"\n        int256 x = (a & b) + ((a ^ b) >> 1);\n        return x + (int256(uint256(x) >> 255) & (a ^ b));\n    }\n\n    /**\n     * @dev Returns the absolute unsigned value of a signed value.\n     */\n    function abs(int256 n) internal pure returns (uint256) {\n        unchecked {\n            // must be unchecked in order to support `n = type(int256).min`\n            return uint256(n >= 0 ? n : -n);\n        }\n    }\n}\n"},"@openzeppelin/contracts/utils/ShortStrings.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/ShortStrings.sol)\n\npragma solidity ^0.8.8;\n\nimport \"./StorageSlot.sol\";\n\n// | string  | 0xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA   |\n// | length  | 0x                                                              BB |\ntype ShortString is bytes32;\n\n/**\n * @dev This library provides functions to convert short memory strings\n * into a `ShortString` type that can be used as an immutable variable.\n *\n * Strings of arbitrary length can be optimized using this library if\n * they are short enough (up to 31 bytes) by packing them with their\n * length (1 byte) in a single EVM word (32 bytes). Additionally, a\n * fallback mechanism can be used for every other case.\n *\n * Usage example:\n *\n * ```solidity\n * contract Named {\n *     using ShortStrings for *;\n *\n *     ShortString private immutable _name;\n *     string private _nameFallback;\n *\n *     constructor(string memory contractName) {\n *         _name = contractName.toShortStringWithFallback(_nameFallback);\n *     }\n *\n *     function name() external view returns (string memory) {\n *         return _name.toStringWithFallback(_nameFallback);\n *     }\n * }\n * ```\n */\nlibrary ShortStrings {\n    // Used as an identifier for strings longer than 31 bytes.\n    bytes32 private constant _FALLBACK_SENTINEL = 0x00000000000000000000000000000000000000000000000000000000000000FF;\n\n    error StringTooLong(string str);\n    error InvalidShortString();\n\n    /**\n     * @dev Encode a string of at most 31 chars into a `ShortString`.\n     *\n     * This will trigger a `StringTooLong` error is the input string is too long.\n     */\n    function toShortString(string memory str) internal pure returns (ShortString) {\n        bytes memory bstr = bytes(str);\n        if (bstr.length > 31) {\n            revert StringTooLong(str);\n        }\n        return ShortString.wrap(bytes32(uint256(bytes32(bstr)) | bstr.length));\n    }\n\n    /**\n     * @dev Decode a `ShortString` back to a \"normal\" string.\n     */\n    function toString(ShortString sstr) internal pure returns (string memory) {\n        uint256 len = byteLength(sstr);\n        // using `new string(len)` would work locally but is not memory safe.\n        string memory str = new string(32);\n        /// @solidity memory-safe-assembly\n        assembly {\n            mstore(str, len)\n            mstore(add(str, 0x20), sstr)\n        }\n        return str;\n    }\n\n    /**\n     * @dev Return the length of a `ShortString`.\n     */\n    function byteLength(ShortString sstr) internal pure returns (uint256) {\n        uint256 result = uint256(ShortString.unwrap(sstr)) & 0xFF;\n        if (result > 31) {\n            revert InvalidShortString();\n        }\n        return result;\n    }\n\n    /**\n     * @dev Encode a string into a `ShortString`, or write it to storage if it is too long.\n     */\n    function toShortStringWithFallback(string memory value, string storage store) internal returns (ShortString) {\n        if (bytes(value).length < 32) {\n            return toShortString(value);\n        } else {\n            StorageSlot.getStringSlot(store).value = value;\n            return ShortString.wrap(_FALLBACK_SENTINEL);\n        }\n    }\n\n    /**\n     * @dev Decode a string that was encoded to `ShortString` or written to storage using {setWithFallback}.\n     */\n    function toStringWithFallback(ShortString value, string storage store) internal pure returns (string memory) {\n        if (ShortString.unwrap(value) != _FALLBACK_SENTINEL) {\n            return toString(value);\n        } else {\n            return store;\n        }\n    }\n\n    /**\n     * @dev Return the length of a string that was encoded to `ShortString` or written to storage using {setWithFallback}.\n     *\n     * WARNING: This will return the \"byte length\" of the string. This may not reflect the actual length in terms of\n     * actual characters as the UTF-8 encoding of a single character can span over multiple bytes.\n     */\n    function byteLengthWithFallback(ShortString value, string storage store) internal view returns (uint256) {\n        if (ShortString.unwrap(value) != _FALLBACK_SENTINEL) {\n            return byteLength(value);\n        } else {\n            return bytes(store).length;\n        }\n    }\n}\n"},"@openzeppelin/contracts/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\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 * ```solidity\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`, `uint256`._\n * _Available since v4.9 for `string`, `bytes`._\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    struct StringSlot {\n        string value;\n    }\n\n    struct BytesSlot {\n        bytes 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    /**\n     * @dev Returns an `StringSlot` with member `value` located at `slot`.\n     */\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\n     */\n    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := store.slot\n        }\n    }\n\n    /**\n     * @dev Returns an `BytesSlot` with member `value` located at `slot`.\n     */\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\n     */\n    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            r.slot := store.slot\n        }\n    }\n}\n"},"@openzeppelin/contracts/utils/Strings.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./math/Math.sol\";\nimport \"./math/SignedMath.sol\";\n\n/**\n * @dev String operations.\n */\nlibrary Strings {\n    bytes16 private constant _SYMBOLS = \"0123456789abcdef\";\n    uint8 private constant _ADDRESS_LENGTH = 20;\n\n    /**\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\n     */\n    function toString(uint256 value) internal pure returns (string memory) {\n        unchecked {\n            uint256 length = Math.log10(value) + 1;\n            string memory buffer = new string(length);\n            uint256 ptr;\n            /// @solidity memory-safe-assembly\n            assembly {\n                ptr := add(buffer, add(32, length))\n            }\n            while (true) {\n                ptr--;\n                /// @solidity memory-safe-assembly\n                assembly {\n                    mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\n                }\n                value /= 10;\n                if (value == 0) break;\n            }\n            return buffer;\n        }\n    }\n\n    /**\n     * @dev Converts a `int256` to its ASCII `string` decimal representation.\n     */\n    function toString(int256 value) internal pure returns (string memory) {\n        return string(abi.encodePacked(value < 0 ? \"-\" : \"\", toString(SignedMath.abs(value))));\n    }\n\n    /**\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\n     */\n    function toHexString(uint256 value) internal pure returns (string memory) {\n        unchecked {\n            return toHexString(value, Math.log256(value) + 1);\n        }\n    }\n\n    /**\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n     */\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\n        bytes memory buffer = new bytes(2 * length + 2);\n        buffer[0] = \"0\";\n        buffer[1] = \"x\";\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\n            buffer[i] = _SYMBOLS[value & 0xf];\n            value >>= 4;\n        }\n        require(value == 0, \"Strings: hex length insufficient\");\n        return string(buffer);\n    }\n\n    /**\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\n     */\n    function toHexString(address addr) internal pure returns (string memory) {\n        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\n    }\n\n    /**\n     * @dev Returns true if the two strings are equal.\n     */\n    function equal(string memory a, string memory b) internal pure returns (bool) {\n        return keccak256(bytes(a)) == keccak256(bytes(b));\n    }\n}\n"},"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\nimport \"@openzeppelin/contracts/access/IAccessControl.sol\";\n\n/**\n * @title IAccessControlManagerV8\n * @author Venus\n * @notice Interface implemented by the `AccessControlManagerV8` contract.\n */\ninterface IAccessControlManagerV8 is IAccessControl {\n    function giveCallPermission(address contractAddress, string calldata functionSig, address accountToPermit) external;\n\n    function revokeCallPermission(\n        address contractAddress,\n        string calldata functionSig,\n        address accountToRevoke\n    ) external;\n\n    function isAllowedToCall(address account, string calldata functionSig) external view returns (bool);\n\n    function hasPermission(\n        address account,\n        address contractAddress,\n        string calldata functionSig\n    ) external view returns (bool);\n}\n"},"@venusprotocol/oracle/contracts/interfaces/FeedRegistryInterface.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\ninterface FeedRegistryInterface {\n    function latestRoundDataByName(\n        string memory base,\n        string memory quote\n    )\n        external\n        view\n        returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound);\n\n    function decimalsByName(string memory base, string memory quote) external view returns (uint8);\n}\n"},"@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\ninterface OracleInterface {\n    function getPrice(address asset) external view returns (uint256);\n}\n\ninterface ResilientOracleInterface is OracleInterface {\n    function updatePrice(address vToken) external;\n\n    function updateAssetPrice(address asset) external;\n\n    function getUnderlyingPrice(address vToken) external view returns (uint256);\n}\n\ninterface BoundValidatorInterface {\n    function validatePriceWithAnchorPrice(\n        address asset,\n        uint256 reporterPrice,\n        uint256 anchorPrice\n    ) external view returns (bool);\n}\n"},"@venusprotocol/oracle/contracts/interfaces/PublicResolverInterface.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\n// SPDX-FileCopyrightText: 2022 Venus\npragma solidity ^0.8.25;\n\ninterface PublicResolverInterface {\n    function addr(bytes32 node) external view returns (address payable);\n}\n"},"@venusprotocol/oracle/contracts/interfaces/SIDRegistryInterface.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\n// SPDX-FileCopyrightText: 2022 Venus\npragma solidity ^0.8.25;\n\ninterface SIDRegistryInterface {\n    function resolver(bytes32 node) external view returns (address);\n}\n"},"@venusprotocol/oracle/contracts/interfaces/VBep20Interface.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\nimport \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\n\ninterface VBep20Interface is IERC20Metadata {\n    /**\n     * @notice Underlying asset for this VToken\n     */\n    function underlying() external view returns (address);\n}\n"},"@venusprotocol/solidity-utilities/contracts/constants.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\n/// @dev Base unit for computations, usually used in scaling (multiplications, divisions)\nuint256 constant EXP_SCALE = 1e18;\n\n/// @dev A unit (literal one) in EXP_SCALE, usually used in additions/subtractions\nuint256 constant MANTISSA_ONE = EXP_SCALE;\n\n/// @dev The approximate number of seconds per year\nuint256 constant SECONDS_PER_YEAR = 31_536_000;\n"},"@venusprotocol/venus-protocol/contracts/Utils/ReentrancyGuardTransient.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/ReentrancyGuardTransient.sol)\n// https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuardTransient.sol\npragma solidity ^0.8.25;\n\nimport { TransientSlot } from \"./TransientSlot.sol\";\n\n/**\n * @dev Variant of {ReentrancyGuard} that uses transient storage.\n *\n * NOTE: This variant only works on networks where EIP-1153 is available.\n *\n * _Available since v5.1._\n */\nabstract contract ReentrancyGuardTransient {\n    using TransientSlot for *;\n\n    // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.ReentrancyGuard\")) - 1)) & ~bytes32(uint256(0xff))\n    bytes32 private constant REENTRANCY_GUARD_STORAGE =\n        0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00;\n\n    /**\n     * @dev Unauthorized reentrant call.\n     */\n    error ReentrancyGuardReentrantCall();\n\n    /**\n     * @dev Prevents a contract from calling itself, directly or indirectly.\n     * Calling a `nonReentrant` function from another `nonReentrant`\n     * function is not supported. It is possible to prevent this from happening\n     * by making the `nonReentrant` function external, and making it call a\n     * `private` function that does the actual work.\n     */\n    modifier nonReentrant() {\n        _nonReentrantBefore();\n        _;\n        _nonReentrantAfter();\n    }\n\n    /**\n     * @dev Returns true if the reentrancy guard is currently set to \"entered\", which indicates there is a\n     * `nonReentrant` function in the call stack.\n     */\n    function _reentrancyGuardEntered() internal view returns (bool) {\n        return REENTRANCY_GUARD_STORAGE.asBoolean().tload();\n    }\n\n    function _nonReentrantBefore() private {\n        // On the first call to nonReentrant, _status will be NOT_ENTERED\n        if (_reentrancyGuardEntered()) {\n            revert ReentrancyGuardReentrantCall();\n        }\n\n        // Any calls to nonReentrant after this point will fail\n        REENTRANCY_GUARD_STORAGE.asBoolean().tstore(true);\n    }\n\n    function _nonReentrantAfter() private {\n        REENTRANCY_GUARD_STORAGE.asBoolean().tstore(false);\n    }\n}\n"},"@venusprotocol/venus-protocol/contracts/Utils/TransientSlot.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/TransientSlot.sol)\n// This file was procedurally generated from scripts/generate/templates/TransientSlot.js.\n// https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/TransientSlot.sol\npragma solidity ^0.8.25;\n\n/**\n * @dev Library for reading and writing value-types to specific transient storage slots.\n *\n * Transient slots are often used to store temporary values that are removed after the current transaction.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n *  * Example reading and writing values using transient storage:\n * ```solidity\n * contract Lock {\n *     using TransientSlot for *;\n *\n *     // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\n *     bytes32 internal constant _LOCK_SLOT = 0xf4678858b2b588224636b8522b729e7722d32fc491da849ed75b3fdf3c84f542;\n *\n *     modifier locked() {\n *         require(!_LOCK_SLOT.asBoolean().tload());\n *\n *         _LOCK_SLOT.asBoolean().tstore(true);\n *         _;\n *         _LOCK_SLOT.asBoolean().tstore(false);\n *     }\n * }\n * ```\n *\n * TIP: Consider using this library along with {SlotDerivation}.\n */\nlibrary TransientSlot {\n    /**\n     * @dev UDVT that represent a slot holding a address.\n     */\n    type AddressSlot is bytes32;\n\n    /**\n     * @dev Cast an arbitrary slot to a AddressSlot.\n     */\n    function asAddress(bytes32 slot) internal pure returns (AddressSlot) {\n        return AddressSlot.wrap(slot);\n    }\n\n    /**\n     * @dev UDVT that represent a slot holding a bool.\n     */\n    type BooleanSlot is bytes32;\n\n    /**\n     * @dev Cast an arbitrary slot to a BooleanSlot.\n     */\n    function asBoolean(bytes32 slot) internal pure returns (BooleanSlot) {\n        return BooleanSlot.wrap(slot);\n    }\n\n    /**\n     * @dev UDVT that represent a slot holding a bytes32.\n     */\n    type Bytes32Slot is bytes32;\n\n    /**\n     * @dev Cast an arbitrary slot to a Bytes32Slot.\n     */\n    function asBytes32(bytes32 slot) internal pure returns (Bytes32Slot) {\n        return Bytes32Slot.wrap(slot);\n    }\n\n    /**\n     * @dev UDVT that represent a slot holding a uint256.\n     */\n    type Uint256Slot is bytes32;\n\n    /**\n     * @dev Cast an arbitrary slot to a Uint256Slot.\n     */\n    function asUint256(bytes32 slot) internal pure returns (Uint256Slot) {\n        return Uint256Slot.wrap(slot);\n    }\n\n    /**\n     * @dev UDVT that represent a slot holding a int256.\n     */\n    type Int256Slot is bytes32;\n\n    /**\n     * @dev Cast an arbitrary slot to a Int256Slot.\n     */\n    function asInt256(bytes32 slot) internal pure returns (Int256Slot) {\n        return Int256Slot.wrap(slot);\n    }\n\n    /**\n     * @dev Load the value held at location `slot` in transient storage.\n     */\n    function tload(AddressSlot slot) internal view returns (address value) {\n        assembly (\"memory-safe\") {\n            value := tload(slot)\n        }\n    }\n\n    /**\n     * @dev Store `value` at location `slot` in transient storage.\n     */\n    function tstore(AddressSlot slot, address value) internal {\n        assembly (\"memory-safe\") {\n            tstore(slot, value)\n        }\n    }\n\n    /**\n     * @dev Load the value held at location `slot` in transient storage.\n     */\n    function tload(BooleanSlot slot) internal view returns (bool value) {\n        assembly (\"memory-safe\") {\n            value := tload(slot)\n        }\n    }\n\n    /**\n     * @dev Store `value` at location `slot` in transient storage.\n     */\n    function tstore(BooleanSlot slot, bool value) internal {\n        assembly (\"memory-safe\") {\n            tstore(slot, value)\n        }\n    }\n\n    /**\n     * @dev Load the value held at location `slot` in transient storage.\n     */\n    function tload(Bytes32Slot slot) internal view returns (bytes32 value) {\n        assembly (\"memory-safe\") {\n            value := tload(slot)\n        }\n    }\n\n    /**\n     * @dev Store `value` at location `slot` in transient storage.\n     */\n    function tstore(Bytes32Slot slot, bytes32 value) internal {\n        assembly (\"memory-safe\") {\n            tstore(slot, value)\n        }\n    }\n\n    /**\n     * @dev Load the value held at location `slot` in transient storage.\n     */\n    function tload(Uint256Slot slot) internal view returns (uint256 value) {\n        assembly (\"memory-safe\") {\n            value := tload(slot)\n        }\n    }\n\n    /**\n     * @dev Store `value` at location `slot` in transient storage.\n     */\n    function tstore(Uint256Slot slot, uint256 value) internal {\n        assembly (\"memory-safe\") {\n            tstore(slot, value)\n        }\n    }\n\n    /**\n     * @dev Load the value held at location `slot` in transient storage.\n     */\n    function tload(Int256Slot slot) internal view returns (int256 value) {\n        assembly (\"memory-safe\") {\n            value := tload(slot)\n        }\n    }\n\n    /**\n     * @dev Store `value` at location `slot` in transient storage.\n     */\n    function tstore(Int256Slot slot, int256 value) internal {\n        assembly (\"memory-safe\") {\n            tstore(slot, value)\n        }\n    }\n}\n"},"contracts/hardhat-dependency-compiler/hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/ProxyAdmin.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity >0.0.0;\nimport 'hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/ProxyAdmin.sol';\n"},"contracts/hardhat-dependency-compiler/hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity >0.0.0;\nimport 'hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol';\n"},"contracts/Interfaces.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity ^0.8.25;\n\nimport { IERC20Upgradeable } from \"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\";\nimport { ResilientOracleInterface } from \"@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol\";\n\ninterface IVToken is IERC20Upgradeable {\n    function accrueInterest() external returns (uint256);\n\n    function redeem(uint256 redeemTokens) external returns (uint256);\n\n    function redeemUnderlying(uint256 redeemAmount) external returns (uint256);\n\n    function borrowBalanceCurrent(address borrower) external returns (uint256);\n\n    function balanceOfUnderlying(address owner) external returns (uint256);\n\n    function seize(address liquidator, address borrower, uint seizeTokens) external returns (uint);\n\n    function mintBehalf(address receiver, uint mintAmount) external returns (uint);\n\n    function borrowBehalf(address borrower, uint borrowAmount) external returns (uint256);\n\n    function repayBorrowBehalf(address borrower, uint repayAmount) external returns (uint256);\n\n    function redeemUnderlyingBehalf(address redeemer, uint redeemAmount) external returns (uint);\n\n    function comptroller() external view returns (IComptroller);\n\n    function borrowBalanceStored(address account) external view returns (uint256);\n\n    function underlying() external view returns (address);\n}\n\ninterface IVBNB is IVToken {\n    function repayBorrowBehalf(address borrower) external payable;\n\n    function liquidateBorrow(address borrower, IVToken vTokenCollateral) external payable;\n}\n\ninterface IComptroller {\n    enum Action {\n        MINT,\n        REDEEM,\n        BORROW,\n        REPAY,\n        SEIZE,\n        LIQUIDATE,\n        TRANSFER,\n        ENTER_MARKET,\n        EXIT_MARKET\n    }\n\n    function _setActionsPaused(address[] calldata markets_, Action[] calldata actions_, bool paused_) external;\n\n    function enterMarkets(address[] calldata vTokens) external returns (uint256[] memory);\n\n    function enterMarketBehalf(address onBehalf, address vToken) external returns (uint256);\n\n    function enterMarket(address user, address vToken) external returns (uint256);\n\n    function liquidationIncentiveMantissa() external view returns (uint256);\n\n    function vaiController() external view returns (address);\n\n    function liquidatorContract() external view returns (address);\n\n    function oracle() external view returns (ResilientOracleInterface);\n\n    function actionPaused(address market, Action action) external view returns (bool);\n\n    function markets(address) external view returns (bool, uint256, bool);\n\n    function isForcedLiquidationEnabled(address) external view returns (bool);\n\n    function approvedDelegates(address borrower, address delegate) external view returns (bool);\n\n    function getAccountLiquidity(address account) external view returns (uint256, uint256, uint256);\n\n    function checkMembership(address account, IVToken vToken) external view returns (bool);\n\n    function getBorrowingPower(\n        address account\n    ) external view returns (uint256 error, uint256 liquidity, uint256 shortfall);\n\n    function treasuryPercent() external view returns (uint256);\n\n    function executeFlashLoan(\n        address payable onBehalf,\n        address payable receiver,\n        IVToken[] memory vTokens,\n        uint256[] memory underlyingAmounts,\n        bytes memory param\n    ) external;\n}\n\ninterface IFlashLoanReceiver {\n    /**\n     * @notice Executes an operation after receiving the flash-borrowed assets.\n     * @dev Implementation of this function must ensure at least the premium (fee) is repaid within the same transaction.\n     *      Any unpaid balance (principal + premium - repaid amount) will be added to the onBehalf address's borrow balance.\n     * @param vTokens The vToken contracts corresponding to the flash-borrowed underlying assets.\n     * @param amounts The amounts of each underlying asset that were flash-borrowed.\n     * @param premiums The premiums (fees) associated with each flash-borrowed asset.\n     * @param initiator The address that initiated the flash loan.\n     * @param onBehalf The address of the user whose debt position will be used for any unpaid flash loan balance.\n     * @param param Additional parameters encoded as bytes. These can be used to pass custom data to the receiver contract.\n     * @return success True if the operation succeeds (regardless of repayment amount), false if the operation fails.\n     * @return repayAmounts Array of uint256 representing the amounts to be repaid for each asset. The receiver contract\n     *         must approve these amounts to the respective vToken contracts before this function returns.\n     */\n    function executeOperation(\n        IVToken[] calldata vTokens,\n        uint256[] calldata amounts,\n        uint256[] calldata premiums,\n        address initiator,\n        address onBehalf,\n        bytes calldata param\n    ) external returns (bool success, uint256[] memory repayAmounts);\n}\n\ninterface IWBNB is IERC20Upgradeable {\n    function deposit() external payable;\n\n    function withdraw(uint256 amount) external;\n}\n\ninterface IProtocolShareReserve {\n    enum IncomeType {\n        SPREAD,\n        LIQUIDATION,\n        ERC4626_WRAPPER_REWARDS,\n        FLASHLOAN\n    }\n\n    function updateAssetsState(address comptroller, address asset, IncomeType incomeType) external;\n}\n"},"contracts/LeverageManager/ILeverageStrategiesManager.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.28;\n\nimport { IVToken } from \"../Interfaces.sol\";\n\n/**\n * @title ILeverageStrategiesManager\n * @author Venus Protocol\n * @notice Interface for the Leverage Strategies Manager contract\n * @dev This interface defines the functionality for entering and exiting leveraged positions\n *      using flash loans and token swaps. The contract allows users to amplify their exposure\n *      to specific assets by borrowing against their collateral and reinvesting the borrowed funds.\n */\ninterface ILeverageStrategiesManager {\n    /// @custom:error MintBehalfFailed mintBehalf on a vToken market returned a non-zero error code\n    error MintBehalfFailed(uint256 errorCode);\n\n    /// @custom:error BorrowBehalfFailed borrowBehalf on a vToken market returned a non-zero error code\n    error BorrowBehalfFailed(uint256 errorCode);\n\n    /// @custom:error RepayBehalfFailed repayBehalf on a vToken market returned a non-zero error code\n    error RepayBehalfFailed(uint256 errorCode);\n\n    /// @custom:error RedeemBehalfFailed redeemBehalf on a vToken market returned a non-zero error code\n    error RedeemBehalfFailed(uint256 errorCode);\n\n    /// @custom:error OperationCausesLiquidation Operation would put the account at risk (undercollateralized) returns a non-zero error code from getBorrowingPower\n    error OperationCausesLiquidation(uint256 errorCode);\n\n    /// @custom:error TokenSwapCallFailed Swap helper call reverted or returned false\n    error TokenSwapCallFailed();\n\n    /// @custom:error FlashLoanAssetOrAmountMismatch Invalid flash loan arrays length or >1 elements\n    error FlashLoanAssetOrAmountMismatch();\n\n    /// @custom:error UnauthorizedExecutor Caller is not the expected Comptroller\n    error UnauthorizedExecutor();\n\n    /// @custom:error InvalidExecuteOperation Unknown operation type in flash loan callback\n    error InvalidExecuteOperation();\n\n    /// @custom:error SlippageExceeded Swap output lower than required minimum\n    error SlippageExceeded();\n\n    /// @custom:error InsufficientFundsToRepayFlashloan Not enough proceeds to repay flash loan plus fees\n    error InsufficientFundsToRepayFlashloan();\n\n    /// @custom:error InitiatorMismatch Invalid initiator address in flash loan callback\n    error InitiatorMismatch();\n\n    /// @custom:error OnBehalfMismatch Invalid onBehalf address in flash loan callback\n    error OnBehalfMismatch();\n\n    /// @custom:error EnterMarketFailed Comptroller.enterMarketBehalf returned a non-zero error code\n    error EnterMarketFailed(uint256 err);\n\n    /// @custom:error MarketNotListed Provided vToken market is not listed in Comptroller\n    error MarketNotListed(address market);\n\n    /// @custom:error VBNBNotSupported vBNB market is not supported for leverage operations\n    error VBNBNotSupported();\n\n    /// @custom:error ZeroAddress One of the required addresses is zero\n    error ZeroAddress();\n\n    /// @custom:error NotAnApprovedDelegate User has not approved this contract as a delegate\n    error NotAnApprovedDelegate();\n\n    /// @custom:error ZeroFlashLoanAmount Flash loan amount cannot be zero\n    error ZeroFlashLoanAmount();\n\n    /// @custom:error AccrueInterestFailed accrueInterest on a vToken market returned a non-zero error code\n    error AccrueInterestFailed(uint256 errorCode);\n\n    /// @custom:error IdenticalMarkets Collateral and borrow markets cannot be the same\n    error IdenticalMarkets();\n\n    /// @notice Emitted when dust amounts are transferred after a leverage operation\n    /// @param recipient The address receiving the dust (user or protocol share reserve)\n    /// @param token The underlying token address\n    /// @param amount The amount of dust transferred\n    event DustTransferred(address indexed recipient, address indexed token, uint256 amount);\n\n    /// @notice Emitted when a user enters a leveraged position with single collateral asset\n    /// @param user The address of the user entering the position\n    /// @param collateralMarket The vToken market used as collateral\n    /// @param collateralAmountSeed The initial collateral amount provided by the user\n    /// @param collateralAmountToFlashLoan The amount being flash loaned\n    event SingleAssetLeverageEntered(\n        address indexed user,\n        IVToken indexed collateralMarket,\n        uint256 collateralAmountSeed,\n        uint256 collateralAmountToFlashLoan\n    );\n\n    /// @notice Emitted when a user enters a leveraged position with collateral seed\n    /// @param user The address of the user entering the position\n    /// @param collateralMarket The vToken market used as collateral\n    /// @param collateralAmountSeed The initial collateral amount provided by the user\n    /// @param borrowedMarket The vToken market being borrowed from\n    /// @param borrowedAmountToFlashLoan The amount being flash loaned\n    event LeverageEntered(\n        address indexed user,\n        IVToken indexed collateralMarket,\n        uint256 collateralAmountSeed,\n        IVToken indexed borrowedMarket,\n        uint256 borrowedAmountToFlashLoan\n    );\n\n    /// @notice Emitted when a user enters a leveraged position with borrowed asset seed\n    /// @param user The address of the user entering the position\n    /// @param collateralMarket The vToken market used as collateral\n    /// @param borrowedMarket The vToken market being borrowed from\n    /// @param borrowedAmountSeed The initial borrowed asset amount provided by the user\n    /// @param borrowedAmountToFlashLoan The amount being flash loaned\n    event LeverageEnteredFromBorrow(\n        address indexed user,\n        IVToken indexed collateralMarket,\n        IVToken indexed borrowedMarket,\n        uint256 borrowedAmountSeed,\n        uint256 borrowedAmountToFlashLoan\n    );\n\n    /// @notice Emitted when a user exits a leveraged position\n    /// @param user The address of the user exiting the position\n    /// @param collateralMarket The vToken market being redeemed\n    /// @param collateralAmountToRedeemForSwap The amount of collateral being redeemed for swap\n    /// @param borrowedMarket The vToken market being repaid\n    /// @param borrowedAmountToFlashLoan The amount being flash loaned\n    event LeverageExited(\n        address indexed user,\n        IVToken indexed collateralMarket,\n        uint256 collateralAmountToRedeemForSwap,\n        IVToken indexed borrowedMarket,\n        uint256 borrowedAmountToFlashLoan\n    );\n\n    /// @notice Emitted when a user exits a leveraged position with single collateral asset\n    /// @param user The address of the user exiting the position\n    /// @param collateralMarket The vToken market used for both collateral and borrowed asset\n    /// @param collateralAmountToFlashLoan The amount being flash loaned\n    event SingleAssetLeverageExited(\n        address indexed user,\n        IVToken indexed collateralMarket,\n        uint256 collateralAmountToFlashLoan\n    );\n\n    /**\n     * @notice Enumeration of operation types for flash loan callbacks\n     * @param NONE Default value indicating no operation set\n     * @param ENTER_SINGLE_ASSET Operation for entering a leveraged position using single asset (no swap)\n     * @param ENTER_COLLATERAL Operation for entering a leveraged position with collateral seed\n     * @param ENTER_BORROW Operation for entering a leveraged position with borrowed asset seed\n     * @param EXIT_COLLATERAL Operation for exiting a leveraged position with swap\n     * @param EXIT_SINGLE_ASSET Operation for exiting a leveraged position using single asset (no swap)\n     */\n    enum OperationType {\n        NONE,\n        ENTER_SINGLE_ASSET,\n        ENTER_COLLATERAL,\n        ENTER_BORROW,\n        EXIT_COLLATERAL,\n        EXIT_SINGLE_ASSET\n    }\n\n    /**\n     * @notice Enters a leveraged position using only collateral provided by the user\n     * @dev This function flash loans additional collateral assets, amplifying the user's supplied collateral\n     *      in the Venus protocol. The user must have delegated permission to this contract via the comptroller.\n     *      Any remaining collateral dust after the operation is returned to the user.\n     * @param collateralMarket The vToken market where collateral will be supplied (must not be vBNB)\n     * @param collateralAmountSeed The initial amount of collateral the user provides (can be 0)\n     * @param collateralAmountToFlashLoan The amount to borrow via flash loan for leverage\n     * @custom:emits SingleAssetLeverageEntered\n     * @custom:error NotAnApprovedDelegate if caller has not delegated to this contract\n     * @custom:error AccrueInterestFailed if interest accrual fails on the collateral market\n     * @custom:error MarketNotListed if the market is not listed in Comptroller\n     * @custom:error VBNBNotSupported if the market is vBNB\n     * @custom:error OperationCausesLiquidation if the operation would make the account unsafe\n     * @custom:error TransferFromUserFailed if seed amount transfer from user fails\n     * @custom:error MintBehalfFailed if mint behalf operation fails\n     * @custom:error BorrowBehalfFailed if borrow behalf operation fails\n     */\n    function enterSingleAssetLeverage(\n        IVToken collateralMarket,\n        uint256 collateralAmountSeed,\n        uint256 collateralAmountToFlashLoan\n    ) external;\n\n    /**\n     * @notice Enters a leveraged position by borrowing assets and converting them to collateral\n     * @dev This function uses flash loans to borrow assets, swaps them for collateral tokens,\n     *      and supplies the collateral to the Venus protocol to amplify the user's position.\n     *      The user must have delegated permission to this contract via the comptroller.\n     *      Any remaining dust (both collateral and borrowed assets) after the operation is returned to the user.\n     * @param collateralMarket The vToken market where collateral will be supplied (must not be vBNB)\n     * @param collateralAmountSeed The initial amount of collateral the user provides (can be 0)\n     * @param borrowedMarket The vToken market from which assets will be borrowed via flash loan (must not be vBNB)\n     * @param borrowedAmountToFlashLoan The amount to borrow via flash loan for leverage\n     * @param minAmountOutAfterSwap The minimum amount of collateral expected after swap (for slippage protection)\n     * @param swapData Bytes containing swap instructions for converting borrowed assets to collateral\n     * @custom:emits LeverageEntered\n     * @custom:error IdenticalMarkets if collateral and borrow markets are the same\n     * @custom:error NotAnApprovedDelegate if caller has not delegated to this contract\n     * @custom:error AccrueInterestFailed if interest accrual fails on any market\n     * @custom:error MarketNotListed if any market is not listed in Comptroller\n     * @custom:error VBNBNotSupported if collateral or borrow market is vBNB\n     * @custom:error OperationCausesLiquidation if the operation would make the account unsafe\n     * @custom:error TransferFromUserFailed if seed amount transfer from user fails\n     * @custom:error MintBehalfFailed if mint behalf operation fails\n     * @custom:error BorrowBehalfFailed if borrow behalf operation fails\n     * @custom:error TokenSwapCallFailed if token swap execution fails\n     * @custom:error SlippageExceeded if collateral balance after swap is below minimum\n     */\n    function enterLeverage(\n        IVToken collateralMarket,\n        uint256 collateralAmountSeed,\n        IVToken borrowedMarket,\n        uint256 borrowedAmountToFlashLoan,\n        uint256 minAmountOutAfterSwap,\n        bytes calldata swapData\n    ) external;\n\n    /**\n     * @notice Enters a leveraged position by using existing borrowed assets and converting them to collateral\n     * @dev This function uses flash loans to borrow additional assets, swaps the total borrowed amount\n     *      for collateral tokens, and supplies the collateral to the Venus protocol to amplify the user's position.\n     *      The user must have delegated permission to this contract via the comptroller.\n     *      Any remaining dust (both collateral and borrowed assets) after the operation is returned to the user.\n     * @param collateralMarket The vToken market where collateral will be supplied (must not be vBNB)\n     * @param borrowedMarket The vToken market from which assets will be borrowed via flash loan (must not be vBNB)\n     * @param borrowedAmountSeed The initial amount of borrowed assets the user provides (can be 0)\n     * @param borrowedAmountToFlashLoan The additional amount to borrow via flash loan for leverage\n     * @param minAmountOutAfterSwap The minimum amount of collateral expected after swap (for slippage protection)\n     * @param swapData Bytes containing swap instructions for converting borrowed assets to collateral\n     * @custom:emits LeverageEnteredFromBorrow\n     * @custom:error IdenticalMarkets if collateral and borrow markets are the same\n     * @custom:error NotAnApprovedDelegate if caller has not delegated to this contract\n     * @custom:error AccrueInterestFailed if interest accrual fails on any market\n     * @custom:error MarketNotListed if any market is not listed in Comptroller\n     * @custom:error VBNBNotSupported if collateral or borrow market is vBNB\n     * @custom:error OperationCausesLiquidation if the operation would make the account unsafe\n     * @custom:error TransferFromUserFailed if seed amount transfer from user fails\n     * @custom:error MintBehalfFailed if mint behalf operation fails\n     * @custom:error BorrowBehalfFailed if borrow behalf operation fails\n     * @custom:error TokenSwapCallFailed if token swap execution fails\n     * @custom:error SlippageExceeded if collateral balance after swap is below minimum\n     */\n    function enterLeverageFromBorrow(\n        IVToken collateralMarket,\n        IVToken borrowedMarket,\n        uint256 borrowedAmountSeed,\n        uint256 borrowedAmountToFlashLoan,\n        uint256 minAmountOutAfterSwap,\n        bytes calldata swapData\n    ) external;\n\n    /**\n     * @notice Exits a leveraged position by redeeming collateral and repaying borrowed assets\n     * @dev This function uses flash loans to temporarily repay debt, redeems collateral,\n     *      swaps collateral for borrowed assets, and repays the flash loan. Any remaining\n     *      dust (both collateral and borrowed assets) is returned to the user. This ensures\n     *      users who swap more than required as protection against price volatility receive\n     *      their excess tokens back.\n     *\n     *      The flash loan amount can exceed actual debt to account for interest accrual\n     *      between transaction creation and mining. The contract caps repayment to actual\n     *      debt and uses leftover funds toward flash loan repayment.\n     *\n     *      NOTE: No pre-operation safety check is performed because exiting leverage reduces\n     *      debt exposure, which can only improve account health. Post-operation safety is\n     *      still validated to ensure the final position is healthy.\n     *\n     *      IMPORTANT: If treasuryPercent() is nonzero, the user must provide a\n     *      collateralAmountToRedeemForSwap that accounts for the treasury fee. Only\n     *      (1 - treasuryPercent/1e18) of the redeemed amount is transferred to this contract.\n     *      Required gross amount = netAmountNeeded * 1e18 / (1e18 - treasuryPercent)\n     * @param collateralMarket The vToken market from which collateral will be redeemed (must not be vBNB)\n     * @param collateralAmountToRedeemForSwap The gross amount of collateral to redeem (must account for treasury fee if nonzero)\n     * @param borrowedMarket The vToken market where debt will be repaid via flash loan (must not be vBNB)\n     * @param borrowedAmountToFlashLoan The amount to borrow via flash loan for debt repayment (can exceed actual debt)\n     * @param minAmountOutAfterSwap The minimum amount of borrowed asset expected after swap (for slippage protection)\n     * @param swapData Bytes containing swap instructions for converting collateral to borrowed assets\n     * @custom:emits LeverageExited\n     * @custom:error IdenticalMarkets if collateral and borrow markets are the same\n     * @custom:error NotAnApprovedDelegate if caller has not delegated to this contract\n     * @custom:error MarketNotListed if any market is not listed in Comptroller\n     * @custom:error VBNBNotSupported if collateral or borrow market is vBNB\n     * @custom:error OperationCausesLiquidation if the operation would make the account unsafe\n     * @custom:error RepayBehalfFailed if repay operation fails\n     * @custom:error RedeemBehalfFailed if redeem operation fails\n     * @custom:error TokenSwapCallFailed if token swap execution fails\n     * @custom:error SlippageExceeded if swap output is below minimum required\n     * @custom:error InsufficientFundsToRepayFlashloan if insufficient funds to repay flash loan\n     */\n    function exitLeverage(\n        IVToken collateralMarket,\n        uint256 collateralAmountToRedeemForSwap,\n        IVToken borrowedMarket,\n        uint256 borrowedAmountToFlashLoan,\n        uint256 minAmountOutAfterSwap,\n        bytes calldata swapData\n    ) external;\n\n    /**\n     * @notice Exits a leveraged position when collateral and borrowed assets are the same token\n     * @dev This function uses flash loans to temporarily repay debt, redeems collateral,\n     *      and repays the flash loan without requiring token swaps. This is more gas-efficient\n     *      than exitLeverage when dealing with single-asset positions. Any remaining collateral\n     *      dust after the operation is returned to the user.\n     *\n     *      The flash loan amount can exceed actual debt to account for interest accrual\n     *      between transaction creation and mining. The contract caps repayment to actual\n     *      debt and uses leftover funds toward flash loan repayment.\n     *\n     *      If treasuryPercent() is nonzero, the contract automatically adjusts the redeem\n     *      amount to ensure sufficient funds are received to repay the flash loan after the\n     *      treasury fee deduction.\n     *\n     *      NOTE: No pre-operation safety check is performed because exiting leverage reduces\n     *      debt exposure, which can only improve account health. Post-operation safety is\n     *      still validated to ensure the final position is healthy.\n     * @param collateralMarket The vToken market for both collateral and borrowed asset (must not be vBNB)\n     * @param collateralAmountToFlashLoan The amount to borrow via flash loan for debt repayment (can exceed actual debt)\n     * @custom:emits SingleAssetLeverageExited\n     * @custom:error NotAnApprovedDelegate if caller has not delegated to this contract\n     * @custom:error MarketNotListed if the market is not listed in Comptroller\n     * @custom:error VBNBNotSupported if the market is vBNB\n     * @custom:error OperationCausesLiquidation if the operation would make the account unsafe\n     * @custom:error RepayBehalfFailed if repay operation fails\n     * @custom:error RedeemBehalfFailed if redeem operation fails\n     * @custom:error InsufficientFundsToRepayFlashloan if insufficient funds to repay flash loan\n     */\n    function exitSingleAssetLeverage(IVToken collateralMarket, uint256 collateralAmountToFlashLoan) external;\n}\n"},"contracts/LeverageManager/LeverageStrategiesManager.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.28;\n\nimport { Ownable2StepUpgradeable } from \"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol\";\nimport { ReentrancyGuardUpgradeable } from \"@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol\";\nimport {\n    SafeERC20Upgradeable,\n    IERC20Upgradeable\n} from \"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\";\n\nimport { IVToken, IComptroller, IFlashLoanReceiver } from \"../Interfaces.sol\";\nimport { SwapHelper } from \"../SwapHelper/SwapHelper.sol\";\n\nimport { ILeverageStrategiesManager } from \"./ILeverageStrategiesManager.sol\";\n\n/**\n * @title LeverageStrategiesManager\n * @author Venus Protocol\n * @notice Contract for managing leveraged positions using flash loans and token swaps\n */\ncontract LeverageStrategiesManager is\n    Ownable2StepUpgradeable,\n    ReentrancyGuardUpgradeable,\n    IFlashLoanReceiver,\n    ILeverageStrategiesManager\n{\n    using SafeERC20Upgradeable for IERC20Upgradeable;\n\n    /// @dev Success return value for VToken operations (mint, borrow, repay, redeem)\n    uint256 private constant SUCCESS = 0;\n\n    /// @dev Mantissa for fixed-point arithmetic (1e18 = 100%)\n    uint256 private constant MANTISSA_ONE = 1e18;\n\n    /// @notice The Venus comptroller contract for market interactions and flash loans execution\n    IComptroller public immutable COMPTROLLER;\n\n    /// @notice The swap helper contract for executing token swaps during leverage operations\n    SwapHelper public immutable swapHelper;\n\n    /// @notice The vBNB market address (not supported for leverage operations)\n    IVToken public immutable vBNB;\n\n    /// @dev Transient (EIP-1153): Cleared at transaction end. Tracks operation type during flash loan callback.\n    OperationType transient operationType;\n\n    /// @dev Transient (EIP-1153): Cleared at transaction end. Stores msg.sender for flash loan callback context.\n    address transient operationInitiator;\n\n    /// @dev Transient (EIP-1153): Cleared at transaction end. Stores collateral market for flash loan callback.\n    IVToken transient collateralMarket;\n\n    /// @dev Transient (EIP-1153): Cleared at transaction end. Stores collateral seed (enter) or redeem amount (exit).\n    uint256 transient collateralAmount;\n\n    /// @dev Transient (EIP-1153): Cleared at transaction end. Stores borrowed amount seed for enterLeverageFromBorrow.\n    uint256 transient borrowedAmountSeed;\n\n    /// @dev Transient (EIP-1153): Cleared at transaction end. Stores minimum expected output after swap.\n    uint256 transient minAmountOutAfterSwap;\n\n    /**\n     * @notice Contract constructor\n     * @dev Sets immutable variables and disables initializers for the implementation contract\n     * @param _comptroller The Venus comptroller contract address\n     * @param _swapHelper The swap helper contract address\n     * @param _vBNB The vBNB market address (not supported for leverage operations)\n     * @custom:oz-upgrades-unsafe-allow constructor\n     */\n    constructor(IComptroller _comptroller, SwapHelper _swapHelper, IVToken _vBNB) {\n        if (address(_comptroller) == address(0) || address(_swapHelper) == address(0) || address(_vBNB) == address(0)) {\n            revert ZeroAddress();\n        }\n\n        COMPTROLLER = _comptroller;\n        swapHelper = _swapHelper;\n        vBNB = _vBNB;\n        _disableInitializers();\n    }\n\n    /**\n     * @notice Initializes the contract\n     * @dev Sets up the Ownable2Step functionality. Can only be called once.\n     */\n    function initialize() external initializer {\n        __Ownable2Step_init();\n        __ReentrancyGuard_init();\n    }\n\n    /// @inheritdoc ILeverageStrategiesManager\n    function enterSingleAssetLeverage(\n        IVToken _collateralMarket,\n        uint256 _collateralAmountSeed,\n        uint256 _collateralAmountToFlashLoan\n    ) external {\n        if (_collateralAmountToFlashLoan == 0) revert ZeroFlashLoanAmount();\n        _checkMarketSupported(_collateralMarket);\n\n        _checkUserDelegated();\n\n        _accrueInterest(_collateralMarket);\n\n        _validateAndEnterMarket(msg.sender, _collateralMarket);\n        _checkAccountSafe(msg.sender);\n\n        _transferSeedAmountFromUser(_collateralMarket, msg.sender, _collateralAmountSeed);\n\n        operationInitiator = msg.sender;\n        operationType = OperationType.ENTER_SINGLE_ASSET;\n        collateralAmount = _collateralAmountSeed;\n\n        IVToken[] memory borrowedMarkets = new IVToken[](1);\n        borrowedMarkets[0] = _collateralMarket;\n        uint256[] memory flashLoanAmounts = new uint256[](1);\n        flashLoanAmounts[0] = _collateralAmountToFlashLoan;\n\n        COMPTROLLER.executeFlashLoan(\n            payable(msg.sender),\n            payable(address(this)),\n            borrowedMarkets,\n            flashLoanAmounts,\n            \"\"\n        );\n\n        _checkAccountSafe(msg.sender);\n\n        emit SingleAssetLeverageEntered(\n            msg.sender,\n            _collateralMarket,\n            _collateralAmountSeed,\n            _collateralAmountToFlashLoan\n        );\n\n        _transferDustToInitiator(_collateralMarket);\n    }\n\n    /// @inheritdoc ILeverageStrategiesManager\n    function enterLeverage(\n        IVToken _collateralMarket,\n        uint256 _collateralAmountSeed,\n        IVToken _borrowedMarket,\n        uint256 _borrowedAmountToFlashLoan,\n        uint256 _minAmountOutAfterSwap,\n        bytes calldata _swapData\n    ) external {\n        if (_borrowedAmountToFlashLoan == 0) revert ZeroFlashLoanAmount();\n        if (_collateralMarket == _borrowedMarket) revert IdenticalMarkets();\n        _checkMarketSupported(_collateralMarket);\n        _checkMarketSupported(_borrowedMarket);\n\n        _checkUserDelegated();\n\n        _accrueInterest(_collateralMarket);\n        _accrueInterest(_borrowedMarket);\n\n        _validateAndEnterMarket(msg.sender, _collateralMarket);\n        _checkAccountSafe(msg.sender);\n\n        _transferSeedAmountFromUser(_collateralMarket, msg.sender, _collateralAmountSeed);\n\n        operationInitiator = msg.sender;\n        collateralMarket = _collateralMarket;\n        collateralAmount = _collateralAmountSeed;\n        minAmountOutAfterSwap = _minAmountOutAfterSwap;\n        operationType = OperationType.ENTER_COLLATERAL;\n\n        IVToken[] memory borrowedMarkets = new IVToken[](1);\n        borrowedMarkets[0] = _borrowedMarket;\n        uint256[] memory flashLoanAmounts = new uint256[](1);\n        flashLoanAmounts[0] = _borrowedAmountToFlashLoan;\n\n        COMPTROLLER.executeFlashLoan(\n            payable(msg.sender),\n            payable(address(this)),\n            borrowedMarkets,\n            flashLoanAmounts,\n            _swapData\n        );\n\n        _checkAccountSafe(msg.sender);\n\n        emit LeverageEntered(\n            msg.sender,\n            _collateralMarket,\n            _collateralAmountSeed,\n            _borrowedMarket,\n            _borrowedAmountToFlashLoan\n        );\n\n        _transferDustToInitiator(_collateralMarket);\n        _transferDustToInitiator(_borrowedMarket);\n    }\n\n    /// @inheritdoc ILeverageStrategiesManager\n    function enterLeverageFromBorrow(\n        IVToken _collateralMarket,\n        IVToken _borrowedMarket,\n        uint256 _borrowedAmountSeed,\n        uint256 _borrowedAmountToFlashLoan,\n        uint256 _minAmountOutAfterSwap,\n        bytes calldata _swapData\n    ) external {\n        if (_borrowedAmountToFlashLoan == 0) revert ZeroFlashLoanAmount();\n        if (_collateralMarket == _borrowedMarket) revert IdenticalMarkets();\n        _checkMarketSupported(_collateralMarket);\n        _checkMarketSupported(_borrowedMarket);\n\n        _checkUserDelegated();\n\n        _accrueInterest(_collateralMarket);\n        _accrueInterest(_borrowedMarket);\n\n        _validateAndEnterMarket(msg.sender, _collateralMarket);\n        _checkAccountSafe(msg.sender);\n\n        _transferSeedAmountFromUser(_borrowedMarket, msg.sender, _borrowedAmountSeed);\n\n        operationInitiator = msg.sender;\n        collateralMarket = _collateralMarket;\n        borrowedAmountSeed = _borrowedAmountSeed;\n        minAmountOutAfterSwap = _minAmountOutAfterSwap;\n        operationType = OperationType.ENTER_BORROW;\n\n        IVToken[] memory borrowedMarkets = new IVToken[](1);\n        borrowedMarkets[0] = _borrowedMarket;\n        uint256[] memory flashLoanAmounts = new uint256[](1);\n        flashLoanAmounts[0] = _borrowedAmountToFlashLoan;\n\n        COMPTROLLER.executeFlashLoan(\n            payable(msg.sender),\n            payable(address(this)),\n            borrowedMarkets,\n            flashLoanAmounts,\n            _swapData\n        );\n\n        _checkAccountSafe(msg.sender);\n\n        emit LeverageEnteredFromBorrow(\n            msg.sender,\n            _collateralMarket,\n            _borrowedMarket,\n            _borrowedAmountSeed,\n            _borrowedAmountToFlashLoan\n        );\n\n        _transferDustToInitiator(_collateralMarket);\n        _transferDustToInitiator(_borrowedMarket);\n    }\n\n    /// @inheritdoc ILeverageStrategiesManager\n    function exitLeverage(\n        IVToken _collateralMarket,\n        uint256 _collateralAmountToRedeemForSwap,\n        IVToken _borrowedMarket,\n        uint256 _borrowedAmountToFlashLoan,\n        uint256 _minAmountOutAfterSwap,\n        bytes calldata _swapData\n    ) external {\n        if (_borrowedAmountToFlashLoan == 0) revert ZeroFlashLoanAmount();\n        if (_collateralMarket == _borrowedMarket) revert IdenticalMarkets();\n        _checkMarketSupported(_collateralMarket);\n        _checkMarketSupported(_borrowedMarket);\n\n        _checkUserDelegated();\n\n        operationInitiator = msg.sender;\n        collateralMarket = _collateralMarket;\n        collateralAmount = _collateralAmountToRedeemForSwap;\n        minAmountOutAfterSwap = _minAmountOutAfterSwap;\n        operationType = OperationType.EXIT_COLLATERAL;\n\n        IVToken[] memory borrowedMarkets = new IVToken[](1);\n        borrowedMarkets[0] = _borrowedMarket;\n        uint256[] memory flashLoanAmounts = new uint256[](1);\n        flashLoanAmounts[0] = _borrowedAmountToFlashLoan;\n\n        COMPTROLLER.executeFlashLoan(\n            payable(msg.sender),\n            payable(address(this)),\n            borrowedMarkets,\n            flashLoanAmounts,\n            _swapData\n        );\n\n        _checkAccountSafe(msg.sender);\n\n        emit LeverageExited(\n            msg.sender,\n            _collateralMarket,\n            _collateralAmountToRedeemForSwap,\n            _borrowedMarket,\n            _borrowedAmountToFlashLoan\n        );\n\n        _transferDustToInitiator(_collateralMarket);\n        _transferDustToInitiator(_borrowedMarket);\n    }\n\n    /// @inheritdoc ILeverageStrategiesManager\n    function exitSingleAssetLeverage(IVToken _collateralMarket, uint256 _collateralAmountToFlashLoan) external {\n        if (_collateralAmountToFlashLoan == 0) revert ZeroFlashLoanAmount();\n        _checkMarketSupported(_collateralMarket);\n        _checkUserDelegated();\n\n        operationInitiator = msg.sender;\n        collateralMarket = _collateralMarket;\n        operationType = OperationType.EXIT_SINGLE_ASSET;\n\n        IVToken[] memory borrowedMarkets = new IVToken[](1);\n        borrowedMarkets[0] = _collateralMarket;\n        uint256[] memory flashLoanAmounts = new uint256[](1);\n        flashLoanAmounts[0] = _collateralAmountToFlashLoan;\n\n        COMPTROLLER.executeFlashLoan(\n            payable(msg.sender),\n            payable(address(this)),\n            borrowedMarkets,\n            flashLoanAmounts,\n            \"\"\n        );\n\n        _checkAccountSafe(msg.sender);\n\n        emit SingleAssetLeverageExited(msg.sender, _collateralMarket, _collateralAmountToFlashLoan);\n\n        _transferDustToInitiator(_collateralMarket);\n    }\n\n    /**\n     * @notice Flash loan callback entrypoint called by Comptroller\n     * @dev Protected by nonReentrant modifier to prevent reentrancy attacks during flash loan execution\n     * @param vTokens Array with the borrowed vToken market (single element)\n     * @param amounts Array with the borrowed underlying amount (single element)\n     * @param premiums Array with the flash loan fee amount (single element)\n     * @param initiator The address that initiated the flash loan (must be this contract)\n     * @param onBehalf The user for whom debt will be opened\n     * @param param Encoded auxiliary data for the operation (e.g., swap multicall)\n     * @return success Whether the execution succeeded\n     * @return repayAmounts Amounts to approve for flash loan repayment\n     * @custom:error InitiatorMismatch When initiator is not this contract\n     * @custom:error OnBehalfMismatch When onBehalf is not the operation initiator\n     * @custom:error UnauthorizedExecutor When caller is not the Comptroller\n     * @custom:error FlashLoanAssetOrAmountMismatch When array lengths mismatch or > 1 element\n     * @custom:error InvalidExecuteOperation When operation type is unknown\n     */\n    function executeOperation(\n        IVToken[] calldata vTokens,\n        uint256[] calldata amounts,\n        uint256[] calldata premiums,\n        address initiator,\n        address onBehalf,\n        bytes calldata param\n    ) external override nonReentrant returns (bool success, uint256[] memory repayAmounts) {\n        // Only the Comptroller can invoke this callback during flash loan execution\n        if (msg.sender != address(COMPTROLLER)) {\n            revert UnauthorizedExecutor();\n        }\n\n        // Flash loan must be initiated by this contract to prevent unauthorized callbacks\n        if (initiator != address(this)) {\n            revert InitiatorMismatch();\n        }\n\n        // The flash loan beneficiary must match the user who called the entry function\n        if (onBehalf != operationInitiator) {\n            revert OnBehalfMismatch();\n        }\n\n        // This contract only supports single-market flash loans\n        if (vTokens.length != 1 || amounts.length != 1 || premiums.length != 1) {\n            revert FlashLoanAssetOrAmountMismatch();\n        }\n\n        repayAmounts = new uint256[](1);\n        if (operationType == OperationType.ENTER_SINGLE_ASSET) {\n            repayAmounts[0] = _handleEnterSingleAsset(onBehalf, vTokens[0], amounts[0], premiums[0]);\n        } else if (operationType == OperationType.ENTER_COLLATERAL) {\n            repayAmounts[0] = _handleEnterCollateral(onBehalf, vTokens[0], amounts[0], premiums[0], param);\n        } else if (operationType == OperationType.ENTER_BORROW) {\n            repayAmounts[0] = _handleEnterBorrow(onBehalf, vTokens[0], amounts[0], premiums[0], param);\n        } else if (operationType == OperationType.EXIT_COLLATERAL) {\n            repayAmounts[0] = _handleExitCollateral(onBehalf, vTokens[0], amounts[0], premiums[0], param);\n        } else if (operationType == OperationType.EXIT_SINGLE_ASSET) {\n            repayAmounts[0] = _handleExitSingleAsset(onBehalf, vTokens[0], amounts[0], premiums[0]);\n        } else {\n            revert InvalidExecuteOperation();\n        }\n\n        return (true, repayAmounts);\n    }\n\n    /**\n     * @notice Executes the enter leveraged position with single collateral operation during flash loan callback\n     * @dev This function performs the following steps:\n     *      1. Combines flash loaned collateral with user's seed collateral\n     *      2. Supplies all collateral to the Venus market on behalf of the user\n     *      3. Borrows the repayment amount (fees) on behalf of the user\n     *      4. Approves the collateral asset for repayment to the flash loan\n     * @param onBehalf Address on whose behalf the operation is performed\n     * @param market The vToken market for the collateral asset\n     * @param flashloanedCollateralAmount The amount of collateral assets received from flash loan\n     * @param collateralAmountFees The fees to be paid on the flash loaned collateral amount\n     * @return flashLoanRepayAmount The total amount of collateral assets to repay (fees only)\n     * @custom:error MintBehalfFailed if mint behalf operation fails\n     * @custom:error BorrowBehalfFailed if borrow behalf operation fails\n     * @custom:error InsufficientFundsToRepayFlashloan if insufficient funds are available to repay the flash loan\n     */\n    function _handleEnterSingleAsset(\n        address onBehalf,\n        IVToken market,\n        uint256 flashloanedCollateralAmount,\n        uint256 collateralAmountFees\n    ) internal returns (uint256 flashLoanRepayAmount) {\n        IERC20Upgradeable collateralAsset = IERC20Upgradeable(market.underlying());\n\n        uint256 totalCollateralAmountToMint = flashloanedCollateralAmount + collateralAmount;\n        collateralAsset.forceApprove(address(market), totalCollateralAmountToMint);\n\n        uint256 err = market.mintBehalf(onBehalf, totalCollateralAmountToMint);\n        if (err != SUCCESS) {\n            revert MintBehalfFailed(err);\n        }\n\n        flashLoanRepayAmount = _borrowAndRepayFlashLoanFee(onBehalf, market, collateralAsset, collateralAmountFees);\n    }\n\n    /**\n     * @notice Executes the enter leveraged position operation during flash loan callback\n     * @dev This function performs the following steps:\n     *      1. Swaps flash loaned borrowed assets for collateral assets\n     *      2. Supplies all collateral received from swap plus seed to the Venus market on behalf of the user\n     *      3. Borrows the repayment amount on behalf of the user\n     *      4. Approves the borrowed asset for repayment to the flash loan\n     * @param onBehalf Address on whose behalf the operation is performed\n     * @param borrowMarket The vToken market from which assets were borrowed\n     * @param borrowedAssetAmount The amount of borrowed assets received from flash loan\n     * @param borrowedAssetFees The fees to be paid on the borrowed asset amount\n     * @param swapCallData The encoded swap instructions for converting borrowed to collateral assets\n     * @return flashLoanRepayAmount The total amount of borrowed assets to repay (fees only)\n     * @custom:error MintBehalfFailed if mint behalf operation fails\n     * @custom:error BorrowBehalfFailed if borrow behalf operation fails\n     * @custom:error TokenSwapCallFailed if token swap execution fails\n     * @custom:error SlippageExceeded if collateral balance after swap is below minimum\n     */\n    function _handleEnterCollateral(\n        address onBehalf,\n        IVToken borrowMarket,\n        uint256 borrowedAssetAmount,\n        uint256 borrowedAssetFees,\n        bytes calldata swapCallData\n    ) internal returns (uint256 flashLoanRepayAmount) {\n        IERC20Upgradeable borrowedAsset = IERC20Upgradeable(borrowMarket.underlying());\n\n        // Cache transient storage reads for variables used more than once to save gas\n        IVToken _collateralMarket = collateralMarket;\n        uint256 _minAmountOutAfterSwap = minAmountOutAfterSwap;\n\n        IERC20Upgradeable collateralAsset = IERC20Upgradeable(_collateralMarket.underlying());\n        uint256 swappedCollateralAmountOut = _performSwap(\n            borrowedAsset,\n            borrowedAssetAmount,\n            collateralAsset,\n            _minAmountOutAfterSwap,\n            swapCallData\n        );\n\n        uint256 collateralAmountToMint = swappedCollateralAmountOut + collateralAmount;\n        collateralAsset.forceApprove(address(_collateralMarket), collateralAmountToMint);\n\n        uint256 err = _collateralMarket.mintBehalf(onBehalf, collateralAmountToMint);\n        if (err != SUCCESS) {\n            revert MintBehalfFailed(err);\n        }\n\n        flashLoanRepayAmount = _borrowAndRepayFlashLoanFee(onBehalf, borrowMarket, borrowedAsset, borrowedAssetFees);\n    }\n\n    /**\n     * @notice Executes the enter leveraged position with borrowed assets operation during flash loan callback\n     * @dev This function performs the following steps:\n     *      1. Swaps the total borrowed assets (seed + flash loan) for collateral assets\n     *      2. Supplies all collateral received from swap to the Venus market on behalf of the user\n     *      3. Borrows the repayment amount on behalf of the user\n     *      4. Approves the borrowed asset for repayment to the flash loan\n     * @param onBehalf Address on whose behalf the operation is performed\n     * @param borrowMarket The vToken market from which assets were borrowed\n     * @param borrowedAssetAmount The amount of borrowed assets received from flash loan\n     * @param borrowedAssetFees The fees to be paid on the borrowed asset amount\n     * @param swapCallData The encoded swap instructions for converting borrowed to collateral assets\n     * @return flashLoanRepayAmount The total amount of borrowed assets to repay (fees only)\n     * @custom:error MintBehalfFailed if mint behalf operation fails\n     * @custom:error BorrowBehalfFailed if borrow behalf operation fails\n     * @custom:error TokenSwapCallFailed if token swap execution fails\n     * @custom:error SlippageExceeded if collateral balance after swap is below minimum\n     */\n    function _handleEnterBorrow(\n        address onBehalf,\n        IVToken borrowMarket,\n        uint256 borrowedAssetAmount,\n        uint256 borrowedAssetFees,\n        bytes calldata swapCallData\n    ) internal returns (uint256 flashLoanRepayAmount) {\n        IERC20Upgradeable borrowedAsset = IERC20Upgradeable(borrowMarket.underlying());\n\n        // Cache transient storage reads for variables used more than once to save gas\n        IVToken _collateralMarket = collateralMarket;\n        uint256 _minAmountOutAfterSwap = minAmountOutAfterSwap;\n\n        IERC20Upgradeable collateralAsset = IERC20Upgradeable(_collateralMarket.underlying());\n\n        uint256 totalBorrowedAmountToSwap = borrowedAmountSeed + borrowedAssetAmount;\n\n        uint256 swappedCollateralAmountOut = _performSwap(\n            borrowedAsset,\n            totalBorrowedAmountToSwap,\n            collateralAsset,\n            _minAmountOutAfterSwap,\n            swapCallData\n        );\n\n        collateralAsset.forceApprove(address(_collateralMarket), swappedCollateralAmountOut);\n\n        uint256 err = _collateralMarket.mintBehalf(onBehalf, swappedCollateralAmountOut);\n        if (err != SUCCESS) {\n            revert MintBehalfFailed(err);\n        }\n\n        flashLoanRepayAmount = _borrowAndRepayFlashLoanFee(onBehalf, borrowMarket, borrowedAsset, borrowedAssetFees);\n    }\n\n    /**\n     * @notice Executes the exit leveraged position operation during flash loan callback\n     * @dev This function performs the following steps:\n     *      1. Queries actual debt and caps repayment to min(flashLoanAmount, actualDebt)\n     *         to handle cases where UI flash loans slightly more than current debt\n     *      2. Repays user's debt (up to actual debt amount) in the borrowed market\n     *      3. Calculates redeem amount accounting for treasury fee (if any)\n     *      4. Redeems specified amount of collateral from the Venus market\n     *      5. Swaps actual received collateral (after treasury fee) for borrowed assets\n     *      6. Validates total borrowed asset balance (swap output + excess flash loan funds)\n     *         is sufficient to repay flash loan, then approves repayment\n     *\n     * @param onBehalf Address on whose behalf the operation is performed\n     * @param borrowMarket The vToken market from which assets were borrowed via flash loan\n     * @param borrowedAssetAmountToRepayFromFlashLoan The amount borrowed via flash loan for debt repayment\n     * @param borrowedAssetFees The fees to be paid on the borrowed asset amount\n     * @param swapCallData The encoded swap instructions for converting collateral to borrowed assets\n     * @return flashLoanRepayAmount The total amount of borrowed assets to repay\n     * @custom:error RepayBehalfFailed if repayment of borrowed assets fails\n     * @custom:error RedeemBehalfFailed if redeem operations fail\n     * @custom:error TokenSwapCallFailed if token swap execution fails\n     * @custom:error SlippageExceeded if swap output is below minimum required\n     * @custom:error InsufficientFundsToRepayFlashloan if insufficient funds are available to repay the flash loan\n     */\n    function _handleExitCollateral(\n        address onBehalf,\n        IVToken borrowMarket,\n        uint256 borrowedAssetAmountToRepayFromFlashLoan,\n        uint256 borrowedAssetFees,\n        bytes calldata swapCallData\n    ) internal returns (uint256 flashLoanRepayAmount) {\n        IERC20Upgradeable borrowedAsset = IERC20Upgradeable(borrowMarket.underlying());\n\n        {\n            uint256 borrowedTotalDebtAmount = borrowMarket.borrowBalanceCurrent(onBehalf);\n            uint256 repayAmount = borrowedAssetAmountToRepayFromFlashLoan > borrowedTotalDebtAmount\n                ? borrowedTotalDebtAmount\n                : borrowedAssetAmountToRepayFromFlashLoan;\n\n            borrowedAsset.forceApprove(address(borrowMarket), repayAmount);\n            uint256 err = borrowMarket.repayBorrowBehalf(onBehalf, repayAmount);\n\n            if (err != SUCCESS) {\n                revert RepayBehalfFailed(err);\n            }\n        }\n\n        // Cache transient storage reads for variables used more than once to save gas\n        IVToken _collateralMarket = collateralMarket;\n        uint256 collateralAmountToRedeem = collateralAmount;\n\n        {\n            uint256 treasuryPercent = COMPTROLLER.treasuryPercent();\n            uint256 redeemAmount = treasuryPercent > 0\n                ? (collateralAmountToRedeem * MANTISSA_ONE + (MANTISSA_ONE - treasuryPercent) - 1) /\n                    (MANTISSA_ONE - treasuryPercent)\n                : collateralAmountToRedeem;\n\n            uint256 err = _collateralMarket.redeemUnderlyingBehalf(onBehalf, redeemAmount);\n            if (err != SUCCESS) {\n                revert RedeemBehalfFailed(err);\n            }\n        }\n\n        IERC20Upgradeable collateralAsset = IERC20Upgradeable(_collateralMarket.underlying());\n\n        _performSwap(\n            collateralAsset,\n            collateralAsset.balanceOf(address(this)),\n            borrowedAsset,\n            minAmountOutAfterSwap,\n            swapCallData\n        );\n\n        flashLoanRepayAmount = borrowedAssetAmountToRepayFromFlashLoan + borrowedAssetFees;\n\n        if (borrowedAsset.balanceOf(address(this)) < flashLoanRepayAmount) {\n            revert InsufficientFundsToRepayFlashloan();\n        }\n\n        borrowedAsset.forceApprove(address(borrowMarket), flashLoanRepayAmount);\n    }\n\n    /**\n     * @notice Executes the exit leveraged position with single collateral operation during flash loan callback\n     * @dev This function performs the following steps:\n     *      1. Queries actual debt and caps repayment to min(flashLoanAmount, actualDebt)\n     *         to handle cases where UI flash loans slightly more than current debt\n     *      2. Repays user's debt (up to actual debt amount) in the market\n     *      3. Calculates redeem amount accounting for treasury fee (if any)\n     *      4. Caps redeem amount to user's actual collateral balance to prevent revert\n     *         when user entered with zero seed (collateral equals borrowed amount)\n     *      5. Redeems collateral (up to user's balance) to repay flash loan\n     *      6. Approves the collateral asset for repayment to the flash loan\n     * @param onBehalf Address on whose behalf the operation is performed\n     * @param market The vToken market for both collateral and borrowed assets\n     * @param flashloanedCollateralAmount The amount borrowed via flash loan for debt repayment\n     * @param collateralAmountFees The fees to be paid on the flash loaned collateral amount\n     * @return flashLoanRepayAmount The total amount of collateral assets to repay\n     * @custom:error RepayBehalfFailed if repayment of borrowed assets fails\n     * @custom:error RedeemBehalfFailed if redeem operations fail\n     * @custom:error InsufficientFundsToRepayFlashloan if insufficient funds are available to repay the flash loan\n     */\n    function _handleExitSingleAsset(\n        address onBehalf,\n        IVToken market,\n        uint256 flashloanedCollateralAmount,\n        uint256 collateralAmountFees\n    ) internal returns (uint256 flashLoanRepayAmount) {\n        IERC20Upgradeable collateralAsset = IERC20Upgradeable(market.underlying());\n\n        uint256 marketTotalDebtAmount = market.borrowBalanceCurrent(onBehalf);\n        uint256 repayAmount = flashloanedCollateralAmount > marketTotalDebtAmount\n            ? marketTotalDebtAmount\n            : flashloanedCollateralAmount;\n\n        collateralAsset.forceApprove(address(market), repayAmount);\n        uint256 err = market.repayBorrowBehalf(onBehalf, repayAmount);\n\n        if (err != SUCCESS) {\n            revert RepayBehalfFailed(err);\n        }\n\n        flashLoanRepayAmount = flashloanedCollateralAmount + collateralAmountFees;\n\n        uint256 treasuryPercent = COMPTROLLER.treasuryPercent();\n        uint256 redeemAmount = treasuryPercent > 0\n            ? (flashLoanRepayAmount * MANTISSA_ONE + (MANTISSA_ONE - treasuryPercent) - 1) /\n                (MANTISSA_ONE - treasuryPercent)\n            : flashLoanRepayAmount;\n\n        uint256 userCollateralBalance = market.balanceOfUnderlying(onBehalf);\n        if (redeemAmount > userCollateralBalance) {\n            redeemAmount = userCollateralBalance;\n        }\n\n        err = market.redeemUnderlyingBehalf(onBehalf, redeemAmount);\n        if (err != SUCCESS) {\n            revert RedeemBehalfFailed(err);\n        }\n\n        if (collateralAsset.balanceOf(address(this)) < flashLoanRepayAmount) {\n            revert InsufficientFundsToRepayFlashloan();\n        }\n\n        collateralAsset.forceApprove(address(market), flashLoanRepayAmount);\n    }\n\n    /**\n     * @notice Performs token swap via the SwapHelper contract\n     * @dev Transfers tokens to SwapHelper and executes the swap operation.\n     *      The swap operation is expected to return the output tokens to this contract.\n     * @param tokenIn The input token to be swapped\n     * @param amountIn The amount of input tokens to swap\n     * @param tokenOut The output token to receive from the swap\n     * @param minAmountOut The minimum acceptable amount of output tokens\n     * @param param The encoded swap instructions/calldata for the SwapHelper\n     * @return amountOut The actual amount of output tokens received from the swap\n     * @custom:error TokenSwapCallFailed if the swap execution fails\n     * @custom:error SlippageExceeded if the swap output is below the minimum required\n     */\n    function _performSwap(\n        IERC20Upgradeable tokenIn,\n        uint256 amountIn,\n        IERC20Upgradeable tokenOut,\n        uint256 minAmountOut,\n        bytes calldata param\n    ) internal returns (uint256 amountOut) {\n        tokenIn.safeTransfer(address(swapHelper), amountIn);\n\n        uint256 tokenOutBalanceBefore = tokenOut.balanceOf(address(this));\n\n        (bool success, ) = address(swapHelper).call(param);\n        if (!success) {\n            revert TokenSwapCallFailed();\n        }\n\n        uint256 tokenOutBalanceAfter = tokenOut.balanceOf(address(this));\n\n        amountOut = tokenOutBalanceAfter - tokenOutBalanceBefore;\n        if (amountOut < minAmountOut) {\n            revert SlippageExceeded();\n        }\n\n        return amountOut;\n    }\n\n    /**\n     * @notice Transfers tokens from the user to this contract if amount > 0\n     * @dev If the specified amount is greater than zero, transfers tokens from the user.\n     *      Reverts if the actual transferred amount does not match the expected amount.\n     * @param market The vToken market whose underlying asset is to be transferred\n     * @param user The address of the user to transfer tokens from\n     * @param amount The amount of tokens to transfer\n     * @custom:error TransferFromUserFailed if the transferred amount does not match the expected amount\n     */\n    function _transferSeedAmountFromUser(IVToken market, address user, uint256 amount) internal {\n        if (amount > 0) {\n            IERC20Upgradeable token = IERC20Upgradeable(market.underlying());\n            token.safeTransferFrom(user, address(this), amount);\n        }\n    }\n\n    /**\n     * @notice Transfers any remaining dust amounts back to the operation initiator\n     * @dev This function returns small remaining balances to the user who initiated the operation.\n     *      Should be called after leverage operations to ensure no funds are left in the contract.\n     * @param market The vToken market whose underlying asset dust should be transferred\n     */\n    function _transferDustToInitiator(IVToken market) internal {\n        IERC20Upgradeable asset = IERC20Upgradeable(market.underlying());\n\n        uint256 dustAmount = asset.balanceOf(address(this));\n        if (dustAmount > 0) {\n            // Cache transient storage read to save gas\n            address _operationInitiator = operationInitiator;\n            asset.safeTransfer(_operationInitiator, dustAmount);\n            emit DustTransferred(_operationInitiator, address(asset), dustAmount);\n        }\n    }\n\n    /**\n     * @notice Borrows assets on behalf of the user to repay the flash loan fee\n     * @dev Borrows the total amount needed to repay the flash loan fee\n     *      and approves the borrowed asset for repayment to the flash loan.\n     * @param onBehalf Address on whose behalf assets will be borrowed\n     * @param borrowMarket The vToken market from which assets will be borrowed\n     * @param borrowedAsset The underlying asset being borrowed\n     * @param borrowedAssetFees The fees to be paid on the borrowed asset amount\n     * @return flashLoanRepayAmount The total amount of borrowed assets to repay (only fees)\n     * @custom:error BorrowBehalfFailed if borrow behalf operation fails\n     * @custom:error InsufficientFundsToRepayFlashloan if insufficient funds are available to repay the flash loan\n     */\n    function _borrowAndRepayFlashLoanFee(\n        address onBehalf,\n        IVToken borrowMarket,\n        IERC20Upgradeable borrowedAsset,\n        uint256 borrowedAssetFees\n    ) internal returns (uint256 flashLoanRepayAmount) {\n        flashLoanRepayAmount = borrowedAssetFees;\n\n        uint256 marketBalanceBeforeBorrow = borrowedAsset.balanceOf(address(borrowMarket));\n        uint256 err = borrowMarket.borrowBehalf(onBehalf, flashLoanRepayAmount);\n        if (err != SUCCESS) {\n            revert BorrowBehalfFailed(err);\n        }\n        uint256 marketBalanceAfterBorrow = borrowedAsset.balanceOf(address(borrowMarket));\n\n        if (marketBalanceBeforeBorrow - marketBalanceAfterBorrow < flashLoanRepayAmount) {\n            revert InsufficientFundsToRepayFlashloan();\n        }\n\n        borrowedAsset.forceApprove(address(borrowMarket), flashLoanRepayAmount);\n    }\n\n    /**\n     * @notice Accrues interest on a vToken market\n     * @dev Must be called before safety checks to ensure borrow balances reflect accumulated interest\n     * @param market The vToken market to accrue interest on\n     * @custom:error AccrueInterestFailed if the accrueInterest call returns a non-zero error code\n     */\n    function _accrueInterest(IVToken market) internal {\n        uint256 err = market.accrueInterest();\n        if (err != SUCCESS) revert AccrueInterestFailed(err);\n    }\n\n    /**\n     * @notice Ensures the user has entered the market before operations\n     * @dev If user is not a member of market the function calls Comptroller to enter market on behalf of user\n     * @param user The account for which membership is validated/updated\n     * @param market The vToken market the user must enter\n     * @custom:error EnterMarketFailed when Comptroller.enterMarketBehalf returns a non-zero error code\n     */\n    function _validateAndEnterMarket(address user, IVToken market) internal {\n        if (!COMPTROLLER.checkMembership(user, market)) {\n            uint256 err = COMPTROLLER.enterMarketBehalf(user, address(market));\n            if (err != SUCCESS) revert EnterMarketFailed(err);\n        }\n    }\n\n    /**\n     * @notice Checks if the caller has delegated this contract in the Comptroller\n     * @custom:error NotAnApprovedDelegate if caller has not approved this contract as delegate\n     */\n    function _checkUserDelegated() internal view {\n        if (!COMPTROLLER.approvedDelegates(msg.sender, address(this))) {\n            revert NotAnApprovedDelegate();\n        }\n    }\n\n    /**\n     * @notice Checks if a `user` account is safe from liquidation\n     * @dev Verifies that the user's account has no liquidity shortfall and the comptroller\n     *      returned no errors when calculating account liquidity. This ensures the account\n     *      won't be immediately liquidatable after the leverage operation.\n     * @param user The address to check account safety for\n     * @custom:error OperationCausesLiquidation if the account has a liquidity shortfall or comptroller error\n     */\n    function _checkAccountSafe(address user) internal view {\n        (uint256 err, , uint256 shortfall) = COMPTROLLER.getBorrowingPower(user);\n        if (err != SUCCESS || shortfall > 0) revert OperationCausesLiquidation(err);\n    }\n\n    /**\n     * @notice Ensures that the given market is supported for leverage operations\n     * @dev A market must be listed in the Comptroller and must not be vBNB.\n     *      vBNB is excluded because it uses native BNB which requires special handling\n     *      that this contract does not support.\n     * @param market The vToken address to validate\n     * @custom:error MarketNotListed if the market is not listed in Comptroller\n     * @custom:error VBNBNotSupported if the market is vBNB\n     */\n    function _checkMarketSupported(IVToken market) internal view {\n        (bool isMarketListed, , ) = COMPTROLLER.markets(address(market));\n        if (!isMarketListed) revert MarketNotListed(address(market));\n        if (market == vBNB) revert VBNBNotSupported();\n    }\n}\n"},"contracts/SwapHelper/SwapHelper.sol":{"content":"// SPDX-License-Identifier: BSD-3-Clause\npragma solidity 0.8.28;\n\nimport {\n    SafeERC20Upgradeable,\n    IERC20Upgradeable\n} from \"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\";\nimport { AddressUpgradeable } from \"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\";\nimport { EIP712 } from \"@openzeppelin/contracts/utils/cryptography/EIP712.sol\";\nimport { ECDSA } from \"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\";\nimport { Ownable2Step } from \"@openzeppelin/contracts/access/Ownable2Step.sol\";\nimport { ReentrancyGuard } from \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\n\n/**\n * @title SwapHelper\n * @author Venus Protocol\n * @notice Helper contract for executing multiple token operations atomically\n * @dev This contract provides utilities for managing approvals,\n *      and executing arbitrary calls in a single transaction. It supports\n *      signature verification using EIP-712 for backend-authorized operations.\n *      All functions except multicall are designed to be called internally via multicall.\n * @custom:security-contact security@venus.io\n */\ncontract SwapHelper is EIP712, Ownable2Step, ReentrancyGuard {\n    using SafeERC20Upgradeable for IERC20Upgradeable;\n    using AddressUpgradeable for address;\n\n    /// @notice EIP-712 typehash for Multicall struct used in signature verification\n    /// @dev keccak256(\"Multicall(address caller,bytes[] calls,uint256 deadline,bytes32 salt)\")\n    bytes32 internal constant MULTICALL_TYPEHASH =\n        keccak256(\"Multicall(address caller,bytes[] calls,uint256 deadline,bytes32 salt)\");\n\n    /// @notice Address authorized to sign multicall operations\n    /// @dev Can be updated by contract owner via setBackendSigner\n    address public backendSigner;\n\n    /// @notice Mapping to track used salts for replay protection\n    /// @dev Maps salt => bool to prevent reuse of same salt\n    mapping(bytes32 => bool) public usedSalts;\n\n    /// @notice Error thrown when transaction deadline has passed\n    /// @dev Emitted when block.timestamp > deadline in multicall\n    error DeadlineReached();\n\n    /// @notice Error thrown when signature verification fails\n    /// @dev Emitted when recovered signer doesn't match backendSigner\n    error Unauthorized();\n\n    /// @notice Error thrown when zero address is provided as parameter\n    /// @dev Used in constructor and setBackendSigner validation\n    error ZeroAddress();\n\n    /// @notice Error thrown when salt has already been used\n    /// @dev Prevents replay attacks by ensuring each salt is used only once\n    error SaltAlreadyUsed();\n\n    /// @notice Error thrown when caller is not authorized\n    /// @dev Only owner or contract itself can call protected functions\n    error CallerNotAuthorized();\n\n    /// @notice Error thrown when no calls are provided to multicall\n    /// @dev Emitted when calls array is empty in multicall\n    error NoCallsProvided();\n\n    /// @notice Error thrown when signature is missing but required\n    /// @dev Emitted when signature length is zero but verification is expected\n    error MissingSignature();\n\n    /// @notice Event emitted when backend signer is updated\n    /// @param oldSigner Previous backend signer address\n    /// @param newSigner New backend signer address\n    event BackendSignerUpdated(address indexed oldSigner, address indexed newSigner);\n\n    /// @notice Event emitted when multicall is successfully executed\n    /// @param caller Address that initiated the multicall\n    /// @param callsCount Number of calls executed in the batch\n    /// @param deadline Deadline timestamp used for the operation\n    /// @param salt Salt used for replay protection\n    event MulticallExecuted(address indexed caller, uint256 callsCount, uint256 deadline, bytes32 salt);\n\n    /// @notice Event emitted when tokens are swept from the contract\n    /// @param token Address of the token swept\n    /// @param to Recipient address\n    /// @param amount Amount of tokens swept\n    event Swept(address indexed token, address indexed to, uint256 amount);\n\n    /// @notice Event emitted when maximum approval is granted\n    /// @param token Address of the token approved\n    /// @param spender Address granted the approval\n    event ApprovedMax(address indexed token, address indexed spender);\n\n    /// @notice Event emitted when generic call is executed\n    /// @param target Address of the contract called\n    /// @param data Encoded function call data\n    event GenericCallExecuted(address indexed target, bytes data);\n\n    /// @notice Constructor\n    /// @param backendSigner_ Address authorized to sign multicall operations\n    /// @dev Initializes EIP-712 domain with name \"VenusSwap\" and version \"1\"\n    /// @dev Transfers ownership to msg.sender\n    /// @dev Reverts with ZeroAddress if parameter is address(0)\n    /// @custom:error ZeroAddress if backendSigner_ is address(0)\n    constructor(address backendSigner_) EIP712(\"VenusSwap\", \"1\") {\n        if (backendSigner_ == address(0)) {\n            revert ZeroAddress();\n        }\n\n        backendSigner = backendSigner_;\n    }\n\n    /// @notice Modifier to restrict access to owner or contract itself\n    /// @dev Reverts with CallerNotAuthorized if caller is neither owner nor this contract\n    modifier onlyOwnerOrSelf() {\n        if (msg.sender != owner() && msg.sender != address(this)) {\n            revert CallerNotAuthorized();\n        }\n        _;\n    }\n\n    /// @notice Multicall function to execute multiple calls in a single transaction.\n    /// @param calls Array of encoded function calls to execute on this contract\n    /// @param deadline Unix timestamp after which the transaction will revert\n    /// @param salt Unique value to ensure this exact multicall can only be executed once\n    /// @param signature EIP-712 signature from backend signer\n    /// @dev All calls are executed atomically - if any call fails, entire transaction reverts\n    /// @dev Calls must be to functions on this contract (address(this))\n    /// @dev Protected by nonReentrant modifier to prevent reentrancy attacks\n    /// @dev This function should be called as a part of a transaction that sends tokens to this contract and verifies if they received desired tokens after execution.\n    /// @dev EOA that calls this function should not send tokens directly nor approve this contract to spend tokens on their behalf.\n    /// @custom:event MulticallExecuted emitted upon successful execution\n    /// @custom:security Only the contract itself can call sweep, approveMax, and genericCall\n    /// @custom:error NoCallsProvided if calls array is empty\n    /// @custom:error DeadlineReached if block.timestamp > deadline\n    /// @custom:error SaltAlreadyUsed if salt has been used before\n    /// @custom:error Unauthorized if signature verification fails\n    /// @custom:error MissingSignature if signature is empty\n    function multicall(\n        bytes[] calldata calls,\n        uint256 deadline,\n        bytes32 salt,\n        bytes calldata signature\n    ) external nonReentrant {\n        if (calls.length == 0) {\n            revert NoCallsProvided();\n        }\n\n        if (block.timestamp > deadline) {\n            revert DeadlineReached();\n        }\n\n        if (signature.length == 0) {\n            revert MissingSignature();\n        }\n        if (usedSalts[salt]) {\n            revert SaltAlreadyUsed();\n        }\n        usedSalts[salt] = true;\n\n        bytes32 digest = _hashMulticall(msg.sender, calls, deadline, salt);\n        address signer = ECDSA.recover(digest, signature);\n        if (signer != backendSigner) {\n            revert Unauthorized();\n        }\n\n        for (uint256 i = 0; i < calls.length; i++) {\n            (bool success, bytes memory returnData) = address(this).call(calls[i]);\n            if (!success) {\n                assembly {\n                    revert(add(returnData, 0x20), mload(returnData))\n                }\n            }\n        }\n\n        emit MulticallExecuted(msg.sender, calls.length, deadline, salt);\n    }\n\n    /// @notice Generic call function to execute a call to an arbitrary address\n    /// @param target Address of the contract to call\n    /// @param data Encoded function call data\n    /// @dev This function can interact with any external contract\n    /// @dev Should only be called via multicall for safety, but can be called directly by owner\n    /// @custom:security Use with extreme caution - can call any contract with any data\n    /// @custom:security Ensure proper validation of target and data in off-chain systems\n    /// @custom:error CallerNotAuthorized if caller is not owner or contract itself\n    function genericCall(address target, bytes calldata data) external onlyOwnerOrSelf {\n        target.functionCall(data);\n        emit GenericCallExecuted(target, data);\n    }\n\n    /// @notice Sweeps entire balance of an ERC-20 token to a specified address\n    /// @param token ERC-20 token contract to sweep\n    /// @param to Recipient address for the swept tokens\n    /// @dev Transfers the entire balance of token held by this contract\n    /// @dev Uses SafeERC20 for safe transfer operations\n    /// @dev Should only be called via multicall for safety, but can be called directly by owner\n    /// @custom:error CallerNotAuthorized if caller is not owner or contract itself\n    /// @custom:error ZeroAddress if token is address(0) or to is address(0)\n    function sweep(IERC20Upgradeable token, address to) external onlyOwnerOrSelf {\n        if (address(token) == address(0) || to == address(0)) {\n            revert ZeroAddress();\n        }\n        uint256 amount = token.balanceOf(address(this));\n        if (amount > 0) {\n            token.safeTransfer(to, amount);\n        }\n        emit Swept(address(token), to, amount);\n    }\n\n    /// @notice Approves maximum amount of an ERC-20 token to a specified spender\n    /// @param token ERC-20 token contract to approve\n    /// @param spender Address to grant approval to\n    /// @dev Sets approval to type(uint256).max for unlimited spending\n    /// @dev Uses forceApprove to handle tokens that require 0 approval first\n    /// @dev Should only be called via multicall for safety, but can be called directly by owner\n    /// @custom:security Grants unlimited approval - ensure spender is trusted\n    /// @custom:error CallerNotAuthorized if caller is not owner or contract itself\n    function approveMax(IERC20Upgradeable token, address spender) external onlyOwnerOrSelf {\n        token.forceApprove(spender, type(uint256).max);\n        emit ApprovedMax(address(token), spender);\n    }\n\n    /// @notice Updates the backend signer address\n    /// @param newSigner New backend signer address\n    /// @dev Only callable by contract owner\n    /// @dev Reverts with ZeroAddress if newSigner is address(0)\n    /// @dev Emits BackendSignerUpdated event\n    /// @custom:error ZeroAddress if newSigner is address(0)\n    /// @custom:error Ownable: caller is not the owner (from OpenZeppelin Ownable)\n    function setBackendSigner(address newSigner) external onlyOwner {\n        if (newSigner == address(0)) {\n            revert ZeroAddress();\n        }\n\n        emit BackendSignerUpdated(backendSigner, newSigner);\n        backendSigner = newSigner;\n    }\n\n    /// @notice Produces an EIP-712 digest of the multicall data\n    /// @param caller Address of the authorized caller\n    /// @param calls Array of encoded function calls\n    /// @param deadline Unix timestamp deadline\n    /// @param salt Unique value to ensure replay protection\n    /// @return EIP-712 typed data hash for signature verification\n    /// @dev Hashes each call individually, then encodes with MULTICALL_TYPEHASH, caller, deadline, and salt\n    /// @dev Uses EIP-712 _hashTypedDataV4 for domain-separated hashing\n    function _hashMulticall(\n        address caller,\n        bytes[] calldata calls,\n        uint256 deadline,\n        bytes32 salt\n    ) internal view returns (bytes32) {\n        bytes32[] memory callHashes = new bytes32[](calls.length);\n        for (uint256 i = 0; i < calls.length; i++) {\n            callHashes[i] = keccak256(calls[i]);\n        }\n        return\n            _hashTypedDataV4(\n                keccak256(\n                    abi.encode(MULTICALL_TYPEHASH, caller, keccak256(abi.encodePacked(callHashes)), deadline, salt)\n                )\n            );\n    }\n}\n"},"hardhat-deploy/solc_0.8/openzeppelin/access/Ownable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (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 (address initialOwner) {\n        _transferOwnership(initialOwner);\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 called by any account other than the owner.\n     */\n    modifier onlyOwner() {\n        require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n        _;\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"},"hardhat-deploy/solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n * proxy whose upgrades are fully controlled by the current implementation.\n */\ninterface IERC1822Proxiable {\n    /**\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n     * address.\n     *\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n     * function revert if invoked through a proxy.\n     */\n    function proxiableUUID() external view returns (bytes32);\n}\n"},"hardhat-deploy/solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\n */\ninterface IBeacon {\n    /**\n     * @dev Must return an address that can be used as a delegate call target.\n     *\n     * {BeaconProxy} will check that this address is a contract.\n     */\n    function implementation() external view returns (address);\n}\n"},"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../Proxy.sol\";\nimport \"./ERC1967Upgrade.sol\";\n\n/**\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n * implementation address that can be changed. This address is stored in storage in the location specified by\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\n * implementation behind the proxy.\n */\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\n    /**\n     * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\n     *\n     * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\n     * function call, and allows initializating the storage of the proxy like a Solidity constructor.\n     */\n    constructor(address _logic, bytes memory _data) payable {\n        assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\"eip1967.proxy.implementation\")) - 1));\n        _upgradeToAndCall(_logic, _data, false);\n    }\n\n    /**\n     * @dev Returns the current implementation address.\n     */\n    function _implementation() internal view virtual override returns (address impl) {\n        return ERC1967Upgrade._getImplementation();\n    }\n}\n"},"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/ERC1967/ERC1967Upgrade.sol)\n\npragma solidity ^0.8.2;\n\nimport \"../beacon/IBeacon.sol\";\nimport \"../../interfaces/draft-IERC1822.sol\";\nimport \"../../utils/Address.sol\";\nimport \"../../utils/StorageSlot.sol\";\n\n/**\n * @dev This abstract contract provides getters and event emitting update functions for\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n *\n * _Available since v4.1._\n *\n * @custom:oz-upgrades-unsafe-allow delegatecall\n */\nabstract contract ERC1967Upgrade {\n    // This is the keccak-256 hash of \"eip1967.proxy.rollback\" subtracted by 1\n    bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\n\n    /**\n     * @dev Storage slot with the address of the current implementation.\n     * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n     * validated in the constructor.\n     */\n    bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n\n    /**\n     * @dev Emitted when the implementation is upgraded.\n     */\n    event Upgraded(address indexed implementation);\n\n    /**\n     * @dev Returns the current implementation address.\n     */\n    function _getImplementation() internal view returns (address) {\n        return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n    }\n\n    /**\n     * @dev Stores a new address in the EIP1967 implementation slot.\n     */\n    function _setImplementation(address newImplementation) private {\n        require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n        StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n    }\n\n    /**\n     * @dev Perform implementation upgrade\n     *\n     * Emits an {Upgraded} event.\n     */\n    function _upgradeTo(address newImplementation) internal {\n        _setImplementation(newImplementation);\n        emit Upgraded(newImplementation);\n    }\n\n    /**\n     * @dev Perform implementation upgrade with additional setup call.\n     *\n     * Emits an {Upgraded} event.\n     */\n    function _upgradeToAndCall(\n        address newImplementation,\n        bytes memory data,\n        bool forceCall\n    ) internal {\n        _upgradeTo(newImplementation);\n        if (data.length > 0 || forceCall) {\n            Address.functionDelegateCall(newImplementation, data);\n        }\n    }\n\n    /**\n     * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\n     *\n     * Emits an {Upgraded} event.\n     */\n    function _upgradeToAndCallUUPS(\n        address newImplementation,\n        bytes memory data,\n        bool forceCall\n    ) internal {\n        // Upgrades from old implementations will perform a rollback test. This test requires the new\n        // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\n        // this special case will break upgrade paths from old UUPS implementation to new ones.\n        if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\n            _setImplementation(newImplementation);\n        } else {\n            try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\n                require(slot == _IMPLEMENTATION_SLOT, \"ERC1967Upgrade: unsupported proxiableUUID\");\n            } catch {\n                revert(\"ERC1967Upgrade: new implementation is not UUPS\");\n            }\n            _upgradeToAndCall(newImplementation, data, forceCall);\n        }\n    }\n\n    /**\n     * @dev Storage slot with the admin of the contract.\n     * This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is\n     * validated in the constructor.\n     */\n    bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\n\n    /**\n     * @dev Emitted when the admin account has changed.\n     */\n    event AdminChanged(address previousAdmin, address newAdmin);\n\n    /**\n     * @dev Returns the current admin.\n     */\n    function _getAdmin() internal view virtual returns (address) {\n        return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\n    }\n\n    /**\n     * @dev Stores a new address in the EIP1967 admin slot.\n     */\n    function _setAdmin(address newAdmin) private {\n        require(newAdmin != address(0), \"ERC1967: new admin is the zero address\");\n        StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\n    }\n\n    /**\n     * @dev Changes the admin of the proxy.\n     *\n     * Emits an {AdminChanged} event.\n     */\n    function _changeAdmin(address newAdmin) internal {\n        emit AdminChanged(_getAdmin(), newAdmin);\n        _setAdmin(newAdmin);\n    }\n\n    /**\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n     * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\n     */\n    bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\n\n    /**\n     * @dev Emitted when the beacon is upgraded.\n     */\n    event BeaconUpgraded(address indexed beacon);\n\n    /**\n     * @dev Returns the current beacon.\n     */\n    function _getBeacon() internal view returns (address) {\n        return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\n    }\n\n    /**\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\n     */\n    function _setBeacon(address newBeacon) private {\n        require(Address.isContract(newBeacon), \"ERC1967: new beacon is not a contract\");\n        require(Address.isContract(IBeacon(newBeacon).implementation()), \"ERC1967: beacon implementation is not a contract\");\n        StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\n    }\n\n    /**\n     * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\n     * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\n     *\n     * Emits a {BeaconUpgraded} event.\n     */\n    function _upgradeBeaconToAndCall(\n        address newBeacon,\n        bytes memory data,\n        bool forceCall\n    ) internal {\n        _setBeacon(newBeacon);\n        emit BeaconUpgraded(newBeacon);\n        if (data.length > 0 || forceCall) {\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\n        }\n    }\n}\n"},"hardhat-deploy/solc_0.8/openzeppelin/proxy/Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/Proxy.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n * be specified by overriding the virtual {_implementation} function.\n *\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n * different contract through the {_delegate} function.\n *\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\n */\nabstract contract Proxy {\n    /**\n     * @dev Delegates the current call to `implementation`.\n     *\n     * This function does not return to its internal call site, it will return directly to the external caller.\n     */\n    function _delegate(address implementation) internal virtual {\n        assembly {\n            // Copy msg.data. We take full control of memory in this inline assembly\n            // block because it will not return to Solidity code. We overwrite the\n            // Solidity scratch pad at memory position 0.\n            calldatacopy(0, 0, calldatasize())\n\n            // Call the implementation.\n            // out and outsize are 0 because we don't know the size yet.\n            let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\n\n            // Copy the returned data.\n            returndatacopy(0, 0, returndatasize())\n\n            switch result\n            // delegatecall returns 0 on error.\n            case 0 {\n                revert(0, returndatasize())\n            }\n            default {\n                return(0, returndatasize())\n            }\n        }\n    }\n\n    /**\n     * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\n     * and {_fallback} should delegate.\n     */\n    function _implementation() internal view virtual returns (address);\n\n    /**\n     * @dev Delegates the current call to the address returned by `_implementation()`.\n     *\n     * This function does not return to its internall call site, it will return directly to the external caller.\n     */\n    function _fallback() internal virtual {\n        _beforeFallback();\n        _delegate(_implementation());\n    }\n\n    /**\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n     * function in the contract matches the call data.\n     */\n    fallback() external payable virtual {\n        _fallback();\n    }\n\n    /**\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\n     * is empty.\n     */\n    receive() external payable virtual {\n        _fallback();\n    }\n\n    /**\n     * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\n     * call, or as part of the Solidity `fallback` or `receive` functions.\n     *\n     * If overriden should call `super._beforeFallback()`.\n     */\n    function _beforeFallback() internal virtual {}\n}\n"},"hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/ProxyAdmin.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/ProxyAdmin.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./TransparentUpgradeableProxy.sol\";\nimport \"../../access/Ownable.sol\";\n\n/**\n * @dev This is an auxiliary contract meant to be assigned as the admin of a {TransparentUpgradeableProxy}. For an\n * explanation of why you would want to use this see the documentation for {TransparentUpgradeableProxy}.\n */\ncontract ProxyAdmin is Ownable {\n\n    constructor (address initialOwner) Ownable(initialOwner) {}\n\n    /**\n     * @dev Returns the current implementation of `proxy`.\n     *\n     * Requirements:\n     *\n     * - This contract must be the admin of `proxy`.\n     */\n    function getProxyImplementation(TransparentUpgradeableProxy proxy) public view virtual returns (address) {\n        // We need to manually run the static call since the getter cannot be flagged as view\n        // bytes4(keccak256(\"implementation()\")) == 0x5c60da1b\n        (bool success, bytes memory returndata) = address(proxy).staticcall(hex\"5c60da1b\");\n        require(success);\n        return abi.decode(returndata, (address));\n    }\n\n    /**\n     * @dev Returns the current admin of `proxy`.\n     *\n     * Requirements:\n     *\n     * - This contract must be the admin of `proxy`.\n     */\n    function getProxyAdmin(TransparentUpgradeableProxy proxy) public view virtual returns (address) {\n        // We need to manually run the static call since the getter cannot be flagged as view\n        // bytes4(keccak256(\"admin()\")) == 0xf851a440\n        (bool success, bytes memory returndata) = address(proxy).staticcall(hex\"f851a440\");\n        require(success);\n        return abi.decode(returndata, (address));\n    }\n\n    /**\n     * @dev Changes the admin of `proxy` to `newAdmin`.\n     *\n     * Requirements:\n     *\n     * - This contract must be the current admin of `proxy`.\n     */\n    function changeProxyAdmin(TransparentUpgradeableProxy proxy, address newAdmin) public virtual onlyOwner {\n        proxy.changeAdmin(newAdmin);\n    }\n\n    /**\n     * @dev Upgrades `proxy` to `implementation`. See {TransparentUpgradeableProxy-upgradeTo}.\n     *\n     * Requirements:\n     *\n     * - This contract must be the admin of `proxy`.\n     */\n    function upgrade(TransparentUpgradeableProxy proxy, address implementation) public virtual onlyOwner {\n        proxy.upgradeTo(implementation);\n    }\n\n    /**\n     * @dev Upgrades `proxy` to `implementation` and calls a function on the new implementation. See\n     * {TransparentUpgradeableProxy-upgradeToAndCall}.\n     *\n     * Requirements:\n     *\n     * - This contract must be the admin of `proxy`.\n     */\n    function upgradeAndCall(\n        TransparentUpgradeableProxy proxy,\n        address implementation,\n        bytes memory data\n    ) public payable virtual onlyOwner {\n        proxy.upgradeToAndCall{value: msg.value}(implementation, data);\n    }\n}\n"},"hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../ERC1967/ERC1967Proxy.sol\";\n\n/**\n * @dev This contract implements a proxy that is upgradeable by an admin.\n *\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\n * clashing], which can potentially be used in an attack, this contract uses the\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\n * things that go hand in hand:\n *\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\n * that call matches one of the admin functions exposed by the proxy itself.\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\n * \"admin cannot fallback to proxy target\".\n *\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\n * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\n * to sudden errors when trying to call a function from the proxy implementation.\n *\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\n */\ncontract TransparentUpgradeableProxy is ERC1967Proxy {\n    /**\n     * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\n     * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\n     */\n    constructor(\n        address _logic,\n        address admin_,\n        bytes memory _data\n    ) payable ERC1967Proxy(_logic, _data) {\n        assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\"eip1967.proxy.admin\")) - 1));\n        _changeAdmin(admin_);\n    }\n\n    /**\n     * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\n     */\n    modifier ifAdmin() {\n        if (msg.sender == _getAdmin()) {\n            _;\n        } else {\n            _fallback();\n        }\n    }\n\n    /**\n     * @dev Returns the current admin.\n     *\n     * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\n     *\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n     * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\n     */\n    function admin() external ifAdmin returns (address admin_) {\n        admin_ = _getAdmin();\n    }\n\n    /**\n     * @dev Returns the current implementation.\n     *\n     * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\n     *\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n     * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n     * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\n     */\n    function implementation() external ifAdmin returns (address implementation_) {\n        implementation_ = _implementation();\n    }\n\n    /**\n     * @dev Changes the admin of the proxy.\n     *\n     * Emits an {AdminChanged} event.\n     *\n     * NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.\n     */\n    function changeAdmin(address newAdmin) external virtual ifAdmin {\n        _changeAdmin(newAdmin);\n    }\n\n    /**\n     * @dev Upgrade the implementation of the proxy.\n     *\n     * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\n     */\n    function upgradeTo(address newImplementation) external ifAdmin {\n        _upgradeToAndCall(newImplementation, bytes(\"\"), false);\n    }\n\n    /**\n     * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\n     * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\n     * proxied contract.\n     *\n     * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\n     */\n    function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\n        _upgradeToAndCall(newImplementation, data, true);\n    }\n\n    /**\n     * @dev Returns the current admin.\n     */\n    function _admin() internal view virtual returns (address) {\n        return _getAdmin();\n    }\n\n    /**\n     * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\n     */\n    function _beforeFallback() internal virtual override {\n        require(msg.sender != _getAdmin(), \"TransparentUpgradeableProxy: admin cannot fallback to proxy target\");\n        super._beforeFallback();\n    }\n}\n"},"hardhat-deploy/solc_0.8/openzeppelin/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n    /**\n     * @dev Returns true if `account` is a contract.\n     *\n     * [IMPORTANT]\n     * ====\n     * It is unsafe to assume that an address for which this function returns\n     * false is an externally-owned account (EOA) and not a contract.\n     *\n     * Among others, `isContract` will return false for the following\n     * types of addresses:\n     *\n     *  - an externally-owned account\n     *  - a contract in construction\n     *  - an address where a contract will be created\n     *  - an address where a contract lived, but was destroyed\n     * ====\n     *\n     * [IMPORTANT]\n     * ====\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\n     *\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n     * constructor.\n     * ====\n     */\n    function isContract(address account) internal view returns (bool) {\n        // This method relies on extcodesize/address.code.length, which returns 0\n        // for contracts in construction, since the code is only stored at the end\n        // of the constructor execution.\n\n        return account.code.length > 0;\n    }\n\n    /**\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n     * `recipient`, forwarding all available gas and reverting on errors.\n     *\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\n     * imposed by `transfer`, making them unable to receive funds via\n     * `transfer`. {sendValue} removes this limitation.\n     *\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n     *\n     * IMPORTANT: because control is transferred to `recipient`, care must be\n     * taken to not create reentrancy vulnerabilities. Consider using\n     * {ReentrancyGuard} or the\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n     */\n    function sendValue(address payable recipient, uint256 amount) internal {\n        require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n        (bool success, ) = recipient.call{value: amount}(\"\");\n        require(success, \"Address: unable to send value, recipient may have reverted\");\n    }\n\n    /**\n     * @dev Performs a Solidity function call using a low level `call`. A\n     * plain `call` is an unsafe replacement for a function call: use this\n     * function instead.\n     *\n     * If `target` reverts with a revert reason, it is bubbled up by this\n     * function (like regular Solidity function calls).\n     *\n     * Returns the raw returned data. To convert to the expected return value,\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n     *\n     * Requirements:\n     *\n     * - `target` must be a contract.\n     * - calling `target` with `data` must not revert.\n     *\n     * _Available since v3.1._\n     */\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionCall(target, data, \"Address: low-level call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n     * `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, 0, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but also transferring `value` wei to `target`.\n     *\n     * Requirements:\n     *\n     * - the calling contract must have an ETH balance of at least `value`.\n     * - the called Solidity function must be `payable`.\n     *\n     * _Available since v3.1._\n     */\n    function functionCallWithValue(\n        address target,\n        bytes memory data,\n        uint256 value\n    ) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCallWithValue(\n        address target,\n        bytes memory data,\n        uint256 value,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        require(address(this).balance >= value, \"Address: insufficient balance for call\");\n        require(isContract(target), \"Address: call to non-contract\");\n\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\n        return verifyCallResult(success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n        return functionStaticCall(target, data, \"Address: low-level static call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal view returns (bytes memory) {\n        require(isContract(target), \"Address: static call to non-contract\");\n\n        (bool success, bytes memory returndata) = target.staticcall(data);\n        return verifyCallResult(success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a delegate call.\n     *\n     * _Available since v3.4._\n     */\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a delegate call.\n     *\n     * _Available since v3.4._\n     */\n    function functionDelegateCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        require(isContract(target), \"Address: delegate call to non-contract\");\n\n        (bool success, bytes memory returndata) = target.delegatecall(data);\n        return verifyCallResult(success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\n     * revert reason using the provided one.\n     *\n     * _Available since v4.3._\n     */\n    function verifyCallResult(\n        bool success,\n        bytes memory returndata,\n        string memory errorMessage\n    ) internal pure returns (bytes memory) {\n        if (success) {\n            return returndata;\n        } else {\n            // Look for revert reason and bubble it up if present\n            if (returndata.length > 0) {\n                // The easiest way to bubble the revert reason is using memory via assembly\n\n                assembly {\n                    let returndata_size := mload(returndata)\n                    revert(add(32, returndata), returndata_size)\n                }\n            } else {\n                revert(errorMessage);\n            }\n        }\n    }\n}\n"},"hardhat-deploy/solc_0.8/openzeppelin/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"},"hardhat-deploy/solc_0.8/openzeppelin/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (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        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        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        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        assembly {\n            r.slot := slot\n        }\n    }\n}\n"},"hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\";\n\n/**\n * @dev This contract implements a proxy that is upgradeable by an admin.\n *\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\n * clashing], which can potentially be used in an attack, this contract uses the\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\n * things that go hand in hand:\n *\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\n * that call matches one of the admin functions exposed by the proxy itself.\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\n * \"admin cannot fallback to proxy target\".\n *\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\n * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\n * to sudden errors when trying to call a function from the proxy implementation.\n *\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\n */\ncontract OptimizedTransparentUpgradeableProxy is ERC1967Proxy {\n    address internal immutable _ADMIN;\n\n    /**\n     * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\n     * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\n     */\n    constructor(\n        address _logic,\n        address admin_,\n        bytes memory _data\n    ) payable ERC1967Proxy(_logic, _data) {\n        assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\"eip1967.proxy.admin\")) - 1));\n        _ADMIN = admin_;\n\n        // still store it to work with EIP-1967\n        bytes32 slot = _ADMIN_SLOT;\n        // solhint-disable-next-line no-inline-assembly\n        assembly {\n            sstore(slot, admin_)\n        }\n        emit AdminChanged(address(0), admin_);\n    }\n\n    /**\n     * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\n     */\n    modifier ifAdmin() {\n        if (msg.sender == _getAdmin()) {\n            _;\n        } else {\n            _fallback();\n        }\n    }\n\n    /**\n     * @dev Returns the current admin.\n     *\n     * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\n     *\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n     * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\n     */\n    function admin() external ifAdmin returns (address admin_) {\n        admin_ = _getAdmin();\n    }\n\n    /**\n     * @dev Returns the current implementation.\n     *\n     * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\n     *\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n     * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n     * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\n     */\n    function implementation() external ifAdmin returns (address implementation_) {\n        implementation_ = _implementation();\n    }\n\n    /**\n     * @dev Upgrade the implementation of the proxy.\n     *\n     * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\n     */\n    function upgradeTo(address newImplementation) external ifAdmin {\n        _upgradeToAndCall(newImplementation, bytes(\"\"), false);\n    }\n\n    /**\n     * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\n     * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\n     * proxied contract.\n     *\n     * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\n     */\n    function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\n        _upgradeToAndCall(newImplementation, data, true);\n    }\n\n    /**\n     * @dev Returns the current admin.\n     */\n    function _admin() internal view virtual returns (address) {\n        return _getAdmin();\n    }\n\n    /**\n     * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\n     */\n    function _beforeFallback() internal virtual override {\n        require(msg.sender != _getAdmin(), \"TransparentUpgradeableProxy: admin cannot fallback to proxy target\");\n        super._beforeFallback();\n    }\n\n    function _getAdmin() internal view virtual override returns (address) {\n        return _ADMIN;\n    }\n}\n"}},"settings":{"optimizer":{"enabled":true,"runs":200,"details":{"yul":false}},"evmVersion":"cancun","outputSelection":{"*":{"*":["storageLayout","abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata","devdoc","userdoc","evm.gasEstimates"],"":["ast"]}},"metadata":{"useLiteralContent":true}}},"output":{"errors":[{"component":"general","errorCode":"2394","formattedMessage":"Warning: Transient storage as defined by EIP-1153 can break the composability of smart contracts: Since transient storage is cleared only at the end of the transaction and not at the end of the outermost call frame to the contract within a transaction, your contract may unintentionally misbehave when invoked multiple times in a complex transaction. To avoid this, be sure to clear all transient storage at the end of any call to your contract. The use of transient storage for reentrancy guards that are cleared at the end of the call is safe.\n   --> @venusprotocol/venus-protocol/contracts/Utils/TransientSlot.sol:108:13:\n    |\n108 |             tstore(slot, value)\n    |             ^^^^^^\n\n","message":"Transient storage as defined by EIP-1153 can break the composability of smart contracts: Since transient storage is cleared only at the end of the transaction and not at the end of the outermost call frame to the contract within a transaction, your contract may unintentionally misbehave when invoked multiple times in a complex transaction. To avoid this, be sure to clear all transient storage at the end of any call to your contract. The use of transient storage for reentrancy guards that are cleared at the end of the call is safe.","severity":"warning","sourceLocation":{"end":3222,"file":"@venusprotocol/venus-protocol/contracts/Utils/TransientSlot.sol","start":3216},"type":"Warning"}],"sources":{"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol":{"ast":{"absolutePath":"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol","exportedSymbols":{"AggregatorV3Interface":[45]},"id":46,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:0"},{"abstract":false,"baseContracts":[],"canonicalName":"AggregatorV3Interface","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":45,"linearizedBaseContracts":[45],"name":"AggregatorV3Interface","nameLocation":"67:21:0","nodeType":"ContractDefinition","nodes":[{"functionSelector":"313ce567","id":6,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"102:8:0","nodeType":"FunctionDefinition","parameters":{"id":2,"nodeType":"ParameterList","parameters":[],"src":"110:2:0"},"returnParameters":{"id":5,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6,"src":"136:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3,"name":"uint8","nodeType":"ElementaryTypeName","src":"136:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"135:7:0"},"scope":45,"src":"93:50:0","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"7284e416","id":11,"implemented":false,"kind":"function","modifiers":[],"name":"description","nameLocation":"156:11:0","nodeType":"FunctionDefinition","parameters":{"id":7,"nodeType":"ParameterList","parameters":[],"src":"167:2:0"},"returnParameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11,"src":"193:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8,"name":"string","nodeType":"ElementaryTypeName","src":"193:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"192:15:0"},"scope":45,"src":"147:61:0","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"54fd4d50","id":16,"implemented":false,"kind":"function","modifiers":[],"name":"version","nameLocation":"221:7:0","nodeType":"FunctionDefinition","parameters":{"id":12,"nodeType":"ParameterList","parameters":[],"src":"228:2:0"},"returnParameters":{"id":15,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16,"src":"254:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13,"name":"uint256","nodeType":"ElementaryTypeName","src":"254:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"253:9:0"},"scope":45,"src":"212:51:0","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"9a6fc8f5","id":31,"implemented":false,"kind":"function","modifiers":[],"name":"getRoundData","nameLocation":"276:12:0","nodeType":"FunctionDefinition","parameters":{"id":19,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18,"mutability":"mutable","name":"_roundId","nameLocation":"296:8:0","nodeType":"VariableDeclaration","scope":31,"src":"289:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":17,"name":"uint80","nodeType":"ElementaryTypeName","src":"289:6:0","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"}],"src":"288:17:0"},"returnParameters":{"id":30,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21,"mutability":"mutable","name":"roundId","nameLocation":"355:7:0","nodeType":"VariableDeclaration","scope":31,"src":"348:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":20,"name":"uint80","nodeType":"ElementaryTypeName","src":"348:6:0","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"},{"constant":false,"id":23,"mutability":"mutable","name":"answer","nameLocation":"377:6:0","nodeType":"VariableDeclaration","scope":31,"src":"370:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":22,"name":"int256","nodeType":"ElementaryTypeName","src":"370:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":25,"mutability":"mutable","name":"startedAt","nameLocation":"399:9:0","nodeType":"VariableDeclaration","scope":31,"src":"391:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24,"name":"uint256","nodeType":"ElementaryTypeName","src":"391:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":27,"mutability":"mutable","name":"updatedAt","nameLocation":"424:9:0","nodeType":"VariableDeclaration","scope":31,"src":"416:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26,"name":"uint256","nodeType":"ElementaryTypeName","src":"416:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":29,"mutability":"mutable","name":"answeredInRound","nameLocation":"448:15:0","nodeType":"VariableDeclaration","scope":31,"src":"441:22:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":28,"name":"uint80","nodeType":"ElementaryTypeName","src":"441:6:0","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"}],"src":"340:129:0"},"scope":45,"src":"267:203:0","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"feaf968c","id":44,"implemented":false,"kind":"function","modifiers":[],"name":"latestRoundData","nameLocation":"483:15:0","nodeType":"FunctionDefinition","parameters":{"id":32,"nodeType":"ParameterList","parameters":[],"src":"498:2:0"},"returnParameters":{"id":43,"nodeType":"ParameterList","parameters":[{"constant":false,"id":34,"mutability":"mutable","name":"roundId","nameLocation":"550:7:0","nodeType":"VariableDeclaration","scope":44,"src":"543:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":33,"name":"uint80","nodeType":"ElementaryTypeName","src":"543:6:0","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"},{"constant":false,"id":36,"mutability":"mutable","name":"answer","nameLocation":"572:6:0","nodeType":"VariableDeclaration","scope":44,"src":"565:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":35,"name":"int256","nodeType":"ElementaryTypeName","src":"565:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":38,"mutability":"mutable","name":"startedAt","nameLocation":"594:9:0","nodeType":"VariableDeclaration","scope":44,"src":"586:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37,"name":"uint256","nodeType":"ElementaryTypeName","src":"586:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":40,"mutability":"mutable","name":"updatedAt","nameLocation":"619:9:0","nodeType":"VariableDeclaration","scope":44,"src":"611:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39,"name":"uint256","nodeType":"ElementaryTypeName","src":"611:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":42,"mutability":"mutable","name":"answeredInRound","nameLocation":"643:15:0","nodeType":"VariableDeclaration","scope":44,"src":"636:22:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":41,"name":"uint80","nodeType":"ElementaryTypeName","src":"636:6:0","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"}],"src":"535:129:0"},"scope":45,"src":"474:191:0","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":46,"src":"57:610:0","usedErrors":[],"usedEvents":[]}],"src":"32:636:0"},"id":0},"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol","exportedSymbols":{"ContextUpgradeable":[1410],"Initializable":[454],"Ownable2StepUpgradeable":[152],"OwnableUpgradeable":[285]},"id":153,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":47,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"107:23:1"},{"absolutePath":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","file":"./OwnableUpgradeable.sol","id":48,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":153,"sourceUnit":286,"src":"132:34:1","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":50,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":153,"sourceUnit":455,"src":"167:63:1","symbolAliases":[{"foreign":{"id":49,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":454,"src":"175:13:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":52,"name":"Initializable","nameLocations":["719:13:1"],"nodeType":"IdentifierPath","referencedDeclaration":454,"src":"719:13:1"},"id":53,"nodeType":"InheritanceSpecifier","src":"719:13:1"},{"baseName":{"id":54,"name":"OwnableUpgradeable","nameLocations":["734:18:1"],"nodeType":"IdentifierPath","referencedDeclaration":285,"src":"734:18:1"},"id":55,"nodeType":"InheritanceSpecifier","src":"734:18:1"}],"canonicalName":"Ownable2StepUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":51,"nodeType":"StructuredDocumentation","src":"232:441:1","text":" @dev Contract module which provides access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership} and {acceptOwnership}.\n This module is used through inheritance. It will make available all functions\n from parent (Ownable)."},"fullyImplemented":true,"id":152,"linearizedBaseContracts":[152,285,1410,454],"name":"Ownable2StepUpgradeable","nameLocation":"692:23:1","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":57,"mutability":"mutable","name":"_pendingOwner","nameLocation":"775:13:1","nodeType":"VariableDeclaration","scope":152,"src":"759:29:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":56,"name":"address","nodeType":"ElementaryTypeName","src":"759:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"anonymous":false,"eventSelector":"38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700","id":63,"name":"OwnershipTransferStarted","nameLocation":"801:24:1","nodeType":"EventDefinition","parameters":{"id":62,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"842:13:1","nodeType":"VariableDeclaration","scope":63,"src":"826:29:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58,"name":"address","nodeType":"ElementaryTypeName","src":"826:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"873:8:1","nodeType":"VariableDeclaration","scope":63,"src":"857:24:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60,"name":"address","nodeType":"ElementaryTypeName","src":"857:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"825:57:1"},"src":"795:88:1"},{"body":{"id":71,"nodeType":"Block","src":"946:43:1","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":68,"name":"__Ownable_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":191,"src":"956:24:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":69,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"956:26:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":70,"nodeType":"ExpressionStatement","src":"956:26:1"}]},"id":72,"implemented":true,"kind":"function","modifiers":[{"id":66,"kind":"modifierInvocation","modifierName":{"id":65,"name":"onlyInitializing","nameLocations":["929:16:1"],"nodeType":"IdentifierPath","referencedDeclaration":399,"src":"929:16:1"},"nodeType":"ModifierInvocation","src":"929:16:1"}],"name":"__Ownable2Step_init","nameLocation":"898:19:1","nodeType":"FunctionDefinition","parameters":{"id":64,"nodeType":"ParameterList","parameters":[],"src":"917:2:1"},"returnParameters":{"id":67,"nodeType":"ParameterList","parameters":[],"src":"946:0:1"},"scope":152,"src":"889:100:1","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":77,"nodeType":"Block","src":"1062:7:1","statements":[]},"id":78,"implemented":true,"kind":"function","modifiers":[{"id":75,"kind":"modifierInvocation","modifierName":{"id":74,"name":"onlyInitializing","nameLocations":["1045:16:1"],"nodeType":"IdentifierPath","referencedDeclaration":399,"src":"1045:16:1"},"nodeType":"ModifierInvocation","src":"1045:16:1"}],"name":"__Ownable2Step_init_unchained","nameLocation":"1004:29:1","nodeType":"FunctionDefinition","parameters":{"id":73,"nodeType":"ParameterList","parameters":[],"src":"1033:2:1"},"returnParameters":{"id":76,"nodeType":"ParameterList","parameters":[],"src":"1062:0:1"},"scope":152,"src":"995:74:1","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":86,"nodeType":"Block","src":"1206:37:1","statements":[{"expression":{"id":84,"name":"_pendingOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":57,"src":"1223:13:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":83,"id":85,"nodeType":"Return","src":"1216:20:1"}]},"documentation":{"id":79,"nodeType":"StructuredDocumentation","src":"1074:65:1","text":" @dev Returns the address of the pending owner."},"functionSelector":"e30c3978","id":87,"implemented":true,"kind":"function","modifiers":[],"name":"pendingOwner","nameLocation":"1153:12:1","nodeType":"FunctionDefinition","parameters":{"id":80,"nodeType":"ParameterList","parameters":[],"src":"1165:2:1"},"returnParameters":{"id":83,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":87,"src":"1197:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81,"name":"address","nodeType":"ElementaryTypeName","src":"1197:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1196:9:1"},"scope":152,"src":"1144:99:1","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[259],"body":{"id":106,"nodeType":"Block","src":"1515:99:1","statements":[{"expression":{"id":98,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":96,"name":"_pendingOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":57,"src":"1525:13:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":97,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90,"src":"1541:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1525:24:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":99,"nodeType":"ExpressionStatement","src":"1525:24:1"},{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":101,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":208,"src":"1589:5:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1589:7:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":103,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90,"src":"1598:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":100,"name":"OwnershipTransferStarted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":63,"src":"1564:24:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1564:43:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":105,"nodeType":"EmitStatement","src":"1559:48:1"}]},"documentation":{"id":88,"nodeType":"StructuredDocumentation","src":"1249:182:1","text":" @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.\n Can only be called by the current owner."},"functionSelector":"f2fde38b","id":107,"implemented":true,"kind":"function","modifiers":[{"id":94,"kind":"modifierInvocation","modifierName":{"id":93,"name":"onlyOwner","nameLocations":["1505:9:1"],"nodeType":"IdentifierPath","referencedDeclaration":199,"src":"1505:9:1"},"nodeType":"ModifierInvocation","src":"1505:9:1"}],"name":"transferOwnership","nameLocation":"1445:17:1","nodeType":"FunctionDefinition","overrides":{"id":92,"nodeType":"OverrideSpecifier","overrides":[],"src":"1496:8:1"},"parameters":{"id":91,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90,"mutability":"mutable","name":"newOwner","nameLocation":"1471:8:1","nodeType":"VariableDeclaration","scope":107,"src":"1463:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89,"name":"address","nodeType":"ElementaryTypeName","src":"1463:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1462:18:1"},"returnParameters":{"id":95,"nodeType":"ParameterList","parameters":[],"src":"1515:0:1"},"scope":152,"src":"1436:178:1","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[279],"body":{"id":123,"nodeType":"Block","src":"1870:81:1","statements":[{"expression":{"id":115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"1880:20:1","subExpression":{"id":114,"name":"_pendingOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":57,"src":"1887:13:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":116,"nodeType":"ExpressionStatement","src":"1880:20:1"},{"expression":{"arguments":[{"id":120,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"1935:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":117,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"1910:5:1","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_Ownable2StepUpgradeable_$152_$","typeString":"type(contract super Ownable2StepUpgradeable)"}},"id":119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1916:18:1","memberName":"_transferOwnership","nodeType":"MemberAccess","referencedDeclaration":279,"src":"1910:24:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":121,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1910:34:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":122,"nodeType":"ExpressionStatement","src":"1910:34:1"}]},"documentation":{"id":108,"nodeType":"StructuredDocumentation","src":"1620:173:1","text":" @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.\n Internal function without access restriction."},"id":124,"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"1807:18:1","nodeType":"FunctionDefinition","overrides":{"id":112,"nodeType":"OverrideSpecifier","overrides":[],"src":"1861:8:1"},"parameters":{"id":111,"nodeType":"ParameterList","parameters":[{"constant":false,"id":110,"mutability":"mutable","name":"newOwner","nameLocation":"1834:8:1","nodeType":"VariableDeclaration","scope":124,"src":"1826:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":109,"name":"address","nodeType":"ElementaryTypeName","src":"1826:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1825:18:1"},"returnParameters":{"id":113,"nodeType":"ParameterList","parameters":[],"src":"1870:0:1"},"scope":152,"src":"1798:153:1","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":145,"nodeType":"Block","src":"2073:170:1","statements":[{"assignments":[129],"declarations":[{"constant":false,"id":129,"mutability":"mutable","name":"sender","nameLocation":"2091:6:1","nodeType":"VariableDeclaration","scope":145,"src":"2083:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":128,"name":"address","nodeType":"ElementaryTypeName","src":"2083:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":132,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":130,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1387,"src":"2100:10:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2100:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2083:29:1"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":134,"name":"pendingOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87,"src":"2130:12:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2130:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":136,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":129,"src":"2148:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2130:24:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206e6577206f776e6572","id":138,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2156:43:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_225559eb8402045bea7ff07c35d0ad8c0547830223ac1c21d44fb948d6896ebc","typeString":"literal_string \"Ownable2Step: caller is not the new owner\""},"value":"Ownable2Step: caller is not the new owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_225559eb8402045bea7ff07c35d0ad8c0547830223ac1c21d44fb948d6896ebc","typeString":"literal_string \"Ownable2Step: caller is not the new owner\""}],"id":133,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2122:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":139,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2122:78:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":140,"nodeType":"ExpressionStatement","src":"2122:78:1"},{"expression":{"arguments":[{"id":142,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":129,"src":"2229:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":141,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[124],"referencedDeclaration":124,"src":"2210:18:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2210:26:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":144,"nodeType":"ExpressionStatement","src":"2210:26:1"}]},"documentation":{"id":125,"nodeType":"StructuredDocumentation","src":"1957:69:1","text":" @dev The new owner accepts the ownership transfer."},"functionSelector":"79ba5097","id":146,"implemented":true,"kind":"function","modifiers":[],"name":"acceptOwnership","nameLocation":"2040:15:1","nodeType":"FunctionDefinition","parameters":{"id":126,"nodeType":"ParameterList","parameters":[],"src":"2055:2:1"},"returnParameters":{"id":127,"nodeType":"ParameterList","parameters":[],"src":"2073:0:1"},"scope":152,"src":"2031:212:1","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"constant":false,"documentation":{"id":147,"nodeType":"StructuredDocumentation","src":"2249:254:1","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":151,"mutability":"mutable","name":"__gap","nameLocation":"2528:5:1","nodeType":"VariableDeclaration","scope":152,"src":"2508:25:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage","typeString":"uint256[49]"},"typeName":{"baseType":{"id":148,"name":"uint256","nodeType":"ElementaryTypeName","src":"2508:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":150,"length":{"hexValue":"3439","id":149,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2516:2:1","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"49"},"nodeType":"ArrayTypeName","src":"2508:11:1","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage_ptr","typeString":"uint256[49]"}},"visibility":"private"}],"scope":153,"src":"674:1862:1","usedErrors":[],"usedEvents":[63,170,300]}],"src":"107:2430:1"},"id":1},"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","exportedSymbols":{"ContextUpgradeable":[1410],"Initializable":[454],"OwnableUpgradeable":[285]},"id":286,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":154,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"102:23:2"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","file":"../utils/ContextUpgradeable.sol","id":155,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":286,"sourceUnit":1411,"src":"127:41:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":157,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":286,"sourceUnit":455,"src":"169:63:2","symbolAliases":[{"foreign":{"id":156,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":454,"src":"177:13:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":159,"name":"Initializable","nameLocations":["769:13:2"],"nodeType":"IdentifierPath","referencedDeclaration":454,"src":"769:13:2"},"id":160,"nodeType":"InheritanceSpecifier","src":"769:13:2"},{"baseName":{"id":161,"name":"ContextUpgradeable","nameLocations":["784:18:2"],"nodeType":"IdentifierPath","referencedDeclaration":1410,"src":"784:18:2"},"id":162,"nodeType":"InheritanceSpecifier","src":"784:18:2"}],"canonicalName":"OwnableUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":158,"nodeType":"StructuredDocumentation","src":"234:494:2","text":" @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 By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\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."},"fullyImplemented":true,"id":285,"linearizedBaseContracts":[285,1410,454],"name":"OwnableUpgradeable","nameLocation":"747:18:2","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":164,"mutability":"mutable","name":"_owner","nameLocation":"825:6:2","nodeType":"VariableDeclaration","scope":285,"src":"809:22:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":163,"name":"address","nodeType":"ElementaryTypeName","src":"809:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"anonymous":false,"eventSelector":"8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","id":170,"name":"OwnershipTransferred","nameLocation":"844:20:2","nodeType":"EventDefinition","parameters":{"id":169,"nodeType":"ParameterList","parameters":[{"constant":false,"id":166,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"881:13:2","nodeType":"VariableDeclaration","scope":170,"src":"865:29:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":165,"name":"address","nodeType":"ElementaryTypeName","src":"865:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":168,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"912:8:2","nodeType":"VariableDeclaration","scope":170,"src":"896:24:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":167,"name":"address","nodeType":"ElementaryTypeName","src":"896:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"864:57:2"},"src":"838:84:2"},{"body":{"id":179,"nodeType":"Block","src":"1076:43:2","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":176,"name":"__Ownable_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":191,"src":"1086:24:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1086:26:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":178,"nodeType":"ExpressionStatement","src":"1086:26:2"}]},"documentation":{"id":171,"nodeType":"StructuredDocumentation","src":"928:91:2","text":" @dev Initializes the contract setting the deployer as the initial owner."},"id":180,"implemented":true,"kind":"function","modifiers":[{"id":174,"kind":"modifierInvocation","modifierName":{"id":173,"name":"onlyInitializing","nameLocations":["1059:16:2"],"nodeType":"IdentifierPath","referencedDeclaration":399,"src":"1059:16:2"},"nodeType":"ModifierInvocation","src":"1059:16:2"}],"name":"__Ownable_init","nameLocation":"1033:14:2","nodeType":"FunctionDefinition","parameters":{"id":172,"nodeType":"ParameterList","parameters":[],"src":"1047:2:2"},"returnParameters":{"id":175,"nodeType":"ParameterList","parameters":[],"src":"1076:0:2"},"scope":285,"src":"1024:95:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":190,"nodeType":"Block","src":"1187:49:2","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":186,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1387,"src":"1216:10:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1216:12:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":185,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":279,"src":"1197:18:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1197:32:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":189,"nodeType":"ExpressionStatement","src":"1197:32:2"}]},"id":191,"implemented":true,"kind":"function","modifiers":[{"id":183,"kind":"modifierInvocation","modifierName":{"id":182,"name":"onlyInitializing","nameLocations":["1170:16:2"],"nodeType":"IdentifierPath","referencedDeclaration":399,"src":"1170:16:2"},"nodeType":"ModifierInvocation","src":"1170:16:2"}],"name":"__Ownable_init_unchained","nameLocation":"1134:24:2","nodeType":"FunctionDefinition","parameters":{"id":181,"nodeType":"ParameterList","parameters":[],"src":"1158:2:2"},"returnParameters":{"id":184,"nodeType":"ParameterList","parameters":[],"src":"1187:0:2"},"scope":285,"src":"1125:111:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":198,"nodeType":"Block","src":"1345:41:2","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":194,"name":"_checkOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":222,"src":"1355:11:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1355:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":196,"nodeType":"ExpressionStatement","src":"1355:13:2"},{"id":197,"nodeType":"PlaceholderStatement","src":"1378:1:2"}]},"documentation":{"id":192,"nodeType":"StructuredDocumentation","src":"1242:77:2","text":" @dev Throws if called by any account other than the owner."},"id":199,"name":"onlyOwner","nameLocation":"1333:9:2","nodeType":"ModifierDefinition","parameters":{"id":193,"nodeType":"ParameterList","parameters":[],"src":"1342:2:2"},"src":"1324:62:2","virtual":false,"visibility":"internal"},{"body":{"id":207,"nodeType":"Block","src":"1517:30:2","statements":[{"expression":{"id":205,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":164,"src":"1534:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":204,"id":206,"nodeType":"Return","src":"1527:13:2"}]},"documentation":{"id":200,"nodeType":"StructuredDocumentation","src":"1392:65:2","text":" @dev Returns the address of the current owner."},"functionSelector":"8da5cb5b","id":208,"implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"1471:5:2","nodeType":"FunctionDefinition","parameters":{"id":201,"nodeType":"ParameterList","parameters":[],"src":"1476:2:2"},"returnParameters":{"id":204,"nodeType":"ParameterList","parameters":[{"constant":false,"id":203,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":208,"src":"1508:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":202,"name":"address","nodeType":"ElementaryTypeName","src":"1508:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1507:9:2"},"scope":285,"src":"1462:85:2","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":221,"nodeType":"Block","src":"1665:85:2","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":213,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":208,"src":"1683:5:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1683:7:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":215,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1387,"src":"1694:10:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1694:12:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1683:23:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","id":218,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1708:34:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""},"value":"Ownable: caller is not the owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""}],"id":212,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1675:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1675:68:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":220,"nodeType":"ExpressionStatement","src":"1675:68:2"}]},"documentation":{"id":209,"nodeType":"StructuredDocumentation","src":"1553:62:2","text":" @dev Throws if the sender is not the owner."},"id":222,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOwner","nameLocation":"1629:11:2","nodeType":"FunctionDefinition","parameters":{"id":210,"nodeType":"ParameterList","parameters":[],"src":"1640:2:2"},"returnParameters":{"id":211,"nodeType":"ParameterList","parameters":[],"src":"1665:0:2"},"scope":285,"src":"1620:130:2","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":235,"nodeType":"Block","src":"2139:47:2","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":231,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2176:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":230,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2168:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":229,"name":"address","nodeType":"ElementaryTypeName","src":"2168:7:2","typeDescriptions":{}}},"id":232,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2168:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":228,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":279,"src":"2149:18:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2149:30:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":234,"nodeType":"ExpressionStatement","src":"2149:30:2"}]},"documentation":{"id":223,"nodeType":"StructuredDocumentation","src":"1756:324:2","text":" @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby disabling any functionality that is only available to the owner."},"functionSelector":"715018a6","id":236,"implemented":true,"kind":"function","modifiers":[{"id":226,"kind":"modifierInvocation","modifierName":{"id":225,"name":"onlyOwner","nameLocations":["2129:9:2"],"nodeType":"IdentifierPath","referencedDeclaration":199,"src":"2129:9:2"},"nodeType":"ModifierInvocation","src":"2129:9:2"}],"name":"renounceOwnership","nameLocation":"2094:17:2","nodeType":"FunctionDefinition","parameters":{"id":224,"nodeType":"ParameterList","parameters":[],"src":"2111:2:2"},"returnParameters":{"id":227,"nodeType":"ParameterList","parameters":[],"src":"2139:0:2"},"scope":285,"src":"2085:101:2","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":258,"nodeType":"Block","src":"2405:128:2","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":245,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":239,"src":"2423:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":248,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2443:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":247,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2435:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":246,"name":"address","nodeType":"ElementaryTypeName","src":"2435:7:2","typeDescriptions":{}}},"id":249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2435:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2423:22:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373","id":251,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2447:40:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","typeString":"literal_string \"Ownable: new owner is the zero address\""},"value":"Ownable: new owner is the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","typeString":"literal_string \"Ownable: new owner is the zero address\""}],"id":244,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2415:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2415:73:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":253,"nodeType":"ExpressionStatement","src":"2415:73:2"},{"expression":{"arguments":[{"id":255,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":239,"src":"2517:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":254,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":279,"src":"2498:18:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2498:28:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":257,"nodeType":"ExpressionStatement","src":"2498:28:2"}]},"documentation":{"id":237,"nodeType":"StructuredDocumentation","src":"2192:138:2","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."},"functionSelector":"f2fde38b","id":259,"implemented":true,"kind":"function","modifiers":[{"id":242,"kind":"modifierInvocation","modifierName":{"id":241,"name":"onlyOwner","nameLocations":["2395:9:2"],"nodeType":"IdentifierPath","referencedDeclaration":199,"src":"2395:9:2"},"nodeType":"ModifierInvocation","src":"2395:9:2"}],"name":"transferOwnership","nameLocation":"2344:17:2","nodeType":"FunctionDefinition","parameters":{"id":240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":239,"mutability":"mutable","name":"newOwner","nameLocation":"2370:8:2","nodeType":"VariableDeclaration","scope":259,"src":"2362:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":238,"name":"address","nodeType":"ElementaryTypeName","src":"2362:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2361:18:2"},"returnParameters":{"id":243,"nodeType":"ParameterList","parameters":[],"src":"2405:0:2"},"scope":285,"src":"2335:198:2","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":278,"nodeType":"Block","src":"2750:124:2","statements":[{"assignments":[266],"declarations":[{"constant":false,"id":266,"mutability":"mutable","name":"oldOwner","nameLocation":"2768:8:2","nodeType":"VariableDeclaration","scope":278,"src":"2760:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":265,"name":"address","nodeType":"ElementaryTypeName","src":"2760:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":268,"initialValue":{"id":267,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":164,"src":"2779:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2760:25:2"},{"expression":{"id":271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":269,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":164,"src":"2795:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":270,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":262,"src":"2804:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2795:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":272,"nodeType":"ExpressionStatement","src":"2795:17:2"},{"eventCall":{"arguments":[{"id":274,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":266,"src":"2848:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":275,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":262,"src":"2858:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":273,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":170,"src":"2827:20:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2827:40:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":277,"nodeType":"EmitStatement","src":"2822:45:2"}]},"documentation":{"id":260,"nodeType":"StructuredDocumentation","src":"2539:143:2","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."},"id":279,"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"2696:18:2","nodeType":"FunctionDefinition","parameters":{"id":263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":262,"mutability":"mutable","name":"newOwner","nameLocation":"2723:8:2","nodeType":"VariableDeclaration","scope":279,"src":"2715:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":261,"name":"address","nodeType":"ElementaryTypeName","src":"2715:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2714:18:2"},"returnParameters":{"id":264,"nodeType":"ParameterList","parameters":[],"src":"2750:0:2"},"scope":285,"src":"2687:187:2","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"constant":false,"documentation":{"id":280,"nodeType":"StructuredDocumentation","src":"2880:254:2","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":284,"mutability":"mutable","name":"__gap","nameLocation":"3159:5:2","nodeType":"VariableDeclaration","scope":285,"src":"3139:25:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage","typeString":"uint256[49]"},"typeName":{"baseType":{"id":281,"name":"uint256","nodeType":"ElementaryTypeName","src":"3139:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":283,"length":{"hexValue":"3439","id":282,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3147:2:2","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"49"},"nodeType":"ArrayTypeName","src":"3139:11:2","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage_ptr","typeString":"uint256[49]"}},"visibility":"private"}],"scope":286,"src":"729:2438:2","usedErrors":[],"usedEvents":[170,300]}],"src":"102:3066:2"},"id":2},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","exportedSymbols":{"AddressUpgradeable":[1359],"Initializable":[454]},"id":455,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":287,"literals":["solidity","^","0.8",".2"],"nodeType":"PragmaDirective","src":"113:23:3"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol","file":"../../utils/AddressUpgradeable.sol","id":288,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":455,"sourceUnit":1360,"src":"138:44:3","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[],"canonicalName":"Initializable","contractDependencies":[],"contractKind":"contract","documentation":{"id":289,"nodeType":"StructuredDocumentation","src":"184:2209:3","text":" @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n case an upgrade adds a module that needs to be initialized.\n For example:\n [.hljs-theme-light.nopadding]\n ```solidity\n contract MyToken is ERC20Upgradeable {\n     function initialize() initializer public {\n         __ERC20_init(\"MyToken\", \"MTK\");\n     }\n }\n contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n     function initializeV2() reinitializer(2) public {\n         __ERC20Permit_init(\"MyToken\");\n     }\n }\n ```\n TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n [CAUTION]\n ====\n Avoid leaving a contract uninitialized.\n An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n [.hljs-theme-light.nopadding]\n ```\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n     _disableInitializers();\n }\n ```\n ===="},"fullyImplemented":true,"id":454,"linearizedBaseContracts":[454],"name":"Initializable","nameLocation":"2412:13:3","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":290,"nodeType":"StructuredDocumentation","src":"2432:109:3","text":" @dev Indicates that the contract has been initialized.\n @custom:oz-retyped-from bool"},"id":292,"mutability":"mutable","name":"_initialized","nameLocation":"2560:12:3","nodeType":"VariableDeclaration","scope":454,"src":"2546:26:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":291,"name":"uint8","nodeType":"ElementaryTypeName","src":"2546:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"private"},{"constant":false,"documentation":{"id":293,"nodeType":"StructuredDocumentation","src":"2579:91:3","text":" @dev Indicates that the contract is in the process of being initialized."},"id":295,"mutability":"mutable","name":"_initializing","nameLocation":"2688:13:3","nodeType":"VariableDeclaration","scope":454,"src":"2675:26:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":294,"name":"bool","nodeType":"ElementaryTypeName","src":"2675:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"anonymous":false,"documentation":{"id":296,"nodeType":"StructuredDocumentation","src":"2708:90:3","text":" @dev Triggered when the contract has been initialized or reinitialized."},"eventSelector":"7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498","id":300,"name":"Initialized","nameLocation":"2809:11:3","nodeType":"EventDefinition","parameters":{"id":299,"nodeType":"ParameterList","parameters":[{"constant":false,"id":298,"indexed":false,"mutability":"mutable","name":"version","nameLocation":"2827:7:3","nodeType":"VariableDeclaration","scope":300,"src":"2821:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":297,"name":"uint8","nodeType":"ElementaryTypeName","src":"2821:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2820:15:3"},"src":"2803:33:3"},{"body":{"id":355,"nodeType":"Block","src":"3269:483:3","statements":[{"assignments":[304],"declarations":[{"constant":false,"id":304,"mutability":"mutable","name":"isTopLevelCall","nameLocation":"3284:14:3","nodeType":"VariableDeclaration","scope":355,"src":"3279:19:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":303,"name":"bool","nodeType":"ElementaryTypeName","src":"3279:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":307,"initialValue":{"id":306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3301:14:3","subExpression":{"id":305,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"3302:13:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"3279:36:3"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":309,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":304,"src":"3347:14:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":310,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":292,"src":"3365:12:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"31","id":311,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3380:1:3","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3365:16:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3347:34:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":314,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3346:36:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3387:45:3","subExpression":{"arguments":[{"arguments":[{"id":319,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3426:4:3","typeDescriptions":{"typeIdentifier":"t_contract$_Initializable_$454","typeString":"contract Initializable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Initializable_$454","typeString":"contract Initializable"}],"id":318,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3418:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":317,"name":"address","nodeType":"ElementaryTypeName","src":"3418:7:3","typeDescriptions":{}}},"id":320,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3418:13:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":315,"name":"AddressUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"3388:18:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressUpgradeable_$1359_$","typeString":"type(library AddressUpgradeable)"}},"id":316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3407:10:3","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":1047,"src":"3388:29:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3388:44:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":323,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":292,"src":"3436:12:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":324,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3452:1:3","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3436:17:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3387:66:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":327,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3386:68:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3346:108:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564","id":329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3468:48:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""},"value":"Initializable: contract is already initialized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""}],"id":308,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"3325:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3325:201:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":331,"nodeType":"ExpressionStatement","src":"3325:201:3"},{"expression":{"id":334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":332,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":292,"src":"3536:12:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":333,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3551:1:3","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3536:16:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":335,"nodeType":"ExpressionStatement","src":"3536:16:3"},{"condition":{"id":336,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":304,"src":"3566:14:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":342,"nodeType":"IfStatement","src":"3562:65:3","trueBody":{"id":341,"nodeType":"Block","src":"3582:45:3","statements":[{"expression":{"id":339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":337,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"3596:13:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3612:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"3596:20:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":340,"nodeType":"ExpressionStatement","src":"3596:20:3"}]}},{"id":343,"nodeType":"PlaceholderStatement","src":"3636:1:3"},{"condition":{"id":344,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":304,"src":"3651:14:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":354,"nodeType":"IfStatement","src":"3647:99:3","trueBody":{"id":353,"nodeType":"Block","src":"3667:79:3","statements":[{"expression":{"id":347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":345,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"3681:13:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3697:5:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"3681:21:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":348,"nodeType":"ExpressionStatement","src":"3681:21:3"},{"eventCall":{"arguments":[{"hexValue":"31","id":350,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3733:1:3","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":349,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":300,"src":"3721:11:3","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3721:14:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":352,"nodeType":"EmitStatement","src":"3716:19:3"}]}}]},"documentation":{"id":301,"nodeType":"StructuredDocumentation","src":"2842:399:3","text":" @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n `onlyInitializing` functions can be used to initialize parent contracts.\n Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\n constructor.\n Emits an {Initialized} event."},"id":356,"name":"initializer","nameLocation":"3255:11:3","nodeType":"ModifierDefinition","parameters":{"id":302,"nodeType":"ParameterList","parameters":[],"src":"3266:2:3"},"src":"3246:506:3","virtual":false,"visibility":"internal"},{"body":{"id":388,"nodeType":"Block","src":"4863:255:3","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4881:14:3","subExpression":{"id":362,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"4882:13:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":364,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":292,"src":"4899:12:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":365,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":359,"src":"4914:7:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4899:22:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4881:40:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564","id":368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4923:48:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""},"value":"Initializable: contract is already initialized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""}],"id":361,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4873:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4873:99:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":370,"nodeType":"ExpressionStatement","src":"4873:99:3"},{"expression":{"id":373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":371,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":292,"src":"4982:12:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":372,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":359,"src":"4997:7:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4982:22:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":374,"nodeType":"ExpressionStatement","src":"4982:22:3"},{"expression":{"id":377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":375,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"5014:13:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":376,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5030:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5014:20:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":378,"nodeType":"ExpressionStatement","src":"5014:20:3"},{"id":379,"nodeType":"PlaceholderStatement","src":"5044:1:3"},{"expression":{"id":382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":380,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"5055:13:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5071:5:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"5055:21:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":383,"nodeType":"ExpressionStatement","src":"5055:21:3"},{"eventCall":{"arguments":[{"id":385,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":359,"src":"5103:7:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":384,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":300,"src":"5091:11:3","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":386,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5091:20:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":387,"nodeType":"EmitStatement","src":"5086:25:3"}]},"documentation":{"id":357,"nodeType":"StructuredDocumentation","src":"3758:1062:3","text":" @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n used to initialize parent contracts.\n A reinitializer may be used after the original initialization step. This is essential to configure modules that\n are added through upgrades and that require initialization.\n When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n cannot be nested. If one is invoked in the context of another, execution will revert.\n Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n a contract, executing them in the right order is up to the developer or operator.\n WARNING: setting the version to 255 will prevent any future reinitialization.\n Emits an {Initialized} event."},"id":389,"name":"reinitializer","nameLocation":"4834:13:3","nodeType":"ModifierDefinition","parameters":{"id":360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":359,"mutability":"mutable","name":"version","nameLocation":"4854:7:3","nodeType":"VariableDeclaration","scope":389,"src":"4848:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":358,"name":"uint8","nodeType":"ElementaryTypeName","src":"4848:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"4847:15:3"},"src":"4825:293:3","virtual":false,"visibility":"internal"},{"body":{"id":398,"nodeType":"Block","src":"5356:97:3","statements":[{"expression":{"arguments":[{"id":393,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"5374:13:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f7420696e697469616c697a696e67","id":394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5389:45:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b","typeString":"literal_string \"Initializable: contract is not initializing\""},"value":"Initializable: contract is not initializing"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b","typeString":"literal_string \"Initializable: contract is not initializing\""}],"id":392,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5366:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5366:69:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":396,"nodeType":"ExpressionStatement","src":"5366:69:3"},{"id":397,"nodeType":"PlaceholderStatement","src":"5445:1:3"}]},"documentation":{"id":390,"nodeType":"StructuredDocumentation","src":"5124:199:3","text":" @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n {initializer} and {reinitializer} modifiers, directly or indirectly."},"id":399,"name":"onlyInitializing","nameLocation":"5337:16:3","nodeType":"ModifierDefinition","parameters":{"id":391,"nodeType":"ParameterList","parameters":[],"src":"5353:2:3"},"src":"5328:125:3","virtual":false,"visibility":"internal"},{"body":{"id":434,"nodeType":"Block","src":"5988:231:3","statements":[{"expression":{"arguments":[{"id":405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6006:14:3","subExpression":{"id":404,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"6007:13:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469616c697a696e67","id":406,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6022:41:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a","typeString":"literal_string \"Initializable: contract is initializing\""},"value":"Initializable: contract is initializing"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a","typeString":"literal_string \"Initializable: contract is initializing\""}],"id":403,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5998:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5998:66:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":408,"nodeType":"ExpressionStatement","src":"5998:66:3"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":409,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":292,"src":"6078:12:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":412,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6099:5:3","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":411,"name":"uint8","nodeType":"ElementaryTypeName","src":"6099:5:3","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":410,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6094:4:3","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6094:11:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":414,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6106:3:3","memberName":"max","nodeType":"MemberAccess","src":"6094:15:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6078:31:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":433,"nodeType":"IfStatement","src":"6074:139:3","trueBody":{"id":432,"nodeType":"Block","src":"6111:102:3","statements":[{"expression":{"id":422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":416,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":292,"src":"6125:12:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"arguments":[{"id":419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6145:5:3","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":418,"name":"uint8","nodeType":"ElementaryTypeName","src":"6145:5:3","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":417,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6140:4:3","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6140:11:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":421,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6152:3:3","memberName":"max","nodeType":"MemberAccess","src":"6140:15:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6125:30:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":423,"nodeType":"ExpressionStatement","src":"6125:30:3"},{"eventCall":{"arguments":[{"expression":{"arguments":[{"id":427,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6191:5:3","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":426,"name":"uint8","nodeType":"ElementaryTypeName","src":"6191:5:3","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":425,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6186:4:3","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6186:11:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":429,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6198:3:3","memberName":"max","nodeType":"MemberAccess","src":"6186:15:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":424,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":300,"src":"6174:11:3","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":430,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6174:28:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":431,"nodeType":"EmitStatement","src":"6169:33:3"}]}}]},"documentation":{"id":400,"nodeType":"StructuredDocumentation","src":"5459:475:3","text":" @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n through proxies.\n Emits an {Initialized} event the first time it is successfully executed."},"id":435,"implemented":true,"kind":"function","modifiers":[],"name":"_disableInitializers","nameLocation":"5948:20:3","nodeType":"FunctionDefinition","parameters":{"id":401,"nodeType":"ParameterList","parameters":[],"src":"5968:2:3"},"returnParameters":{"id":402,"nodeType":"ParameterList","parameters":[],"src":"5988:0:3"},"scope":454,"src":"5939:280:3","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":443,"nodeType":"Block","src":"6393:36:3","statements":[{"expression":{"id":441,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":292,"src":"6410:12:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":440,"id":442,"nodeType":"Return","src":"6403:19:3"}]},"documentation":{"id":436,"nodeType":"StructuredDocumentation","src":"6225:99:3","text":" @dev Returns the highest version that has been initialized. See {reinitializer}."},"id":444,"implemented":true,"kind":"function","modifiers":[],"name":"_getInitializedVersion","nameLocation":"6338:22:3","nodeType":"FunctionDefinition","parameters":{"id":437,"nodeType":"ParameterList","parameters":[],"src":"6360:2:3"},"returnParameters":{"id":440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":439,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":444,"src":"6386:5:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":438,"name":"uint8","nodeType":"ElementaryTypeName","src":"6386:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"6385:7:3"},"scope":454,"src":"6329:100:3","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":452,"nodeType":"Block","src":"6601:37:3","statements":[{"expression":{"id":450,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"6618:13:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":449,"id":451,"nodeType":"Return","src":"6611:20:3"}]},"documentation":{"id":445,"nodeType":"StructuredDocumentation","src":"6435:105:3","text":" @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}."},"id":453,"implemented":true,"kind":"function","modifiers":[],"name":"_isInitializing","nameLocation":"6554:15:3","nodeType":"FunctionDefinition","parameters":{"id":446,"nodeType":"ParameterList","parameters":[],"src":"6569:2:3"},"returnParameters":{"id":449,"nodeType":"ParameterList","parameters":[{"constant":false,"id":448,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":453,"src":"6595:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":447,"name":"bool","nodeType":"ElementaryTypeName","src":"6595:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6594:6:3"},"scope":454,"src":"6545:93:3","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":455,"src":"2394:4246:3","usedErrors":[],"usedEvents":[300]}],"src":"113:6528:3"},"id":3},"@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol","exportedSymbols":{"Initializable":[454],"ReentrancyGuardUpgradeable":[539]},"id":540,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":456,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"112:23:4"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":458,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":540,"sourceUnit":455,"src":"136:63:4","symbolAliases":[{"foreign":{"id":457,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":454,"src":"144:13:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":460,"name":"Initializable","nameLocations":["1000:13:4"],"nodeType":"IdentifierPath","referencedDeclaration":454,"src":"1000:13:4"},"id":461,"nodeType":"InheritanceSpecifier","src":"1000:13:4"}],"canonicalName":"ReentrancyGuardUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":459,"nodeType":"StructuredDocumentation","src":"201:750:4","text":" @dev Contract module that helps prevent reentrant calls to a function.\n Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n available, which can be applied to functions to make sure there are no nested\n (reentrant) calls to them.\n Note that because there is a single `nonReentrant` guard, functions marked as\n `nonReentrant` may not call one another. This can be worked around by making\n those functions `private`, and then adding `external` `nonReentrant` entry\n points to them.\n TIP: If you would like to learn more about reentrancy and alternative ways\n to protect against it, check out our blog post\n https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]."},"fullyImplemented":true,"id":539,"linearizedBaseContracts":[539,454],"name":"ReentrancyGuardUpgradeable","nameLocation":"970:26:4","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":464,"mutability":"constant","name":"_NOT_ENTERED","nameLocation":"1793:12:4","nodeType":"VariableDeclaration","scope":539,"src":"1768:41:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":462,"name":"uint256","nodeType":"ElementaryTypeName","src":"1768:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":463,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1808:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"private"},{"constant":true,"id":467,"mutability":"constant","name":"_ENTERED","nameLocation":"1840:8:4","nodeType":"VariableDeclaration","scope":539,"src":"1815:37:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":465,"name":"uint256","nodeType":"ElementaryTypeName","src":"1815:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1851:1:4","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"private"},{"constant":false,"id":469,"mutability":"mutable","name":"_status","nameLocation":"1875:7:4","nodeType":"VariableDeclaration","scope":539,"src":"1859:23:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":468,"name":"uint256","nodeType":"ElementaryTypeName","src":"1859:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"body":{"id":477,"nodeType":"Block","src":"1949:51:4","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":474,"name":"__ReentrancyGuard_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":488,"src":"1959:32:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1959:34:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":476,"nodeType":"ExpressionStatement","src":"1959:34:4"}]},"id":478,"implemented":true,"kind":"function","modifiers":[{"id":472,"kind":"modifierInvocation","modifierName":{"id":471,"name":"onlyInitializing","nameLocations":["1932:16:4"],"nodeType":"IdentifierPath","referencedDeclaration":399,"src":"1932:16:4"},"nodeType":"ModifierInvocation","src":"1932:16:4"}],"name":"__ReentrancyGuard_init","nameLocation":"1898:22:4","nodeType":"FunctionDefinition","parameters":{"id":470,"nodeType":"ParameterList","parameters":[],"src":"1920:2:4"},"returnParameters":{"id":473,"nodeType":"ParameterList","parameters":[],"src":"1949:0:4"},"scope":539,"src":"1889:111:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":487,"nodeType":"Block","src":"2076:39:4","statements":[{"expression":{"id":485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":483,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":469,"src":"2086:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":484,"name":"_NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":464,"src":"2096:12:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2086:22:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":486,"nodeType":"ExpressionStatement","src":"2086:22:4"}]},"id":488,"implemented":true,"kind":"function","modifiers":[{"id":481,"kind":"modifierInvocation","modifierName":{"id":480,"name":"onlyInitializing","nameLocations":["2059:16:4"],"nodeType":"IdentifierPath","referencedDeclaration":399,"src":"2059:16:4"},"nodeType":"ModifierInvocation","src":"2059:16:4"}],"name":"__ReentrancyGuard_init_unchained","nameLocation":"2015:32:4","nodeType":"FunctionDefinition","parameters":{"id":479,"nodeType":"ParameterList","parameters":[],"src":"2047:2:4"},"returnParameters":{"id":482,"nodeType":"ParameterList","parameters":[],"src":"2076:0:4"},"scope":539,"src":"2006:109:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":498,"nodeType":"Block","src":"2516:79:4","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":491,"name":"_nonReentrantBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"2526:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2526:21:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":493,"nodeType":"ExpressionStatement","src":"2526:21:4"},{"id":494,"nodeType":"PlaceholderStatement","src":"2557:1:4"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":495,"name":"_nonReentrantAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":522,"src":"2568:18:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2568:20:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":497,"nodeType":"ExpressionStatement","src":"2568:20:4"}]},"documentation":{"id":489,"nodeType":"StructuredDocumentation","src":"2121:366:4","text":" @dev Prevents a contract from calling itself, directly or indirectly.\n Calling a `nonReentrant` function from another `nonReentrant`\n function is not supported. It is possible to prevent this from happening\n by making the `nonReentrant` function external, and making it call a\n `private` function that does the actual work."},"id":499,"name":"nonReentrant","nameLocation":"2501:12:4","nodeType":"ModifierDefinition","parameters":{"id":490,"nodeType":"ParameterList","parameters":[],"src":"2513:2:4"},"src":"2492:103:4","virtual":false,"visibility":"internal"},{"body":{"id":513,"nodeType":"Block","src":"2640:248:4","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":503,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":469,"src":"2733:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":504,"name":"_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":467,"src":"2744:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2733:19:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5265656e7472616e637947756172643a207265656e7472616e742063616c6c","id":506,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2754:33:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619","typeString":"literal_string \"ReentrancyGuard: reentrant call\""},"value":"ReentrancyGuard: reentrant call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619","typeString":"literal_string \"ReentrancyGuard: reentrant call\""}],"id":502,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2725:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2725:63:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":508,"nodeType":"ExpressionStatement","src":"2725:63:4"},{"expression":{"id":511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":509,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":469,"src":"2863:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":510,"name":"_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":467,"src":"2873:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2863:18:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":512,"nodeType":"ExpressionStatement","src":"2863:18:4"}]},"id":514,"implemented":true,"kind":"function","modifiers":[],"name":"_nonReentrantBefore","nameLocation":"2610:19:4","nodeType":"FunctionDefinition","parameters":{"id":500,"nodeType":"ParameterList","parameters":[],"src":"2629:2:4"},"returnParameters":{"id":501,"nodeType":"ParameterList","parameters":[],"src":"2640:0:4"},"scope":539,"src":"2601:287:4","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":521,"nodeType":"Block","src":"2932:171:4","statements":[{"expression":{"id":519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":517,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":469,"src":"3074:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":518,"name":"_NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":464,"src":"3084:12:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3074:22:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":520,"nodeType":"ExpressionStatement","src":"3074:22:4"}]},"id":522,"implemented":true,"kind":"function","modifiers":[],"name":"_nonReentrantAfter","nameLocation":"2903:18:4","nodeType":"FunctionDefinition","parameters":{"id":515,"nodeType":"ParameterList","parameters":[],"src":"2921:2:4"},"returnParameters":{"id":516,"nodeType":"ParameterList","parameters":[],"src":"2932:0:4"},"scope":539,"src":"2894:209:4","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":532,"nodeType":"Block","src":"3346:43:4","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":528,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":469,"src":"3363:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":529,"name":"_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":467,"src":"3374:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3363:19:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":527,"id":531,"nodeType":"Return","src":"3356:26:4"}]},"documentation":{"id":523,"nodeType":"StructuredDocumentation","src":"3109:168:4","text":" @dev Returns true if the reentrancy guard is currently set to \"entered\", which indicates there is a\n `nonReentrant` function in the call stack."},"id":533,"implemented":true,"kind":"function","modifiers":[],"name":"_reentrancyGuardEntered","nameLocation":"3291:23:4","nodeType":"FunctionDefinition","parameters":{"id":524,"nodeType":"ParameterList","parameters":[],"src":"3314:2:4"},"returnParameters":{"id":527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":526,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":533,"src":"3340:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":525,"name":"bool","nodeType":"ElementaryTypeName","src":"3340:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3339:6:4"},"scope":539,"src":"3282:107:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"constant":false,"documentation":{"id":534,"nodeType":"StructuredDocumentation","src":"3395:254:4","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":538,"mutability":"mutable","name":"__gap","nameLocation":"3674:5:4","nodeType":"VariableDeclaration","scope":539,"src":"3654:25:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage","typeString":"uint256[49]"},"typeName":{"baseType":{"id":535,"name":"uint256","nodeType":"ElementaryTypeName","src":"3654:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":537,"length":{"hexValue":"3439","id":536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3662:2:4","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"49"},"nodeType":"ArrayTypeName","src":"3654:11:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage_ptr","typeString":"uint256[49]"}},"visibility":"private"}],"scope":540,"src":"952:2730:4","usedErrors":[],"usedEvents":[300]}],"src":"112:3571:4"},"id":4},"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol","exportedSymbols":{"IERC20Upgradeable":[617]},"id":618,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":541,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"106:23:5"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20Upgradeable","contractDependencies":[],"contractKind":"interface","documentation":{"id":542,"nodeType":"StructuredDocumentation","src":"131:70:5","text":" @dev Interface of the ERC20 standard as defined in the EIP."},"fullyImplemented":false,"id":617,"linearizedBaseContracts":[617],"name":"IERC20Upgradeable","nameLocation":"212:17:5","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":543,"nodeType":"StructuredDocumentation","src":"236:158:5","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":551,"name":"Transfer","nameLocation":"405:8:5","nodeType":"EventDefinition","parameters":{"id":550,"nodeType":"ParameterList","parameters":[{"constant":false,"id":545,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"430:4:5","nodeType":"VariableDeclaration","scope":551,"src":"414:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":544,"name":"address","nodeType":"ElementaryTypeName","src":"414:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":547,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"452:2:5","nodeType":"VariableDeclaration","scope":551,"src":"436:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":546,"name":"address","nodeType":"ElementaryTypeName","src":"436:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":549,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"464:5:5","nodeType":"VariableDeclaration","scope":551,"src":"456:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":548,"name":"uint256","nodeType":"ElementaryTypeName","src":"456:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"413:57:5"},"src":"399:72:5"},{"anonymous":false,"documentation":{"id":552,"nodeType":"StructuredDocumentation","src":"477:148:5","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":560,"name":"Approval","nameLocation":"636:8:5","nodeType":"EventDefinition","parameters":{"id":559,"nodeType":"ParameterList","parameters":[{"constant":false,"id":554,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"661:5:5","nodeType":"VariableDeclaration","scope":560,"src":"645:21:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":553,"name":"address","nodeType":"ElementaryTypeName","src":"645:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":556,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"684:7:5","nodeType":"VariableDeclaration","scope":560,"src":"668:23:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":555,"name":"address","nodeType":"ElementaryTypeName","src":"668:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":558,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"701:5:5","nodeType":"VariableDeclaration","scope":560,"src":"693:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":557,"name":"uint256","nodeType":"ElementaryTypeName","src":"693:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"644:63:5"},"src":"630:78:5"},{"documentation":{"id":561,"nodeType":"StructuredDocumentation","src":"714:66:5","text":" @dev Returns the amount of tokens in existence."},"functionSelector":"18160ddd","id":566,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"794:11:5","nodeType":"FunctionDefinition","parameters":{"id":562,"nodeType":"ParameterList","parameters":[],"src":"805:2:5"},"returnParameters":{"id":565,"nodeType":"ParameterList","parameters":[{"constant":false,"id":564,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":566,"src":"831:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":563,"name":"uint256","nodeType":"ElementaryTypeName","src":"831:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"830:9:5"},"scope":617,"src":"785:55:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":567,"nodeType":"StructuredDocumentation","src":"846:72:5","text":" @dev Returns the amount of tokens owned by `account`."},"functionSelector":"70a08231","id":574,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"932:9:5","nodeType":"FunctionDefinition","parameters":{"id":570,"nodeType":"ParameterList","parameters":[{"constant":false,"id":569,"mutability":"mutable","name":"account","nameLocation":"950:7:5","nodeType":"VariableDeclaration","scope":574,"src":"942:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":568,"name":"address","nodeType":"ElementaryTypeName","src":"942:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"941:17:5"},"returnParameters":{"id":573,"nodeType":"ParameterList","parameters":[{"constant":false,"id":572,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":574,"src":"982:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":571,"name":"uint256","nodeType":"ElementaryTypeName","src":"982:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"981:9:5"},"scope":617,"src":"923:68:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":575,"nodeType":"StructuredDocumentation","src":"997:202:5","text":" @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":584,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1213:8:5","nodeType":"FunctionDefinition","parameters":{"id":580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":577,"mutability":"mutable","name":"to","nameLocation":"1230:2:5","nodeType":"VariableDeclaration","scope":584,"src":"1222:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":576,"name":"address","nodeType":"ElementaryTypeName","src":"1222:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":579,"mutability":"mutable","name":"amount","nameLocation":"1242:6:5","nodeType":"VariableDeclaration","scope":584,"src":"1234:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":578,"name":"uint256","nodeType":"ElementaryTypeName","src":"1234:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1221:28:5"},"returnParameters":{"id":583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":582,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":584,"src":"1268:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":581,"name":"bool","nodeType":"ElementaryTypeName","src":"1268:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1267:6:5"},"scope":617,"src":"1204:70:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":585,"nodeType":"StructuredDocumentation","src":"1280:264:5","text":" @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 This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","id":594,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1558:9:5","nodeType":"FunctionDefinition","parameters":{"id":590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":587,"mutability":"mutable","name":"owner","nameLocation":"1576:5:5","nodeType":"VariableDeclaration","scope":594,"src":"1568:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":586,"name":"address","nodeType":"ElementaryTypeName","src":"1568:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":589,"mutability":"mutable","name":"spender","nameLocation":"1591:7:5","nodeType":"VariableDeclaration","scope":594,"src":"1583:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":588,"name":"address","nodeType":"ElementaryTypeName","src":"1583:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1567:32:5"},"returnParameters":{"id":593,"nodeType":"ParameterList","parameters":[{"constant":false,"id":592,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":594,"src":"1623:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":591,"name":"uint256","nodeType":"ElementaryTypeName","src":"1623:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1622:9:5"},"scope":617,"src":"1549:83:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":595,"nodeType":"StructuredDocumentation","src":"1638:642:5","text":" @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\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 Emits an {Approval} event."},"functionSelector":"095ea7b3","id":604,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2294:7:5","nodeType":"FunctionDefinition","parameters":{"id":600,"nodeType":"ParameterList","parameters":[{"constant":false,"id":597,"mutability":"mutable","name":"spender","nameLocation":"2310:7:5","nodeType":"VariableDeclaration","scope":604,"src":"2302:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":596,"name":"address","nodeType":"ElementaryTypeName","src":"2302:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":599,"mutability":"mutable","name":"amount","nameLocation":"2327:6:5","nodeType":"VariableDeclaration","scope":604,"src":"2319:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":598,"name":"uint256","nodeType":"ElementaryTypeName","src":"2319:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2301:33:5"},"returnParameters":{"id":603,"nodeType":"ParameterList","parameters":[{"constant":false,"id":602,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":604,"src":"2353:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":601,"name":"bool","nodeType":"ElementaryTypeName","src":"2353:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2352:6:5"},"scope":617,"src":"2285:74:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":605,"nodeType":"StructuredDocumentation","src":"2365:287:5","text":" @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":616,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2666:12:5","nodeType":"FunctionDefinition","parameters":{"id":612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":607,"mutability":"mutable","name":"from","nameLocation":"2687:4:5","nodeType":"VariableDeclaration","scope":616,"src":"2679:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":606,"name":"address","nodeType":"ElementaryTypeName","src":"2679:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":609,"mutability":"mutable","name":"to","nameLocation":"2701:2:5","nodeType":"VariableDeclaration","scope":616,"src":"2693:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":608,"name":"address","nodeType":"ElementaryTypeName","src":"2693:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":611,"mutability":"mutable","name":"amount","nameLocation":"2713:6:5","nodeType":"VariableDeclaration","scope":616,"src":"2705:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":610,"name":"uint256","nodeType":"ElementaryTypeName","src":"2705:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2678:42:5"},"returnParameters":{"id":615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":614,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":616,"src":"2739:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":613,"name":"bool","nodeType":"ElementaryTypeName","src":"2739:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2738:6:5"},"scope":617,"src":"2657:88:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":618,"src":"202:2545:5","usedErrors":[],"usedEvents":[551,560]}],"src":"106:2642:5"},"id":5},"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol","exportedSymbols":{"IERC20PermitUpgradeable":[653]},"id":654,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":619,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"123:23:6"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20PermitUpgradeable","contractDependencies":[],"contractKind":"interface","documentation":{"id":620,"nodeType":"StructuredDocumentation","src":"148:1963:6","text":" @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\n need to send a transaction, and thus is not required to hold Ether at all.\n ==== Security Considerations\n There are two important considerations concerning the use of `permit`. The first is that a valid permit signature\n expresses an allowance, and it should not be assumed to convey additional meaning. In particular, it should not be\n considered as an intention to spend the allowance in any specific way. The second is that because permits have\n built-in replay protection and can be submitted by anyone, they can be frontrun. A protocol that uses permits should\n take this into consideration and allow a `permit` call to fail. Combining these two aspects, a pattern that may be\n generally recommended is:\n ```solidity\n function doThingWithPermit(..., uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {\n     try token.permit(msg.sender, address(this), value, deadline, v, r, s) {} catch {}\n     doThing(..., value);\n }\n function doThing(..., uint256 value) public {\n     token.safeTransferFrom(msg.sender, address(this), value);\n     ...\n }\n ```\n Observe that: 1) `msg.sender` is used as the owner, leaving no ambiguity as to the signer intent, and 2) the use of\n `try/catch` allows the permit to fail and makes the code tolerant to frontrunning. (See also\n {SafeERC20-safeTransferFrom}).\n Additionally, note that smart contract wallets (such as Argent or Safe) are not able to produce permit signatures, so\n contracts should have entry points that don't rely on permit."},"fullyImplemented":false,"id":653,"linearizedBaseContracts":[653],"name":"IERC20PermitUpgradeable","nameLocation":"2122:23:6","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":621,"nodeType":"StructuredDocumentation","src":"2152:850:6","text":" @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\n given ``owner``'s signed approval.\n IMPORTANT: The same issues {IERC20-approve} has related to transaction\n ordering also apply here.\n Emits an {Approval} event.\n Requirements:\n - `spender` cannot be the zero address.\n - `deadline` must be a timestamp in the future.\n - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n over the EIP712-formatted function arguments.\n - the signature must use ``owner``'s current nonce (see {nonces}).\n For more information on the signature format, see the\n https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n section].\n CAUTION: See Security Considerations above."},"functionSelector":"d505accf","id":638,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nameLocation":"3016:6:6","nodeType":"FunctionDefinition","parameters":{"id":636,"nodeType":"ParameterList","parameters":[{"constant":false,"id":623,"mutability":"mutable","name":"owner","nameLocation":"3040:5:6","nodeType":"VariableDeclaration","scope":638,"src":"3032:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":622,"name":"address","nodeType":"ElementaryTypeName","src":"3032:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":625,"mutability":"mutable","name":"spender","nameLocation":"3063:7:6","nodeType":"VariableDeclaration","scope":638,"src":"3055:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":624,"name":"address","nodeType":"ElementaryTypeName","src":"3055:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":627,"mutability":"mutable","name":"value","nameLocation":"3088:5:6","nodeType":"VariableDeclaration","scope":638,"src":"3080:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":626,"name":"uint256","nodeType":"ElementaryTypeName","src":"3080:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":629,"mutability":"mutable","name":"deadline","nameLocation":"3111:8:6","nodeType":"VariableDeclaration","scope":638,"src":"3103:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":628,"name":"uint256","nodeType":"ElementaryTypeName","src":"3103:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":631,"mutability":"mutable","name":"v","nameLocation":"3135:1:6","nodeType":"VariableDeclaration","scope":638,"src":"3129:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":630,"name":"uint8","nodeType":"ElementaryTypeName","src":"3129:5:6","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":633,"mutability":"mutable","name":"r","nameLocation":"3154:1:6","nodeType":"VariableDeclaration","scope":638,"src":"3146:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":632,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3146:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":635,"mutability":"mutable","name":"s","nameLocation":"3173:1:6","nodeType":"VariableDeclaration","scope":638,"src":"3165:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":634,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3165:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3022:158:6"},"returnParameters":{"id":637,"nodeType":"ParameterList","parameters":[],"src":"3189:0:6"},"scope":653,"src":"3007:183:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":639,"nodeType":"StructuredDocumentation","src":"3196:294:6","text":" @dev Returns the current nonce for `owner`. This value must be\n included whenever a signature is generated for {permit}.\n Every successful call to {permit} increases ``owner``'s nonce by one. This\n prevents a signature from being used multiple times."},"functionSelector":"7ecebe00","id":646,"implemented":false,"kind":"function","modifiers":[],"name":"nonces","nameLocation":"3504:6:6","nodeType":"FunctionDefinition","parameters":{"id":642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":641,"mutability":"mutable","name":"owner","nameLocation":"3519:5:6","nodeType":"VariableDeclaration","scope":646,"src":"3511:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":640,"name":"address","nodeType":"ElementaryTypeName","src":"3511:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3510:15:6"},"returnParameters":{"id":645,"nodeType":"ParameterList","parameters":[{"constant":false,"id":644,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":646,"src":"3549:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":643,"name":"uint256","nodeType":"ElementaryTypeName","src":"3549:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3548:9:6"},"scope":653,"src":"3495:63:6","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":647,"nodeType":"StructuredDocumentation","src":"3564:128:6","text":" @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}."},"functionSelector":"3644e515","id":652,"implemented":false,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nameLocation":"3759:16:6","nodeType":"FunctionDefinition","parameters":{"id":648,"nodeType":"ParameterList","parameters":[],"src":"3775:2:6"},"returnParameters":{"id":651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":650,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":652,"src":"3801:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":649,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3801:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3800:9:6"},"scope":653,"src":"3750:60:6","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":654,"src":"2112:1700:6","usedErrors":[],"usedEvents":[]}],"src":"123:3690:6"},"id":6},"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol","exportedSymbols":{"AddressUpgradeable":[1359],"IERC20PermitUpgradeable":[653],"IERC20Upgradeable":[617],"SafeERC20Upgradeable":[1029]},"id":1030,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":655,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"115:23:7"},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol","file":"../IERC20Upgradeable.sol","id":656,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1030,"sourceUnit":618,"src":"140:34:7","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol","file":"../extensions/IERC20PermitUpgradeable.sol","id":657,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1030,"sourceUnit":654,"src":"175:51:7","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol","file":"../../../utils/AddressUpgradeable.sol","id":658,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1030,"sourceUnit":1360,"src":"227:47:7","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"SafeERC20Upgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":659,"nodeType":"StructuredDocumentation","src":"276:457:7","text":" @title SafeERC20\n @dev Wrappers around ERC20 operations that throw on failure (when the token\n contract returns false). Tokens that return no value (and instead revert or\n throw on failure) are also supported, non-reverting calls are assumed to be\n successful.\n To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n which allows you to call the safe operations as `token.safeTransfer(...)`, etc."},"fullyImplemented":true,"id":1029,"linearizedBaseContracts":[1029],"name":"SafeERC20Upgradeable","nameLocation":"742:20:7","nodeType":"ContractDefinition","nodes":[{"global":false,"id":662,"libraryName":{"id":660,"name":"AddressUpgradeable","nameLocations":["775:18:7"],"nodeType":"IdentifierPath","referencedDeclaration":1359,"src":"775:18:7"},"nodeType":"UsingForDirective","src":"769:37:7","typeName":{"id":661,"name":"address","nodeType":"ElementaryTypeName","src":"798:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"body":{"id":685,"nodeType":"Block","src":"1079:103:7","statements":[{"expression":{"arguments":[{"id":674,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":666,"src":"1109:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},{"arguments":[{"expression":{"expression":{"id":677,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":666,"src":"1139:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"id":678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1145:8:7","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":584,"src":"1139:14:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1154:8:7","memberName":"selector","nodeType":"MemberAccess","src":"1139:23:7","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":680,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":668,"src":"1164:2:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":681,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":670,"src":"1168:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":675,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1116:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":676,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1120:18:7","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1116:22:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1116:58:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":673,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":980,"src":"1089:19:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$617_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20Upgradeable,bytes memory)"}},"id":683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1089:86:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":684,"nodeType":"ExpressionStatement","src":"1089:86:7"}]},"documentation":{"id":663,"nodeType":"StructuredDocumentation","src":"812:179:7","text":" @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\n non-reverting calls are assumed to be successful."},"id":686,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransfer","nameLocation":"1005:12:7","nodeType":"FunctionDefinition","parameters":{"id":671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":666,"mutability":"mutable","name":"token","nameLocation":"1036:5:7","nodeType":"VariableDeclaration","scope":686,"src":"1018:23:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"},"typeName":{"id":665,"nodeType":"UserDefinedTypeName","pathNode":{"id":664,"name":"IERC20Upgradeable","nameLocations":["1018:17:7"],"nodeType":"IdentifierPath","referencedDeclaration":617,"src":"1018:17:7"},"referencedDeclaration":617,"src":"1018:17:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":668,"mutability":"mutable","name":"to","nameLocation":"1051:2:7","nodeType":"VariableDeclaration","scope":686,"src":"1043:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":667,"name":"address","nodeType":"ElementaryTypeName","src":"1043:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":670,"mutability":"mutable","name":"value","nameLocation":"1063:5:7","nodeType":"VariableDeclaration","scope":686,"src":"1055:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":669,"name":"uint256","nodeType":"ElementaryTypeName","src":"1055:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1017:52:7"},"returnParameters":{"id":672,"nodeType":"ParameterList","parameters":[],"src":"1079:0:7"},"scope":1029,"src":"996:186:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":712,"nodeType":"Block","src":"1522:113:7","statements":[{"expression":{"arguments":[{"id":700,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":690,"src":"1552:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},{"arguments":[{"expression":{"expression":{"id":703,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":690,"src":"1582:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"id":704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1588:12:7","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":616,"src":"1582:18:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1601:8:7","memberName":"selector","nodeType":"MemberAccess","src":"1582:27:7","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":706,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":692,"src":"1611:4:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":707,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":694,"src":"1617:2:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":708,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":696,"src":"1621:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":701,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1559:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":702,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1563:18:7","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1559:22:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":709,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1559:68:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":699,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":980,"src":"1532:19:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$617_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20Upgradeable,bytes memory)"}},"id":710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1532:96:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":711,"nodeType":"ExpressionStatement","src":"1532:96:7"}]},"documentation":{"id":687,"nodeType":"StructuredDocumentation","src":"1188:228:7","text":" @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\n calling contract. If `token` returns no value, non-reverting calls are assumed to be successful."},"id":713,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"1430:16:7","nodeType":"FunctionDefinition","parameters":{"id":697,"nodeType":"ParameterList","parameters":[{"constant":false,"id":690,"mutability":"mutable","name":"token","nameLocation":"1465:5:7","nodeType":"VariableDeclaration","scope":713,"src":"1447:23:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"},"typeName":{"id":689,"nodeType":"UserDefinedTypeName","pathNode":{"id":688,"name":"IERC20Upgradeable","nameLocations":["1447:17:7"],"nodeType":"IdentifierPath","referencedDeclaration":617,"src":"1447:17:7"},"referencedDeclaration":617,"src":"1447:17:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":692,"mutability":"mutable","name":"from","nameLocation":"1480:4:7","nodeType":"VariableDeclaration","scope":713,"src":"1472:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":691,"name":"address","nodeType":"ElementaryTypeName","src":"1472:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":694,"mutability":"mutable","name":"to","nameLocation":"1494:2:7","nodeType":"VariableDeclaration","scope":713,"src":"1486:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":693,"name":"address","nodeType":"ElementaryTypeName","src":"1486:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":696,"mutability":"mutable","name":"value","nameLocation":"1506:5:7","nodeType":"VariableDeclaration","scope":713,"src":"1498:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":695,"name":"uint256","nodeType":"ElementaryTypeName","src":"1498:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1446:66:7"},"returnParameters":{"id":698,"nodeType":"ParameterList","parameters":[],"src":"1522:0:7"},"scope":1029,"src":"1421:214:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":756,"nodeType":"Block","src":"1982:497:7","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":725,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":721,"src":"2231:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2240:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2231:10:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":728,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2230:12:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":733,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2271:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20Upgradeable_$1029","typeString":"library SafeERC20Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20Upgradeable_$1029","typeString":"library SafeERC20Upgradeable"}],"id":732,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2263:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":731,"name":"address","nodeType":"ElementaryTypeName","src":"2263:7:7","typeDescriptions":{}}},"id":734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2263:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":735,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":719,"src":"2278:7:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":729,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":717,"src":"2247:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"id":730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2253:9:7","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":594,"src":"2247:15:7","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2247:39:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":737,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2290:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2247:44:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":739,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2246:46:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2230:62:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365","id":741,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2306:56:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""},"value":"SafeERC20: approve from non-zero to non-zero allowance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""}],"id":724,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2209:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":742,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2209:163:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":743,"nodeType":"ExpressionStatement","src":"2209:163:7"},{"expression":{"arguments":[{"id":745,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":717,"src":"2402:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},{"arguments":[{"expression":{"expression":{"id":748,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":717,"src":"2432:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"id":749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2438:7:7","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":604,"src":"2432:13:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2446:8:7","memberName":"selector","nodeType":"MemberAccess","src":"2432:22:7","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":751,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":719,"src":"2456:7:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":752,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":721,"src":"2465:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":746,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2409:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":747,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2413:18:7","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"2409:22:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2409:62:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":744,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":980,"src":"2382:19:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$617_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20Upgradeable,bytes memory)"}},"id":754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2382:90:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":755,"nodeType":"ExpressionStatement","src":"2382:90:7"}]},"documentation":{"id":714,"nodeType":"StructuredDocumentation","src":"1641:249:7","text":" @dev Deprecated. This function has issues similar to the ones found in\n {IERC20-approve}, and its usage is discouraged.\n Whenever possible, use {safeIncreaseAllowance} and\n {safeDecreaseAllowance} instead."},"id":757,"implemented":true,"kind":"function","modifiers":[],"name":"safeApprove","nameLocation":"1904:11:7","nodeType":"FunctionDefinition","parameters":{"id":722,"nodeType":"ParameterList","parameters":[{"constant":false,"id":717,"mutability":"mutable","name":"token","nameLocation":"1934:5:7","nodeType":"VariableDeclaration","scope":757,"src":"1916:23:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"},"typeName":{"id":716,"nodeType":"UserDefinedTypeName","pathNode":{"id":715,"name":"IERC20Upgradeable","nameLocations":["1916:17:7"],"nodeType":"IdentifierPath","referencedDeclaration":617,"src":"1916:17:7"},"referencedDeclaration":617,"src":"1916:17:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":719,"mutability":"mutable","name":"spender","nameLocation":"1949:7:7","nodeType":"VariableDeclaration","scope":757,"src":"1941:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":718,"name":"address","nodeType":"ElementaryTypeName","src":"1941:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":721,"mutability":"mutable","name":"value","nameLocation":"1966:5:7","nodeType":"VariableDeclaration","scope":757,"src":"1958:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":720,"name":"uint256","nodeType":"ElementaryTypeName","src":"1958:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1915:57:7"},"returnParameters":{"id":723,"nodeType":"ParameterList","parameters":[],"src":"1982:0:7"},"scope":1029,"src":"1895:584:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":793,"nodeType":"Block","src":"2767:194:7","statements":[{"assignments":[769],"declarations":[{"constant":false,"id":769,"mutability":"mutable","name":"oldAllowance","nameLocation":"2785:12:7","nodeType":"VariableDeclaration","scope":793,"src":"2777:20:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":768,"name":"uint256","nodeType":"ElementaryTypeName","src":"2777:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":778,"initialValue":{"arguments":[{"arguments":[{"id":774,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2824:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20Upgradeable_$1029","typeString":"library SafeERC20Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20Upgradeable_$1029","typeString":"library SafeERC20Upgradeable"}],"id":773,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2816:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":772,"name":"address","nodeType":"ElementaryTypeName","src":"2816:7:7","typeDescriptions":{}}},"id":775,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2816:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":776,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":763,"src":"2831:7:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":770,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":761,"src":"2800:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"id":771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2806:9:7","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":594,"src":"2800:15:7","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2800:39:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2777:62:7"},{"expression":{"arguments":[{"id":780,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":761,"src":"2869:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},{"arguments":[{"expression":{"expression":{"id":783,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":761,"src":"2899:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"id":784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2905:7:7","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":604,"src":"2899:13:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2913:8:7","memberName":"selector","nodeType":"MemberAccess","src":"2899:22:7","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":786,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":763,"src":"2923:7:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":787,"name":"oldAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":769,"src":"2932:12:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":788,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":765,"src":"2947:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2932:20:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":781,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2876:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":782,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2880:18:7","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"2876:22:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":790,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2876:77:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":779,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":980,"src":"2849:19:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$617_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20Upgradeable,bytes memory)"}},"id":791,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2849:105:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":792,"nodeType":"ExpressionStatement","src":"2849:105:7"}]},"documentation":{"id":758,"nodeType":"StructuredDocumentation","src":"2485:180:7","text":" @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful."},"id":794,"implemented":true,"kind":"function","modifiers":[],"name":"safeIncreaseAllowance","nameLocation":"2679:21:7","nodeType":"FunctionDefinition","parameters":{"id":766,"nodeType":"ParameterList","parameters":[{"constant":false,"id":761,"mutability":"mutable","name":"token","nameLocation":"2719:5:7","nodeType":"VariableDeclaration","scope":794,"src":"2701:23:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"},"typeName":{"id":760,"nodeType":"UserDefinedTypeName","pathNode":{"id":759,"name":"IERC20Upgradeable","nameLocations":["2701:17:7"],"nodeType":"IdentifierPath","referencedDeclaration":617,"src":"2701:17:7"},"referencedDeclaration":617,"src":"2701:17:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":763,"mutability":"mutable","name":"spender","nameLocation":"2734:7:7","nodeType":"VariableDeclaration","scope":794,"src":"2726:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":762,"name":"address","nodeType":"ElementaryTypeName","src":"2726:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":765,"mutability":"mutable","name":"value","nameLocation":"2751:5:7","nodeType":"VariableDeclaration","scope":794,"src":"2743:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":764,"name":"uint256","nodeType":"ElementaryTypeName","src":"2743:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2700:57:7"},"returnParameters":{"id":767,"nodeType":"ParameterList","parameters":[],"src":"2767:0:7"},"scope":1029,"src":"2670:291:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":838,"nodeType":"Block","src":"3249:321:7","statements":[{"id":837,"nodeType":"UncheckedBlock","src":"3259:305:7","statements":[{"assignments":[806],"declarations":[{"constant":false,"id":806,"mutability":"mutable","name":"oldAllowance","nameLocation":"3291:12:7","nodeType":"VariableDeclaration","scope":837,"src":"3283:20:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":805,"name":"uint256","nodeType":"ElementaryTypeName","src":"3283:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":815,"initialValue":{"arguments":[{"arguments":[{"id":811,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3330:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20Upgradeable_$1029","typeString":"library SafeERC20Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20Upgradeable_$1029","typeString":"library SafeERC20Upgradeable"}],"id":810,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3322:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":809,"name":"address","nodeType":"ElementaryTypeName","src":"3322:7:7","typeDescriptions":{}}},"id":812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3322:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":813,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":800,"src":"3337:7:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":807,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":798,"src":"3306:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"id":808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3312:9:7","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":594,"src":"3306:15:7","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":814,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3306:39:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3283:62:7"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":817,"name":"oldAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":806,"src":"3367:12:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":818,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":802,"src":"3383:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3367:21:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f","id":820,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3390:43:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a","typeString":"literal_string \"SafeERC20: decreased allowance below zero\""},"value":"SafeERC20: decreased allowance below zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a","typeString":"literal_string \"SafeERC20: decreased allowance below zero\""}],"id":816,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"3359:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3359:75:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":822,"nodeType":"ExpressionStatement","src":"3359:75:7"},{"expression":{"arguments":[{"id":824,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":798,"src":"3468:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},{"arguments":[{"expression":{"expression":{"id":827,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":798,"src":"3498:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"id":828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3504:7:7","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":604,"src":"3498:13:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3512:8:7","memberName":"selector","nodeType":"MemberAccess","src":"3498:22:7","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":830,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":800,"src":"3522:7:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":831,"name":"oldAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":806,"src":"3531:12:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":832,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":802,"src":"3546:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3531:20:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":825,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3475:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":826,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3479:18:7","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"3475:22:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3475:77:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":823,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":980,"src":"3448:19:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$617_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20Upgradeable,bytes memory)"}},"id":835,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3448:105:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":836,"nodeType":"ExpressionStatement","src":"3448:105:7"}]}]},"documentation":{"id":795,"nodeType":"StructuredDocumentation","src":"2967:180:7","text":" @dev Decrease the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful."},"id":839,"implemented":true,"kind":"function","modifiers":[],"name":"safeDecreaseAllowance","nameLocation":"3161:21:7","nodeType":"FunctionDefinition","parameters":{"id":803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":798,"mutability":"mutable","name":"token","nameLocation":"3201:5:7","nodeType":"VariableDeclaration","scope":839,"src":"3183:23:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"},"typeName":{"id":797,"nodeType":"UserDefinedTypeName","pathNode":{"id":796,"name":"IERC20Upgradeable","nameLocations":["3183:17:7"],"nodeType":"IdentifierPath","referencedDeclaration":617,"src":"3183:17:7"},"referencedDeclaration":617,"src":"3183:17:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":800,"mutability":"mutable","name":"spender","nameLocation":"3216:7:7","nodeType":"VariableDeclaration","scope":839,"src":"3208:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":799,"name":"address","nodeType":"ElementaryTypeName","src":"3208:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":802,"mutability":"mutable","name":"value","nameLocation":"3233:5:7","nodeType":"VariableDeclaration","scope":839,"src":"3225:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":801,"name":"uint256","nodeType":"ElementaryTypeName","src":"3225:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3182:57:7"},"returnParameters":{"id":804,"nodeType":"ParameterList","parameters":[],"src":"3249:0:7"},"scope":1029,"src":"3152:418:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":885,"nodeType":"Block","src":"3977:333:7","statements":[{"assignments":[851],"declarations":[{"constant":false,"id":851,"mutability":"mutable","name":"approvalCall","nameLocation":"4000:12:7","nodeType":"VariableDeclaration","scope":885,"src":"3987:25:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":850,"name":"bytes","nodeType":"ElementaryTypeName","src":"3987:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":860,"initialValue":{"arguments":[{"expression":{"expression":{"id":854,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":843,"src":"4038:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"id":855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4044:7:7","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":604,"src":"4038:13:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4052:8:7","memberName":"selector","nodeType":"MemberAccess","src":"4038:22:7","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":857,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"4062:7:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":858,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":847,"src":"4071:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":852,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4015:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":853,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4019:18:7","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"4015:22:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":859,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4015:62:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3987:90:7"},{"condition":{"id":865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4092:45:7","subExpression":{"arguments":[{"id":862,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":843,"src":"4117:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},{"id":863,"name":"approvalCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":851,"src":"4124:12:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":861,"name":"_callOptionalReturnBool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1028,"src":"4093:23:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$617_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (contract IERC20Upgradeable,bytes memory) returns (bool)"}},"id":864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4093:44:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":884,"nodeType":"IfStatement","src":"4088:216:7","trueBody":{"id":883,"nodeType":"Block","src":"4139:165:7","statements":[{"expression":{"arguments":[{"id":867,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":843,"src":"4173:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},{"arguments":[{"expression":{"expression":{"id":870,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":843,"src":"4203:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"id":871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4209:7:7","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":604,"src":"4203:13:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4217:8:7","memberName":"selector","nodeType":"MemberAccess","src":"4203:22:7","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":873,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"4227:7:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":874,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4236:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":868,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4180:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":869,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4184:18:7","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"4180:22:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":875,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4180:58:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":866,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":980,"src":"4153:19:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$617_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20Upgradeable,bytes memory)"}},"id":876,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4153:86:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":877,"nodeType":"ExpressionStatement","src":"4153:86:7"},{"expression":{"arguments":[{"id":879,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":843,"src":"4273:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},{"id":880,"name":"approvalCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":851,"src":"4280:12:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":878,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":980,"src":"4253:19:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$617_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20Upgradeable,bytes memory)"}},"id":881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4253:40:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":882,"nodeType":"ExpressionStatement","src":"4253:40:7"}]}}]},"documentation":{"id":840,"nodeType":"StructuredDocumentation","src":"3576:308:7","text":" @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\n to be set to zero before setting it to a non-zero value, such as USDT."},"id":886,"implemented":true,"kind":"function","modifiers":[],"name":"forceApprove","nameLocation":"3898:12:7","nodeType":"FunctionDefinition","parameters":{"id":848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":843,"mutability":"mutable","name":"token","nameLocation":"3929:5:7","nodeType":"VariableDeclaration","scope":886,"src":"3911:23:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"},"typeName":{"id":842,"nodeType":"UserDefinedTypeName","pathNode":{"id":841,"name":"IERC20Upgradeable","nameLocations":["3911:17:7"],"nodeType":"IdentifierPath","referencedDeclaration":617,"src":"3911:17:7"},"referencedDeclaration":617,"src":"3911:17:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":845,"mutability":"mutable","name":"spender","nameLocation":"3944:7:7","nodeType":"VariableDeclaration","scope":886,"src":"3936:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":844,"name":"address","nodeType":"ElementaryTypeName","src":"3936:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":847,"mutability":"mutable","name":"value","nameLocation":"3961:5:7","nodeType":"VariableDeclaration","scope":886,"src":"3953:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":846,"name":"uint256","nodeType":"ElementaryTypeName","src":"3953:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3910:57:7"},"returnParameters":{"id":849,"nodeType":"ParameterList","parameters":[],"src":"3977:0:7"},"scope":1029,"src":"3889:421:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":942,"nodeType":"Block","src":"4688:257:7","statements":[{"assignments":[908],"declarations":[{"constant":false,"id":908,"mutability":"mutable","name":"nonceBefore","nameLocation":"4706:11:7","nodeType":"VariableDeclaration","scope":942,"src":"4698:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":907,"name":"uint256","nodeType":"ElementaryTypeName","src":"4698:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":913,"initialValue":{"arguments":[{"id":911,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":892,"src":"4733:5:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":909,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":890,"src":"4720:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitUpgradeable_$653","typeString":"contract IERC20PermitUpgradeable"}},"id":910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4726:6:7","memberName":"nonces","nodeType":"MemberAccess","referencedDeclaration":646,"src":"4720:12:7","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":912,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4720:19:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4698:41:7"},{"expression":{"arguments":[{"id":917,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":892,"src":"4762:5:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":918,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":894,"src":"4769:7:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":919,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":896,"src":"4778:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":920,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":898,"src":"4785:8:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":921,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":900,"src":"4795:1:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":922,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":902,"src":"4798:1:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":923,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":904,"src":"4801:1:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":914,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":890,"src":"4749:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitUpgradeable_$653","typeString":"contract IERC20PermitUpgradeable"}},"id":916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4755:6:7","memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":638,"src":"4749:12:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"}},"id":924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4749:54:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":925,"nodeType":"ExpressionStatement","src":"4749:54:7"},{"assignments":[927],"declarations":[{"constant":false,"id":927,"mutability":"mutable","name":"nonceAfter","nameLocation":"4821:10:7","nodeType":"VariableDeclaration","scope":942,"src":"4813:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":926,"name":"uint256","nodeType":"ElementaryTypeName","src":"4813:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":932,"initialValue":{"arguments":[{"id":930,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":892,"src":"4847:5:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":928,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":890,"src":"4834:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitUpgradeable_$653","typeString":"contract IERC20PermitUpgradeable"}},"id":929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4840:6:7","memberName":"nonces","nodeType":"MemberAccess","referencedDeclaration":646,"src":"4834:12:7","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4834:19:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4813:40:7"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":934,"name":"nonceAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":927,"src":"4871:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":935,"name":"nonceBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":908,"src":"4885:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4899:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4885:15:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4871:29:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a207065726d697420646964206e6f742073756363656564","id":939,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4902:35:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_cde8e927812a7a656f8f04e89ac4f4113d47940dd2125d11fcb8e0bd36bfc59d","typeString":"literal_string \"SafeERC20: permit did not succeed\""},"value":"SafeERC20: permit did not succeed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cde8e927812a7a656f8f04e89ac4f4113d47940dd2125d11fcb8e0bd36bfc59d","typeString":"literal_string \"SafeERC20: permit did not succeed\""}],"id":933,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4863:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4863:75:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":941,"nodeType":"ExpressionStatement","src":"4863:75:7"}]},"documentation":{"id":887,"nodeType":"StructuredDocumentation","src":"4316:141:7","text":" @dev Use a ERC-2612 signature to set the `owner` approval toward `spender` on `token`.\n Revert on invalid signature."},"id":943,"implemented":true,"kind":"function","modifiers":[],"name":"safePermit","nameLocation":"4471:10:7","nodeType":"FunctionDefinition","parameters":{"id":905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":890,"mutability":"mutable","name":"token","nameLocation":"4515:5:7","nodeType":"VariableDeclaration","scope":943,"src":"4491:29:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitUpgradeable_$653","typeString":"contract IERC20PermitUpgradeable"},"typeName":{"id":889,"nodeType":"UserDefinedTypeName","pathNode":{"id":888,"name":"IERC20PermitUpgradeable","nameLocations":["4491:23:7"],"nodeType":"IdentifierPath","referencedDeclaration":653,"src":"4491:23:7"},"referencedDeclaration":653,"src":"4491:23:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitUpgradeable_$653","typeString":"contract IERC20PermitUpgradeable"}},"visibility":"internal"},{"constant":false,"id":892,"mutability":"mutable","name":"owner","nameLocation":"4538:5:7","nodeType":"VariableDeclaration","scope":943,"src":"4530:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":891,"name":"address","nodeType":"ElementaryTypeName","src":"4530:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":894,"mutability":"mutable","name":"spender","nameLocation":"4561:7:7","nodeType":"VariableDeclaration","scope":943,"src":"4553:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":893,"name":"address","nodeType":"ElementaryTypeName","src":"4553:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":896,"mutability":"mutable","name":"value","nameLocation":"4586:5:7","nodeType":"VariableDeclaration","scope":943,"src":"4578:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":895,"name":"uint256","nodeType":"ElementaryTypeName","src":"4578:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":898,"mutability":"mutable","name":"deadline","nameLocation":"4609:8:7","nodeType":"VariableDeclaration","scope":943,"src":"4601:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":897,"name":"uint256","nodeType":"ElementaryTypeName","src":"4601:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":900,"mutability":"mutable","name":"v","nameLocation":"4633:1:7","nodeType":"VariableDeclaration","scope":943,"src":"4627:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":899,"name":"uint8","nodeType":"ElementaryTypeName","src":"4627:5:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":902,"mutability":"mutable","name":"r","nameLocation":"4652:1:7","nodeType":"VariableDeclaration","scope":943,"src":"4644:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":901,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4644:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":904,"mutability":"mutable","name":"s","nameLocation":"4671:1:7","nodeType":"VariableDeclaration","scope":943,"src":"4663:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":903,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4663:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4481:197:7"},"returnParameters":{"id":906,"nodeType":"ParameterList","parameters":[],"src":"4688:0:7"},"scope":1029,"src":"4462:483:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":979,"nodeType":"Block","src":"5409:572:7","statements":[{"assignments":[953],"declarations":[{"constant":false,"id":953,"mutability":"mutable","name":"returndata","nameLocation":"5771:10:7","nodeType":"VariableDeclaration","scope":979,"src":"5758:23:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":952,"name":"bytes","nodeType":"ElementaryTypeName","src":"5758:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":962,"initialValue":{"arguments":[{"id":959,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":949,"src":"5812:4:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564","id":960,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5818:34:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""},"value":"SafeERC20: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""}],"expression":{"arguments":[{"id":956,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":947,"src":"5792:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}],"id":955,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5784:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":954,"name":"address","nodeType":"ElementaryTypeName","src":"5784:7:7","typeDescriptions":{}}},"id":957,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5784:14:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5799:12:7","memberName":"functionCall","nodeType":"MemberAccess","referencedDeclaration":1119,"src":"5784:27:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$attached_to$_t_address_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5784:69:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"5758:95:7"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":964,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":953,"src":"5871:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5882:6:7","memberName":"length","nodeType":"MemberAccess","src":"5871:17:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":966,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5892:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5871:22:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":970,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":953,"src":"5908:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":972,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5921:4:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":971,"name":"bool","nodeType":"ElementaryTypeName","src":"5921:4:7","typeDescriptions":{}}}],"id":973,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5920:6:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"expression":{"id":968,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5897:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":969,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5901:6:7","memberName":"decode","nodeType":"MemberAccess","src":"5897:10:7","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":974,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5897:30:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5871:56:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564","id":976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5929:44:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""},"value":"SafeERC20: ERC20 operation did not succeed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""}],"id":963,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5863:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5863:111:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":978,"nodeType":"ExpressionStatement","src":"5863:111:7"}]},"documentation":{"id":944,"nodeType":"StructuredDocumentation","src":"4951:372:7","text":" @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants)."},"id":980,"implemented":true,"kind":"function","modifiers":[],"name":"_callOptionalReturn","nameLocation":"5337:19:7","nodeType":"FunctionDefinition","parameters":{"id":950,"nodeType":"ParameterList","parameters":[{"constant":false,"id":947,"mutability":"mutable","name":"token","nameLocation":"5375:5:7","nodeType":"VariableDeclaration","scope":980,"src":"5357:23:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"},"typeName":{"id":946,"nodeType":"UserDefinedTypeName","pathNode":{"id":945,"name":"IERC20Upgradeable","nameLocations":["5357:17:7"],"nodeType":"IdentifierPath","referencedDeclaration":617,"src":"5357:17:7"},"referencedDeclaration":617,"src":"5357:17:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":949,"mutability":"mutable","name":"data","nameLocation":"5395:4:7","nodeType":"VariableDeclaration","scope":980,"src":"5382:17:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":948,"name":"bytes","nodeType":"ElementaryTypeName","src":"5382:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5356:44:7"},"returnParameters":{"id":951,"nodeType":"ParameterList","parameters":[],"src":"5409:0:7"},"scope":1029,"src":"5328:653:7","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1027,"nodeType":"Block","src":"6582:516:7","statements":[{"assignments":[992,994],"declarations":[{"constant":false,"id":992,"mutability":"mutable","name":"success","nameLocation":"6883:7:7","nodeType":"VariableDeclaration","scope":1027,"src":"6878:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":991,"name":"bool","nodeType":"ElementaryTypeName","src":"6878:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":994,"mutability":"mutable","name":"returndata","nameLocation":"6905:10:7","nodeType":"VariableDeclaration","scope":1027,"src":"6892:23:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":993,"name":"bytes","nodeType":"ElementaryTypeName","src":"6892:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1002,"initialValue":{"arguments":[{"id":1000,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":986,"src":"6939:4:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":997,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":984,"src":"6927:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}],"id":996,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6919:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":995,"name":"address","nodeType":"ElementaryTypeName","src":"6919:7:7","typeDescriptions":{}}},"id":998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6919:14:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6934:4:7","memberName":"call","nodeType":"MemberAccess","src":"6919:19:7","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":1001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6919:25:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6877:67:7"},{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1003,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":992,"src":"6973:7:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1004,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":994,"src":"6985:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6996:6:7","memberName":"length","nodeType":"MemberAccess","src":"6985:17:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1006,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7006:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6985:22:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":1010,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":994,"src":"7022:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":1012,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7035:4:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":1011,"name":"bool","nodeType":"ElementaryTypeName","src":"7035:4:7","typeDescriptions":{}}}],"id":1013,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"7034:6:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"expression":{"id":1008,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7011:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1009,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7015:6:7","memberName":"decode","nodeType":"MemberAccess","src":"7011:10:7","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":1014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7011:30:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6985:56:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":1016,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6984:58:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6973:69:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"arguments":[{"arguments":[{"id":1022,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":984,"src":"7084:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}],"id":1021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7076:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1020,"name":"address","nodeType":"ElementaryTypeName","src":"7076:7:7","typeDescriptions":{}}},"id":1023,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7076:14:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1018,"name":"AddressUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"7046:18:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressUpgradeable_$1359_$","typeString":"type(library AddressUpgradeable)"}},"id":1019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7065:10:7","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":1047,"src":"7046:29:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":1024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7046:45:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6973:118:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":990,"id":1026,"nodeType":"Return","src":"6954:137:7"}]},"documentation":{"id":981,"nodeType":"StructuredDocumentation","src":"5987:490:7","text":" @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants).\n This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead."},"id":1028,"implemented":true,"kind":"function","modifiers":[],"name":"_callOptionalReturnBool","nameLocation":"6491:23:7","nodeType":"FunctionDefinition","parameters":{"id":987,"nodeType":"ParameterList","parameters":[{"constant":false,"id":984,"mutability":"mutable","name":"token","nameLocation":"6533:5:7","nodeType":"VariableDeclaration","scope":1028,"src":"6515:23:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"},"typeName":{"id":983,"nodeType":"UserDefinedTypeName","pathNode":{"id":982,"name":"IERC20Upgradeable","nameLocations":["6515:17:7"],"nodeType":"IdentifierPath","referencedDeclaration":617,"src":"6515:17:7"},"referencedDeclaration":617,"src":"6515:17:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":986,"mutability":"mutable","name":"data","nameLocation":"6553:4:7","nodeType":"VariableDeclaration","scope":1028,"src":"6540:17:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":985,"name":"bytes","nodeType":"ElementaryTypeName","src":"6540:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6514:44:7"},"returnParameters":{"id":990,"nodeType":"ParameterList","parameters":[{"constant":false,"id":989,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1028,"src":"6576:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":988,"name":"bool","nodeType":"ElementaryTypeName","src":"6576:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6575:6:7"},"scope":1029,"src":"6482:616:7","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":1030,"src":"734:6366:7","usedErrors":[],"usedEvents":[]}],"src":"115:6986:7"},"id":7},"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol","exportedSymbols":{"AddressUpgradeable":[1359]},"id":1360,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1031,"literals":["solidity","^","0.8",".1"],"nodeType":"PragmaDirective","src":"101:23:8"},{"abstract":false,"baseContracts":[],"canonicalName":"AddressUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":1032,"nodeType":"StructuredDocumentation","src":"126:67:8","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":1359,"linearizedBaseContracts":[1359],"name":"AddressUpgradeable","nameLocation":"202:18:8","nodeType":"ContractDefinition","nodes":[{"body":{"id":1046,"nodeType":"Block","src":"1489:254:8","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":1040,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1035,"src":"1713:7:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1721:4:8","memberName":"code","nodeType":"MemberAccess","src":"1713:12:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1726:6:8","memberName":"length","nodeType":"MemberAccess","src":"1713:19:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1043,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1735:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1713:23:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1039,"id":1045,"nodeType":"Return","src":"1706:30:8"}]},"documentation":{"id":1033,"nodeType":"StructuredDocumentation","src":"227:1191:8","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n  - an externally-owned account\n  - a contract in construction\n  - an address where a contract will be created\n  - an address where a contract lived, but was destroyed\n Furthermore, `isContract` will also return true if the target contract within\n the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n which only has an effect at the end of a transaction.\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="},"id":1047,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nameLocation":"1432:10:8","nodeType":"FunctionDefinition","parameters":{"id":1036,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1035,"mutability":"mutable","name":"account","nameLocation":"1451:7:8","nodeType":"VariableDeclaration","scope":1047,"src":"1443:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1034,"name":"address","nodeType":"ElementaryTypeName","src":"1443:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1442:17:8"},"returnParameters":{"id":1039,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1038,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1047,"src":"1483:4:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1037,"name":"bool","nodeType":"ElementaryTypeName","src":"1483:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1482:6:8"},"scope":1359,"src":"1423:320:8","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1080,"nodeType":"Block","src":"2729:241:8","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1058,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2755:4:8","typeDescriptions":{"typeIdentifier":"t_contract$_AddressUpgradeable_$1359","typeString":"library AddressUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AddressUpgradeable_$1359","typeString":"library AddressUpgradeable"}],"id":1057,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2747:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1056,"name":"address","nodeType":"ElementaryTypeName","src":"2747:7:8","typeDescriptions":{}}},"id":1059,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2747:13:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2761:7:8","memberName":"balance","nodeType":"MemberAccess","src":"2747:21:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":1061,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1052,"src":"2772:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2747:31:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":1063,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2780:31:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""},"value":"Address: insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""}],"id":1055,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2739:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2739:73:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1065,"nodeType":"ExpressionStatement","src":"2739:73:8"},{"assignments":[1067,null],"declarations":[{"constant":false,"id":1067,"mutability":"mutable","name":"success","nameLocation":"2829:7:8","nodeType":"VariableDeclaration","scope":1080,"src":"2824:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1066,"name":"bool","nodeType":"ElementaryTypeName","src":"2824:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":1074,"initialValue":{"arguments":[{"hexValue":"","id":1072,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2872:2:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":1068,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1050,"src":"2842:9:8","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":1069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2852:4:8","memberName":"call","nodeType":"MemberAccess","src":"2842:14:8","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":1071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":1070,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1052,"src":"2864:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2842:29:8","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":1073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2842:33:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2823:52:8"},{"expression":{"arguments":[{"id":1076,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1067,"src":"2893:7:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":1077,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2902:60:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""},"value":"Address: unable to send value, recipient may have reverted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"id":1075,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2885:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2885:78:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1079,"nodeType":"ExpressionStatement","src":"2885:78:8"}]},"documentation":{"id":1048,"nodeType":"StructuredDocumentation","src":"1749:904:8","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":1081,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"2667:9:8","nodeType":"FunctionDefinition","parameters":{"id":1053,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1050,"mutability":"mutable","name":"recipient","nameLocation":"2693:9:8","nodeType":"VariableDeclaration","scope":1081,"src":"2677:25:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":1049,"name":"address","nodeType":"ElementaryTypeName","src":"2677:15:8","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":1052,"mutability":"mutable","name":"amount","nameLocation":"2712:6:8","nodeType":"VariableDeclaration","scope":1081,"src":"2704:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1051,"name":"uint256","nodeType":"ElementaryTypeName","src":"2704:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2676:43:8"},"returnParameters":{"id":1054,"nodeType":"ParameterList","parameters":[],"src":"2729:0:8"},"scope":1359,"src":"2658:312:8","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1098,"nodeType":"Block","src":"3801:96:8","statements":[{"expression":{"arguments":[{"id":1092,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1084,"src":"3840:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1093,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1086,"src":"3848:4:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":1094,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3854:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":1095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3857:32:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""},"value":"Address: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""}],"id":1091,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[1139,1183],"referencedDeclaration":1183,"src":"3818:21:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":1096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3818:72:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1090,"id":1097,"nodeType":"Return","src":"3811:79:8"}]},"documentation":{"id":1082,"nodeType":"StructuredDocumentation","src":"2976:731:8","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"},"id":1099,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3721:12:8","nodeType":"FunctionDefinition","parameters":{"id":1087,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1084,"mutability":"mutable","name":"target","nameLocation":"3742:6:8","nodeType":"VariableDeclaration","scope":1099,"src":"3734:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1083,"name":"address","nodeType":"ElementaryTypeName","src":"3734:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1086,"mutability":"mutable","name":"data","nameLocation":"3763:4:8","nodeType":"VariableDeclaration","scope":1099,"src":"3750:17:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1085,"name":"bytes","nodeType":"ElementaryTypeName","src":"3750:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3733:35:8"},"returnParameters":{"id":1090,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1089,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1099,"src":"3787:12:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1088,"name":"bytes","nodeType":"ElementaryTypeName","src":"3787:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3786:14:8"},"scope":1359,"src":"3712:185:8","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1118,"nodeType":"Block","src":"4266:76:8","statements":[{"expression":{"arguments":[{"id":1112,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1102,"src":"4305:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1113,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1104,"src":"4313:4:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":1114,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4319:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":1115,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1106,"src":"4322:12:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1111,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[1139,1183],"referencedDeclaration":1183,"src":"4283:21:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":1116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4283:52:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1110,"id":1117,"nodeType":"Return","src":"4276:59:8"}]},"documentation":{"id":1100,"nodeType":"StructuredDocumentation","src":"3903:211:8","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":1119,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"4128:12:8","nodeType":"FunctionDefinition","parameters":{"id":1107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1102,"mutability":"mutable","name":"target","nameLocation":"4158:6:8","nodeType":"VariableDeclaration","scope":1119,"src":"4150:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1101,"name":"address","nodeType":"ElementaryTypeName","src":"4150:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1104,"mutability":"mutable","name":"data","nameLocation":"4187:4:8","nodeType":"VariableDeclaration","scope":1119,"src":"4174:17:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1103,"name":"bytes","nodeType":"ElementaryTypeName","src":"4174:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1106,"mutability":"mutable","name":"errorMessage","nameLocation":"4215:12:8","nodeType":"VariableDeclaration","scope":1119,"src":"4201:26:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1105,"name":"string","nodeType":"ElementaryTypeName","src":"4201:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4140:93:8"},"returnParameters":{"id":1110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1109,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1119,"src":"4252:12:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1108,"name":"bytes","nodeType":"ElementaryTypeName","src":"4252:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4251:14:8"},"scope":1359,"src":"4119:223:8","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1138,"nodeType":"Block","src":"4817:111:8","statements":[{"expression":{"arguments":[{"id":1132,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1122,"src":"4856:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1133,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1124,"src":"4864:4:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1134,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1126,"src":"4870:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":1135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4877:43:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""},"value":"Address: low-level call with value failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""}],"id":1131,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[1139,1183],"referencedDeclaration":1183,"src":"4834:21:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":1136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4834:87:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1130,"id":1137,"nodeType":"Return","src":"4827:94:8"}]},"documentation":{"id":1120,"nodeType":"StructuredDocumentation","src":"4348:351:8","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"},"id":1139,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4713:21:8","nodeType":"FunctionDefinition","parameters":{"id":1127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1122,"mutability":"mutable","name":"target","nameLocation":"4743:6:8","nodeType":"VariableDeclaration","scope":1139,"src":"4735:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1121,"name":"address","nodeType":"ElementaryTypeName","src":"4735:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1124,"mutability":"mutable","name":"data","nameLocation":"4764:4:8","nodeType":"VariableDeclaration","scope":1139,"src":"4751:17:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1123,"name":"bytes","nodeType":"ElementaryTypeName","src":"4751:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1126,"mutability":"mutable","name":"value","nameLocation":"4778:5:8","nodeType":"VariableDeclaration","scope":1139,"src":"4770:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1125,"name":"uint256","nodeType":"ElementaryTypeName","src":"4770:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4734:50:8"},"returnParameters":{"id":1130,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1129,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1139,"src":"4803:12:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1128,"name":"bytes","nodeType":"ElementaryTypeName","src":"4803:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4802:14:8"},"scope":1359,"src":"4704:224:8","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1182,"nodeType":"Block","src":"5355:267:8","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1156,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5381:4:8","typeDescriptions":{"typeIdentifier":"t_contract$_AddressUpgradeable_$1359","typeString":"library AddressUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AddressUpgradeable_$1359","typeString":"library AddressUpgradeable"}],"id":1155,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5373:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1154,"name":"address","nodeType":"ElementaryTypeName","src":"5373:7:8","typeDescriptions":{}}},"id":1157,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5373:13:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5387:7:8","memberName":"balance","nodeType":"MemberAccess","src":"5373:21:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":1159,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1146,"src":"5398:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5373:30:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":1161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5405:40:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""},"value":"Address: insufficient balance for call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""}],"id":1153,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5365:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5365:81:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1163,"nodeType":"ExpressionStatement","src":"5365:81:8"},{"assignments":[1165,1167],"declarations":[{"constant":false,"id":1165,"mutability":"mutable","name":"success","nameLocation":"5462:7:8","nodeType":"VariableDeclaration","scope":1182,"src":"5457:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1164,"name":"bool","nodeType":"ElementaryTypeName","src":"5457:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1167,"mutability":"mutable","name":"returndata","nameLocation":"5484:10:8","nodeType":"VariableDeclaration","scope":1182,"src":"5471:23:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1166,"name":"bytes","nodeType":"ElementaryTypeName","src":"5471:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1174,"initialValue":{"arguments":[{"id":1172,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1144,"src":"5524:4:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1168,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1142,"src":"5498:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5505:4:8","memberName":"call","nodeType":"MemberAccess","src":"5498:11:8","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":1171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":1170,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1146,"src":"5517:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5498:25:8","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":1173,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5498:31:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5456:73:8"},{"expression":{"arguments":[{"id":1176,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1142,"src":"5573:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1177,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1165,"src":"5581:7:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1178,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1167,"src":"5590:10:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1179,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1148,"src":"5602:12:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1175,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1314,"src":"5546:26:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":1180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5546:69:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1152,"id":1181,"nodeType":"Return","src":"5539:76:8"}]},"documentation":{"id":1140,"nodeType":"StructuredDocumentation","src":"4934:237:8","text":" @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":1183,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"5185:21:8","nodeType":"FunctionDefinition","parameters":{"id":1149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1142,"mutability":"mutable","name":"target","nameLocation":"5224:6:8","nodeType":"VariableDeclaration","scope":1183,"src":"5216:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1141,"name":"address","nodeType":"ElementaryTypeName","src":"5216:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1144,"mutability":"mutable","name":"data","nameLocation":"5253:4:8","nodeType":"VariableDeclaration","scope":1183,"src":"5240:17:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1143,"name":"bytes","nodeType":"ElementaryTypeName","src":"5240:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1146,"mutability":"mutable","name":"value","nameLocation":"5275:5:8","nodeType":"VariableDeclaration","scope":1183,"src":"5267:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1145,"name":"uint256","nodeType":"ElementaryTypeName","src":"5267:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1148,"mutability":"mutable","name":"errorMessage","nameLocation":"5304:12:8","nodeType":"VariableDeclaration","scope":1183,"src":"5290:26:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1147,"name":"string","nodeType":"ElementaryTypeName","src":"5290:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5206:116:8"},"returnParameters":{"id":1152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1151,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1183,"src":"5341:12:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1150,"name":"bytes","nodeType":"ElementaryTypeName","src":"5341:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5340:14:8"},"scope":1359,"src":"5176:446:8","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1199,"nodeType":"Block","src":"5899:97:8","statements":[{"expression":{"arguments":[{"id":1194,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1186,"src":"5935:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1195,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1188,"src":"5943:4:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":1196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5949:39:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""},"value":"Address: low-level static call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""}],"id":1193,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[1200,1229],"referencedDeclaration":1229,"src":"5916:18:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) view returns (bytes memory)"}},"id":1197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5916:73:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1192,"id":1198,"nodeType":"Return","src":"5909:80:8"}]},"documentation":{"id":1184,"nodeType":"StructuredDocumentation","src":"5628:166:8","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":1200,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"5808:18:8","nodeType":"FunctionDefinition","parameters":{"id":1189,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1186,"mutability":"mutable","name":"target","nameLocation":"5835:6:8","nodeType":"VariableDeclaration","scope":1200,"src":"5827:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1185,"name":"address","nodeType":"ElementaryTypeName","src":"5827:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1188,"mutability":"mutable","name":"data","nameLocation":"5856:4:8","nodeType":"VariableDeclaration","scope":1200,"src":"5843:17:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1187,"name":"bytes","nodeType":"ElementaryTypeName","src":"5843:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5826:35:8"},"returnParameters":{"id":1192,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1191,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1200,"src":"5885:12:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1190,"name":"bytes","nodeType":"ElementaryTypeName","src":"5885:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5884:14:8"},"scope":1359,"src":"5799:197:8","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1228,"nodeType":"Block","src":"6338:168:8","statements":[{"assignments":[1213,1215],"declarations":[{"constant":false,"id":1213,"mutability":"mutable","name":"success","nameLocation":"6354:7:8","nodeType":"VariableDeclaration","scope":1228,"src":"6349:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1212,"name":"bool","nodeType":"ElementaryTypeName","src":"6349:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1215,"mutability":"mutable","name":"returndata","nameLocation":"6376:10:8","nodeType":"VariableDeclaration","scope":1228,"src":"6363:23:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1214,"name":"bytes","nodeType":"ElementaryTypeName","src":"6363:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1220,"initialValue":{"arguments":[{"id":1218,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1205,"src":"6408:4:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1216,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1203,"src":"6390:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6397:10:8","memberName":"staticcall","nodeType":"MemberAccess","src":"6390:17:8","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":1219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6390:23:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6348:65:8"},{"expression":{"arguments":[{"id":1222,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1203,"src":"6457:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1223,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1213,"src":"6465:7:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1224,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1215,"src":"6474:10:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1225,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1207,"src":"6486:12:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1221,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1314,"src":"6430:26:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":1226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6430:69:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1211,"id":1227,"nodeType":"Return","src":"6423:76:8"}]},"documentation":{"id":1201,"nodeType":"StructuredDocumentation","src":"6002:173:8","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":1229,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"6189:18:8","nodeType":"FunctionDefinition","parameters":{"id":1208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1203,"mutability":"mutable","name":"target","nameLocation":"6225:6:8","nodeType":"VariableDeclaration","scope":1229,"src":"6217:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1202,"name":"address","nodeType":"ElementaryTypeName","src":"6217:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1205,"mutability":"mutable","name":"data","nameLocation":"6254:4:8","nodeType":"VariableDeclaration","scope":1229,"src":"6241:17:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1204,"name":"bytes","nodeType":"ElementaryTypeName","src":"6241:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1207,"mutability":"mutable","name":"errorMessage","nameLocation":"6282:12:8","nodeType":"VariableDeclaration","scope":1229,"src":"6268:26:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1206,"name":"string","nodeType":"ElementaryTypeName","src":"6268:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6207:93:8"},"returnParameters":{"id":1211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1210,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1229,"src":"6324:12:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1209,"name":"bytes","nodeType":"ElementaryTypeName","src":"6324:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6323:14:8"},"scope":1359,"src":"6180:326:8","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1245,"nodeType":"Block","src":"6782:101:8","statements":[{"expression":{"arguments":[{"id":1240,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1232,"src":"6820:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1241,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1234,"src":"6828:4:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","id":1242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6834:41:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""},"value":"Address: low-level delegate call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""}],"id":1239,"name":"functionDelegateCall","nodeType":"Identifier","overloadedDeclarations":[1246,1275],"referencedDeclaration":1275,"src":"6799:20:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":1243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6799:77:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1238,"id":1244,"nodeType":"Return","src":"6792:84:8"}]},"documentation":{"id":1230,"nodeType":"StructuredDocumentation","src":"6512:168:8","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":1246,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"6694:20:8","nodeType":"FunctionDefinition","parameters":{"id":1235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1232,"mutability":"mutable","name":"target","nameLocation":"6723:6:8","nodeType":"VariableDeclaration","scope":1246,"src":"6715:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1231,"name":"address","nodeType":"ElementaryTypeName","src":"6715:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1234,"mutability":"mutable","name":"data","nameLocation":"6744:4:8","nodeType":"VariableDeclaration","scope":1246,"src":"6731:17:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1233,"name":"bytes","nodeType":"ElementaryTypeName","src":"6731:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6714:35:8"},"returnParameters":{"id":1238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1237,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1246,"src":"6768:12:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1236,"name":"bytes","nodeType":"ElementaryTypeName","src":"6768:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6767:14:8"},"scope":1359,"src":"6685:198:8","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1274,"nodeType":"Block","src":"7224:170:8","statements":[{"assignments":[1259,1261],"declarations":[{"constant":false,"id":1259,"mutability":"mutable","name":"success","nameLocation":"7240:7:8","nodeType":"VariableDeclaration","scope":1274,"src":"7235:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1258,"name":"bool","nodeType":"ElementaryTypeName","src":"7235:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1261,"mutability":"mutable","name":"returndata","nameLocation":"7262:10:8","nodeType":"VariableDeclaration","scope":1274,"src":"7249:23:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1260,"name":"bytes","nodeType":"ElementaryTypeName","src":"7249:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1266,"initialValue":{"arguments":[{"id":1264,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1251,"src":"7296:4:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1262,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1249,"src":"7276:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7283:12:8","memberName":"delegatecall","nodeType":"MemberAccess","src":"7276:19:8","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":1265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7276:25:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7234:67:8"},{"expression":{"arguments":[{"id":1268,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1249,"src":"7345:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1269,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1259,"src":"7353:7:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1270,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1261,"src":"7362:10:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1271,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1253,"src":"7374:12:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1267,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1314,"src":"7318:26:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":1272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7318:69:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1257,"id":1273,"nodeType":"Return","src":"7311:76:8"}]},"documentation":{"id":1247,"nodeType":"StructuredDocumentation","src":"6889:175:8","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":1275,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"7078:20:8","nodeType":"FunctionDefinition","parameters":{"id":1254,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1249,"mutability":"mutable","name":"target","nameLocation":"7116:6:8","nodeType":"VariableDeclaration","scope":1275,"src":"7108:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1248,"name":"address","nodeType":"ElementaryTypeName","src":"7108:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1251,"mutability":"mutable","name":"data","nameLocation":"7145:4:8","nodeType":"VariableDeclaration","scope":1275,"src":"7132:17:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1250,"name":"bytes","nodeType":"ElementaryTypeName","src":"7132:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1253,"mutability":"mutable","name":"errorMessage","nameLocation":"7173:12:8","nodeType":"VariableDeclaration","scope":1275,"src":"7159:26:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1252,"name":"string","nodeType":"ElementaryTypeName","src":"7159:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7098:93:8"},"returnParameters":{"id":1257,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1256,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1275,"src":"7210:12:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1255,"name":"bytes","nodeType":"ElementaryTypeName","src":"7210:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7209:14:8"},"scope":1359,"src":"7069:325:8","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1313,"nodeType":"Block","src":"7876:434:8","statements":[{"condition":{"id":1289,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1280,"src":"7890:7:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1311,"nodeType":"Block","src":"8246:58:8","statements":[{"expression":{"arguments":[{"id":1307,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1282,"src":"8268:10:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1308,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1284,"src":"8280:12:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1306,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1358,"src":"8260:7:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":1309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8260:33:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1310,"nodeType":"ExpressionStatement","src":"8260:33:8"}]},"id":1312,"nodeType":"IfStatement","src":"7886:418:8","trueBody":{"id":1305,"nodeType":"Block","src":"7899:341:8","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1290,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1282,"src":"7917:10:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7928:6:8","memberName":"length","nodeType":"MemberAccess","src":"7917:17:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1292,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7938:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7917:22:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1302,"nodeType":"IfStatement","src":"7913:286:8","trueBody":{"id":1301,"nodeType":"Block","src":"7941:258:8","statements":[{"expression":{"arguments":[{"arguments":[{"id":1296,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1278,"src":"8143:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1295,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1047,"src":"8132:10:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":1297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8132:18:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":1298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8152:31:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""},"value":"Address: call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""}],"id":1294,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"8124:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1299,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8124:60:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1300,"nodeType":"ExpressionStatement","src":"8124:60:8"}]}},{"expression":{"id":1303,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1282,"src":"8219:10:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1288,"id":1304,"nodeType":"Return","src":"8212:17:8"}]}}]},"documentation":{"id":1276,"nodeType":"StructuredDocumentation","src":"7400:277:8","text":" @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n _Available since v4.8._"},"id":1314,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResultFromTarget","nameLocation":"7691:26:8","nodeType":"FunctionDefinition","parameters":{"id":1285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1278,"mutability":"mutable","name":"target","nameLocation":"7735:6:8","nodeType":"VariableDeclaration","scope":1314,"src":"7727:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1277,"name":"address","nodeType":"ElementaryTypeName","src":"7727:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1280,"mutability":"mutable","name":"success","nameLocation":"7756:7:8","nodeType":"VariableDeclaration","scope":1314,"src":"7751:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1279,"name":"bool","nodeType":"ElementaryTypeName","src":"7751:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1282,"mutability":"mutable","name":"returndata","nameLocation":"7786:10:8","nodeType":"VariableDeclaration","scope":1314,"src":"7773:23:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1281,"name":"bytes","nodeType":"ElementaryTypeName","src":"7773:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1284,"mutability":"mutable","name":"errorMessage","nameLocation":"7820:12:8","nodeType":"VariableDeclaration","scope":1314,"src":"7806:26:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1283,"name":"string","nodeType":"ElementaryTypeName","src":"7806:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7717:121:8"},"returnParameters":{"id":1288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1287,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1314,"src":"7862:12:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1286,"name":"bytes","nodeType":"ElementaryTypeName","src":"7862:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7861:14:8"},"scope":1359,"src":"7682:628:8","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1337,"nodeType":"Block","src":"8691:135:8","statements":[{"condition":{"id":1326,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1317,"src":"8705:7:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1335,"nodeType":"Block","src":"8762:58:8","statements":[{"expression":{"arguments":[{"id":1331,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1319,"src":"8784:10:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1332,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1321,"src":"8796:12:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1330,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1358,"src":"8776:7:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":1333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8776:33:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1334,"nodeType":"ExpressionStatement","src":"8776:33:8"}]},"id":1336,"nodeType":"IfStatement","src":"8701:119:8","trueBody":{"id":1329,"nodeType":"Block","src":"8714:42:8","statements":[{"expression":{"id":1327,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1319,"src":"8735:10:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1325,"id":1328,"nodeType":"Return","src":"8728:17:8"}]}}]},"documentation":{"id":1315,"nodeType":"StructuredDocumentation","src":"8316:210:8","text":" @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason or using the provided one.\n _Available since v4.3._"},"id":1338,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"8540:16:8","nodeType":"FunctionDefinition","parameters":{"id":1322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1317,"mutability":"mutable","name":"success","nameLocation":"8571:7:8","nodeType":"VariableDeclaration","scope":1338,"src":"8566:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1316,"name":"bool","nodeType":"ElementaryTypeName","src":"8566:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1319,"mutability":"mutable","name":"returndata","nameLocation":"8601:10:8","nodeType":"VariableDeclaration","scope":1338,"src":"8588:23:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1318,"name":"bytes","nodeType":"ElementaryTypeName","src":"8588:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1321,"mutability":"mutable","name":"errorMessage","nameLocation":"8635:12:8","nodeType":"VariableDeclaration","scope":1338,"src":"8621:26:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1320,"name":"string","nodeType":"ElementaryTypeName","src":"8621:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8556:97:8"},"returnParameters":{"id":1325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1324,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1338,"src":"8677:12:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1323,"name":"bytes","nodeType":"ElementaryTypeName","src":"8677:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8676:14:8"},"scope":1359,"src":"8531:295:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1357,"nodeType":"Block","src":"8915:457:8","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1345,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1340,"src":"8991:10:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9002:6:8","memberName":"length","nodeType":"MemberAccess","src":"8991:17:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9011:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8991:21:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1355,"nodeType":"Block","src":"9321:45:8","statements":[{"expression":{"arguments":[{"id":1352,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1342,"src":"9342:12:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1351,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"9335:6:8","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":1353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9335:20:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1354,"nodeType":"ExpressionStatement","src":"9335:20:8"}]},"id":1356,"nodeType":"IfStatement","src":"8987:379:8","trueBody":{"id":1350,"nodeType":"Block","src":"9014:301:8","statements":[{"AST":{"nativeSrc":"9172:133:8","nodeType":"YulBlock","src":"9172:133:8","statements":[{"nativeSrc":"9190:40:8","nodeType":"YulVariableDeclaration","src":"9190:40:8","value":{"arguments":[{"name":"returndata","nativeSrc":"9219:10:8","nodeType":"YulIdentifier","src":"9219:10:8"}],"functionName":{"name":"mload","nativeSrc":"9213:5:8","nodeType":"YulIdentifier","src":"9213:5:8"},"nativeSrc":"9213:17:8","nodeType":"YulFunctionCall","src":"9213:17:8"},"variables":[{"name":"returndata_size","nativeSrc":"9194:15:8","nodeType":"YulTypedName","src":"9194:15:8","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9258:2:8","nodeType":"YulLiteral","src":"9258:2:8","type":"","value":"32"},{"name":"returndata","nativeSrc":"9262:10:8","nodeType":"YulIdentifier","src":"9262:10:8"}],"functionName":{"name":"add","nativeSrc":"9254:3:8","nodeType":"YulIdentifier","src":"9254:3:8"},"nativeSrc":"9254:19:8","nodeType":"YulFunctionCall","src":"9254:19:8"},{"name":"returndata_size","nativeSrc":"9275:15:8","nodeType":"YulIdentifier","src":"9275:15:8"}],"functionName":{"name":"revert","nativeSrc":"9247:6:8","nodeType":"YulIdentifier","src":"9247:6:8"},"nativeSrc":"9247:44:8","nodeType":"YulFunctionCall","src":"9247:44:8"},"nativeSrc":"9247:44:8","nodeType":"YulExpressionStatement","src":"9247:44:8"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":1340,"isOffset":false,"isSlot":false,"src":"9219:10:8","valueSize":1},{"declaration":1340,"isOffset":false,"isSlot":false,"src":"9262:10:8","valueSize":1}],"id":1349,"nodeType":"InlineAssembly","src":"9163:142:8"}]}}]},"id":1358,"implemented":true,"kind":"function","modifiers":[],"name":"_revert","nameLocation":"8841:7:8","nodeType":"FunctionDefinition","parameters":{"id":1343,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1340,"mutability":"mutable","name":"returndata","nameLocation":"8862:10:8","nodeType":"VariableDeclaration","scope":1358,"src":"8849:23:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1339,"name":"bytes","nodeType":"ElementaryTypeName","src":"8849:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1342,"mutability":"mutable","name":"errorMessage","nameLocation":"8888:12:8","nodeType":"VariableDeclaration","scope":1358,"src":"8874:26:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1341,"name":"string","nodeType":"ElementaryTypeName","src":"8874:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8848:53:8"},"returnParameters":{"id":1344,"nodeType":"ParameterList","parameters":[],"src":"8915:0:8"},"scope":1359,"src":"8832:540:8","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":1360,"src":"194:9180:8","usedErrors":[],"usedEvents":[]}],"src":"101:9274:8"},"id":8},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","exportedSymbols":{"ContextUpgradeable":[1410],"Initializable":[454]},"id":1411,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1361,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"101:23:9"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":1363,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1411,"sourceUnit":455,"src":"125:63:9","symbolAliases":[{"foreign":{"id":1362,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":454,"src":"133:13:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1365,"name":"Initializable","nameLocations":["727:13:9"],"nodeType":"IdentifierPath","referencedDeclaration":454,"src":"727:13:9"},"id":1366,"nodeType":"InheritanceSpecifier","src":"727:13:9"}],"canonicalName":"ContextUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":1364,"nodeType":"StructuredDocumentation","src":"190:496:9","text":" @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 This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":1410,"linearizedBaseContracts":[1410,454],"name":"ContextUpgradeable","nameLocation":"705:18:9","nodeType":"ContractDefinition","nodes":[{"body":{"id":1371,"nodeType":"Block","src":"799:7:9","statements":[]},"id":1372,"implemented":true,"kind":"function","modifiers":[{"id":1369,"kind":"modifierInvocation","modifierName":{"id":1368,"name":"onlyInitializing","nameLocations":["782:16:9"],"nodeType":"IdentifierPath","referencedDeclaration":399,"src":"782:16:9"},"nodeType":"ModifierInvocation","src":"782:16:9"}],"name":"__Context_init","nameLocation":"756:14:9","nodeType":"FunctionDefinition","parameters":{"id":1367,"nodeType":"ParameterList","parameters":[],"src":"770:2:9"},"returnParameters":{"id":1370,"nodeType":"ParameterList","parameters":[],"src":"799:0:9"},"scope":1410,"src":"747:59:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1377,"nodeType":"Block","src":"874:7:9","statements":[]},"id":1378,"implemented":true,"kind":"function","modifiers":[{"id":1375,"kind":"modifierInvocation","modifierName":{"id":1374,"name":"onlyInitializing","nameLocations":["857:16:9"],"nodeType":"IdentifierPath","referencedDeclaration":399,"src":"857:16:9"},"nodeType":"ModifierInvocation","src":"857:16:9"}],"name":"__Context_init_unchained","nameLocation":"821:24:9","nodeType":"FunctionDefinition","parameters":{"id":1373,"nodeType":"ParameterList","parameters":[],"src":"845:2:9"},"returnParameters":{"id":1376,"nodeType":"ParameterList","parameters":[],"src":"874:0:9"},"scope":1410,"src":"812:69:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1386,"nodeType":"Block","src":"948:34:9","statements":[{"expression":{"expression":{"id":1383,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"965:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"969:6:9","memberName":"sender","nodeType":"MemberAccess","src":"965:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1382,"id":1385,"nodeType":"Return","src":"958:17:9"}]},"id":1387,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"895:10:9","nodeType":"FunctionDefinition","parameters":{"id":1379,"nodeType":"ParameterList","parameters":[],"src":"905:2:9"},"returnParameters":{"id":1382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1381,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1387,"src":"939:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1380,"name":"address","nodeType":"ElementaryTypeName","src":"939:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"938:9:9"},"scope":1410,"src":"886:96:9","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1395,"nodeType":"Block","src":"1055:32:9","statements":[{"expression":{"expression":{"id":1392,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1072:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1076:4:9","memberName":"data","nodeType":"MemberAccess","src":"1072:8:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1391,"id":1394,"nodeType":"Return","src":"1065:15:9"}]},"id":1396,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"997:8:9","nodeType":"FunctionDefinition","parameters":{"id":1388,"nodeType":"ParameterList","parameters":[],"src":"1005:2:9"},"returnParameters":{"id":1391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1390,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1396,"src":"1039:14:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1389,"name":"bytes","nodeType":"ElementaryTypeName","src":"1039:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1038:16:9"},"scope":1410,"src":"988:99:9","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1403,"nodeType":"Block","src":"1165:25:9","statements":[{"expression":{"hexValue":"30","id":1401,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1182:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1400,"id":1402,"nodeType":"Return","src":"1175:8:9"}]},"id":1404,"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"1102:20:9","nodeType":"FunctionDefinition","parameters":{"id":1397,"nodeType":"ParameterList","parameters":[],"src":"1122:2:9"},"returnParameters":{"id":1400,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1399,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1404,"src":"1156:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1398,"name":"uint256","nodeType":"ElementaryTypeName","src":"1156:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1155:9:9"},"scope":1410,"src":"1093:97:9","stateMutability":"view","virtual":true,"visibility":"internal"},{"constant":false,"documentation":{"id":1405,"nodeType":"StructuredDocumentation","src":"1196:254:9","text":" @dev This empty reserved space is put in place to allow future versions to add new\n variables without shifting down storage in the inheritance chain.\n See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"},"id":1409,"mutability":"mutable","name":"__gap","nameLocation":"1475:5:9","nodeType":"VariableDeclaration","scope":1410,"src":"1455:25:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":1406,"name":"uint256","nodeType":"ElementaryTypeName","src":"1455:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1408,"length":{"hexValue":"3530","id":1407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1463:2:9","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"1455:11:9","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"}],"scope":1411,"src":"687:796:9","usedErrors":[],"usedEvents":[300]}],"src":"101:1383:9"},"id":9},"@openzeppelin/contracts/access/IAccessControl.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/IAccessControl.sol","exportedSymbols":{"IAccessControl":[1483]},"id":1484,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1412,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"94:23:10"},{"abstract":false,"baseContracts":[],"canonicalName":"IAccessControl","contractDependencies":[],"contractKind":"interface","documentation":{"id":1413,"nodeType":"StructuredDocumentation","src":"119:89:10","text":" @dev External interface of AccessControl declared to support ERC165 detection."},"fullyImplemented":false,"id":1483,"linearizedBaseContracts":[1483],"name":"IAccessControl","nameLocation":"219:14:10","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":1414,"nodeType":"StructuredDocumentation","src":"240:292:10","text":" @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n {RoleAdminChanged} not being emitted signaling this.\n _Available since v3.1._"},"eventSelector":"bd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff","id":1422,"name":"RoleAdminChanged","nameLocation":"543:16:10","nodeType":"EventDefinition","parameters":{"id":1421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1416,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"576:4:10","nodeType":"VariableDeclaration","scope":1422,"src":"560:20:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1415,"name":"bytes32","nodeType":"ElementaryTypeName","src":"560:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1418,"indexed":true,"mutability":"mutable","name":"previousAdminRole","nameLocation":"598:17:10","nodeType":"VariableDeclaration","scope":1422,"src":"582:33:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1417,"name":"bytes32","nodeType":"ElementaryTypeName","src":"582:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1420,"indexed":true,"mutability":"mutable","name":"newAdminRole","nameLocation":"633:12:10","nodeType":"VariableDeclaration","scope":1422,"src":"617:28:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1419,"name":"bytes32","nodeType":"ElementaryTypeName","src":"617:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"559:87:10"},"src":"537:110:10"},{"anonymous":false,"documentation":{"id":1423,"nodeType":"StructuredDocumentation","src":"653:212:10","text":" @dev Emitted when `account` is granted `role`.\n `sender` is the account that originated the contract call, an admin role\n bearer except when using {AccessControl-_setupRole}."},"eventSelector":"2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","id":1431,"name":"RoleGranted","nameLocation":"876:11:10","nodeType":"EventDefinition","parameters":{"id":1430,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1425,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"904:4:10","nodeType":"VariableDeclaration","scope":1431,"src":"888:20:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1424,"name":"bytes32","nodeType":"ElementaryTypeName","src":"888:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1427,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"926:7:10","nodeType":"VariableDeclaration","scope":1431,"src":"910:23:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1426,"name":"address","nodeType":"ElementaryTypeName","src":"910:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1429,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"951:6:10","nodeType":"VariableDeclaration","scope":1431,"src":"935:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1428,"name":"address","nodeType":"ElementaryTypeName","src":"935:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"887:71:10"},"src":"870:89:10"},{"anonymous":false,"documentation":{"id":1432,"nodeType":"StructuredDocumentation","src":"965:275:10","text":" @dev Emitted when `account` is revoked `role`.\n `sender` is the account that originated the contract call:\n   - if using `revokeRole`, it is the admin role bearer\n   - if using `renounceRole`, it is the role bearer (i.e. `account`)"},"eventSelector":"f6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b","id":1440,"name":"RoleRevoked","nameLocation":"1251:11:10","nodeType":"EventDefinition","parameters":{"id":1439,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1434,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"1279:4:10","nodeType":"VariableDeclaration","scope":1440,"src":"1263:20:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1433,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1263:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1436,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"1301:7:10","nodeType":"VariableDeclaration","scope":1440,"src":"1285:23:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1435,"name":"address","nodeType":"ElementaryTypeName","src":"1285:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1438,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"1326:6:10","nodeType":"VariableDeclaration","scope":1440,"src":"1310:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1437,"name":"address","nodeType":"ElementaryTypeName","src":"1310:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1262:71:10"},"src":"1245:89:10"},{"documentation":{"id":1441,"nodeType":"StructuredDocumentation","src":"1340:76:10","text":" @dev Returns `true` if `account` has been granted `role`."},"functionSelector":"91d14854","id":1450,"implemented":false,"kind":"function","modifiers":[],"name":"hasRole","nameLocation":"1430:7:10","nodeType":"FunctionDefinition","parameters":{"id":1446,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1443,"mutability":"mutable","name":"role","nameLocation":"1446:4:10","nodeType":"VariableDeclaration","scope":1450,"src":"1438:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1442,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1438:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1445,"mutability":"mutable","name":"account","nameLocation":"1460:7:10","nodeType":"VariableDeclaration","scope":1450,"src":"1452:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1444,"name":"address","nodeType":"ElementaryTypeName","src":"1452:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1437:31:10"},"returnParameters":{"id":1449,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1448,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1450,"src":"1492:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1447,"name":"bool","nodeType":"ElementaryTypeName","src":"1492:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1491:6:10"},"scope":1483,"src":"1421:77:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1451,"nodeType":"StructuredDocumentation","src":"1504:184:10","text":" @dev Returns the admin role that controls `role`. See {grantRole} and\n {revokeRole}.\n To change a role's admin, use {AccessControl-_setRoleAdmin}."},"functionSelector":"248a9ca3","id":1458,"implemented":false,"kind":"function","modifiers":[],"name":"getRoleAdmin","nameLocation":"1702:12:10","nodeType":"FunctionDefinition","parameters":{"id":1454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1453,"mutability":"mutable","name":"role","nameLocation":"1723:4:10","nodeType":"VariableDeclaration","scope":1458,"src":"1715:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1452,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1715:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1714:14:10"},"returnParameters":{"id":1457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1456,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1458,"src":"1752:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1455,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1752:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1751:9:10"},"scope":1483,"src":"1693:68:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1459,"nodeType":"StructuredDocumentation","src":"1767:239:10","text":" @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event.\n Requirements:\n - the caller must have ``role``'s admin role."},"functionSelector":"2f2ff15d","id":1466,"implemented":false,"kind":"function","modifiers":[],"name":"grantRole","nameLocation":"2020:9:10","nodeType":"FunctionDefinition","parameters":{"id":1464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1461,"mutability":"mutable","name":"role","nameLocation":"2038:4:10","nodeType":"VariableDeclaration","scope":1466,"src":"2030:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1460,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2030:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1463,"mutability":"mutable","name":"account","nameLocation":"2052:7:10","nodeType":"VariableDeclaration","scope":1466,"src":"2044:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1462,"name":"address","nodeType":"ElementaryTypeName","src":"2044:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2029:31:10"},"returnParameters":{"id":1465,"nodeType":"ParameterList","parameters":[],"src":"2069:0:10"},"scope":1483,"src":"2011:59:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1467,"nodeType":"StructuredDocumentation","src":"2076:223:10","text":" @dev Revokes `role` from `account`.\n If `account` had been granted `role`, emits a {RoleRevoked} event.\n Requirements:\n - the caller must have ``role``'s admin role."},"functionSelector":"d547741f","id":1474,"implemented":false,"kind":"function","modifiers":[],"name":"revokeRole","nameLocation":"2313:10:10","nodeType":"FunctionDefinition","parameters":{"id":1472,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1469,"mutability":"mutable","name":"role","nameLocation":"2332:4:10","nodeType":"VariableDeclaration","scope":1474,"src":"2324:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1468,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2324:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1471,"mutability":"mutable","name":"account","nameLocation":"2346:7:10","nodeType":"VariableDeclaration","scope":1474,"src":"2338:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1470,"name":"address","nodeType":"ElementaryTypeName","src":"2338:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2323:31:10"},"returnParameters":{"id":1473,"nodeType":"ParameterList","parameters":[],"src":"2363:0:10"},"scope":1483,"src":"2304:60:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1475,"nodeType":"StructuredDocumentation","src":"2370:480:10","text":" @dev Revokes `role` from the calling account.\n Roles are often managed via {grantRole} and {revokeRole}: this function's\n purpose is to provide a mechanism for accounts to lose their privileges\n if they are compromised (such as when a trusted device is misplaced).\n If the calling account had been granted `role`, emits a {RoleRevoked}\n event.\n Requirements:\n - the caller must be `account`."},"functionSelector":"36568abe","id":1482,"implemented":false,"kind":"function","modifiers":[],"name":"renounceRole","nameLocation":"2864:12:10","nodeType":"FunctionDefinition","parameters":{"id":1480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1477,"mutability":"mutable","name":"role","nameLocation":"2885:4:10","nodeType":"VariableDeclaration","scope":1482,"src":"2877:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1476,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2877:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1479,"mutability":"mutable","name":"account","nameLocation":"2899:7:10","nodeType":"VariableDeclaration","scope":1482,"src":"2891:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1478,"name":"address","nodeType":"ElementaryTypeName","src":"2891:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2876:31:10"},"returnParameters":{"id":1481,"nodeType":"ParameterList","parameters":[],"src":"2916:0:10"},"scope":1483,"src":"2855:62:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1484,"src":"209:2710:10","usedErrors":[],"usedEvents":[1422,1431,1440]}],"src":"94:2826:10"},"id":10},"@openzeppelin/contracts/access/Ownable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","exportedSymbols":{"Context":[2644],"Ownable":[1596]},"id":1597,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1485,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"102:23:11"},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../utils/Context.sol","id":1486,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1597,"sourceUnit":2645,"src":"127:30:11","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1488,"name":"Context","nameLocations":["683:7:11"],"nodeType":"IdentifierPath","referencedDeclaration":2644,"src":"683:7:11"},"id":1489,"nodeType":"InheritanceSpecifier","src":"683:7:11"}],"canonicalName":"Ownable","contractDependencies":[],"contractKind":"contract","documentation":{"id":1487,"nodeType":"StructuredDocumentation","src":"159:494:11","text":" @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 By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\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."},"fullyImplemented":true,"id":1596,"linearizedBaseContracts":[1596,2644],"name":"Ownable","nameLocation":"672:7:11","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":1491,"mutability":"mutable","name":"_owner","nameLocation":"713:6:11","nodeType":"VariableDeclaration","scope":1596,"src":"697:22:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1490,"name":"address","nodeType":"ElementaryTypeName","src":"697:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"anonymous":false,"eventSelector":"8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","id":1497,"name":"OwnershipTransferred","nameLocation":"732:20:11","nodeType":"EventDefinition","parameters":{"id":1496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1493,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"769:13:11","nodeType":"VariableDeclaration","scope":1497,"src":"753:29:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1492,"name":"address","nodeType":"ElementaryTypeName","src":"753:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1495,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"800:8:11","nodeType":"VariableDeclaration","scope":1497,"src":"784:24:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1494,"name":"address","nodeType":"ElementaryTypeName","src":"784:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"752:57:11"},"src":"726:84:11"},{"body":{"id":1506,"nodeType":"Block","src":"926:49:11","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1502,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2626,"src":"955:10:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"955:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1501,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1595,"src":"936:18:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"936:32:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1505,"nodeType":"ExpressionStatement","src":"936:32:11"}]},"documentation":{"id":1498,"nodeType":"StructuredDocumentation","src":"816:91:11","text":" @dev Initializes the contract setting the deployer as the initial owner."},"id":1507,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1499,"nodeType":"ParameterList","parameters":[],"src":"923:2:11"},"returnParameters":{"id":1500,"nodeType":"ParameterList","parameters":[],"src":"926:0:11"},"scope":1596,"src":"912:63:11","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1514,"nodeType":"Block","src":"1084:41:11","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1510,"name":"_checkOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1538,"src":"1094:11:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":1511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1094:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1512,"nodeType":"ExpressionStatement","src":"1094:13:11"},{"id":1513,"nodeType":"PlaceholderStatement","src":"1117:1:11"}]},"documentation":{"id":1508,"nodeType":"StructuredDocumentation","src":"981:77:11","text":" @dev Throws if called by any account other than the owner."},"id":1515,"name":"onlyOwner","nameLocation":"1072:9:11","nodeType":"ModifierDefinition","parameters":{"id":1509,"nodeType":"ParameterList","parameters":[],"src":"1081:2:11"},"src":"1063:62:11","virtual":false,"visibility":"internal"},{"body":{"id":1523,"nodeType":"Block","src":"1256:30:11","statements":[{"expression":{"id":1521,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"1273:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1520,"id":1522,"nodeType":"Return","src":"1266:13:11"}]},"documentation":{"id":1516,"nodeType":"StructuredDocumentation","src":"1131:65:11","text":" @dev Returns the address of the current owner."},"functionSelector":"8da5cb5b","id":1524,"implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"1210:5:11","nodeType":"FunctionDefinition","parameters":{"id":1517,"nodeType":"ParameterList","parameters":[],"src":"1215:2:11"},"returnParameters":{"id":1520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1519,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1524,"src":"1247:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1518,"name":"address","nodeType":"ElementaryTypeName","src":"1247:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1246:9:11"},"scope":1596,"src":"1201:85:11","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":1537,"nodeType":"Block","src":"1404:85:11","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":1529,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1524,"src":"1422:5:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1422:7:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":1531,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2626,"src":"1433:10:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1433:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1422:23:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","id":1534,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1447:34:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""},"value":"Ownable: caller is not the owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""}],"id":1528,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1414:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1414:68:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1536,"nodeType":"ExpressionStatement","src":"1414:68:11"}]},"documentation":{"id":1525,"nodeType":"StructuredDocumentation","src":"1292:62:11","text":" @dev Throws if the sender is not the owner."},"id":1538,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOwner","nameLocation":"1368:11:11","nodeType":"FunctionDefinition","parameters":{"id":1526,"nodeType":"ParameterList","parameters":[],"src":"1379:2:11"},"returnParameters":{"id":1527,"nodeType":"ParameterList","parameters":[],"src":"1404:0:11"},"scope":1596,"src":"1359:130:11","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1551,"nodeType":"Block","src":"1878:47:11","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":1547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1915:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1546,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1907:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1545,"name":"address","nodeType":"ElementaryTypeName","src":"1907:7:11","typeDescriptions":{}}},"id":1548,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1907:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1544,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1595,"src":"1888:18:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1888:30:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1550,"nodeType":"ExpressionStatement","src":"1888:30:11"}]},"documentation":{"id":1539,"nodeType":"StructuredDocumentation","src":"1495:324:11","text":" @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby disabling any functionality that is only available to the owner."},"functionSelector":"715018a6","id":1552,"implemented":true,"kind":"function","modifiers":[{"id":1542,"kind":"modifierInvocation","modifierName":{"id":1541,"name":"onlyOwner","nameLocations":["1868:9:11"],"nodeType":"IdentifierPath","referencedDeclaration":1515,"src":"1868:9:11"},"nodeType":"ModifierInvocation","src":"1868:9:11"}],"name":"renounceOwnership","nameLocation":"1833:17:11","nodeType":"FunctionDefinition","parameters":{"id":1540,"nodeType":"ParameterList","parameters":[],"src":"1850:2:11"},"returnParameters":{"id":1543,"nodeType":"ParameterList","parameters":[],"src":"1878:0:11"},"scope":1596,"src":"1824:101:11","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":1574,"nodeType":"Block","src":"2144:128:11","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1561,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1555,"src":"2162:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1564,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2182:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1563,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2174:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1562,"name":"address","nodeType":"ElementaryTypeName","src":"2174:7:11","typeDescriptions":{}}},"id":1565,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2174:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2162:22:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373","id":1567,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2186:40:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","typeString":"literal_string \"Ownable: new owner is the zero address\""},"value":"Ownable: new owner is the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","typeString":"literal_string \"Ownable: new owner is the zero address\""}],"id":1560,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2154:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2154:73:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1569,"nodeType":"ExpressionStatement","src":"2154:73:11"},{"expression":{"arguments":[{"id":1571,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1555,"src":"2256:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1570,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1595,"src":"2237:18:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1572,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2237:28:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1573,"nodeType":"ExpressionStatement","src":"2237:28:11"}]},"documentation":{"id":1553,"nodeType":"StructuredDocumentation","src":"1931:138:11","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."},"functionSelector":"f2fde38b","id":1575,"implemented":true,"kind":"function","modifiers":[{"id":1558,"kind":"modifierInvocation","modifierName":{"id":1557,"name":"onlyOwner","nameLocations":["2134:9:11"],"nodeType":"IdentifierPath","referencedDeclaration":1515,"src":"2134:9:11"},"nodeType":"ModifierInvocation","src":"2134:9:11"}],"name":"transferOwnership","nameLocation":"2083:17:11","nodeType":"FunctionDefinition","parameters":{"id":1556,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1555,"mutability":"mutable","name":"newOwner","nameLocation":"2109:8:11","nodeType":"VariableDeclaration","scope":1575,"src":"2101:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1554,"name":"address","nodeType":"ElementaryTypeName","src":"2101:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2100:18:11"},"returnParameters":{"id":1559,"nodeType":"ParameterList","parameters":[],"src":"2144:0:11"},"scope":1596,"src":"2074:198:11","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":1594,"nodeType":"Block","src":"2489:124:11","statements":[{"assignments":[1582],"declarations":[{"constant":false,"id":1582,"mutability":"mutable","name":"oldOwner","nameLocation":"2507:8:11","nodeType":"VariableDeclaration","scope":1594,"src":"2499:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1581,"name":"address","nodeType":"ElementaryTypeName","src":"2499:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1584,"initialValue":{"id":1583,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"2518:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2499:25:11"},{"expression":{"id":1587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1585,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"2534:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1586,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1578,"src":"2543:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2534:17:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1588,"nodeType":"ExpressionStatement","src":"2534:17:11"},{"eventCall":{"arguments":[{"id":1590,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1582,"src":"2587:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1591,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1578,"src":"2597:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1589,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1497,"src":"2566:20:11","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":1592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2566:40:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1593,"nodeType":"EmitStatement","src":"2561:45:11"}]},"documentation":{"id":1576,"nodeType":"StructuredDocumentation","src":"2278:143:11","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."},"id":1595,"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"2435:18:11","nodeType":"FunctionDefinition","parameters":{"id":1579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1578,"mutability":"mutable","name":"newOwner","nameLocation":"2462:8:11","nodeType":"VariableDeclaration","scope":1595,"src":"2454:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1577,"name":"address","nodeType":"ElementaryTypeName","src":"2454:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2453:18:11"},"returnParameters":{"id":1580,"nodeType":"ParameterList","parameters":[],"src":"2489:0:11"},"scope":1596,"src":"2426:187:11","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":1597,"src":"654:1961:11","usedErrors":[],"usedEvents":[1497]}],"src":"102:2514:11"},"id":11},"@openzeppelin/contracts/access/Ownable2Step.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/Ownable2Step.sol","exportedSymbols":{"Context":[2644],"Ownable":[1596],"Ownable2Step":[1679]},"id":1680,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1598,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"107:23:12"},{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","file":"./Ownable.sol","id":1599,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1680,"sourceUnit":1597,"src":"132:23:12","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1601,"name":"Ownable","nameLocations":["633:7:12"],"nodeType":"IdentifierPath","referencedDeclaration":1596,"src":"633:7:12"},"id":1602,"nodeType":"InheritanceSpecifier","src":"633:7:12"}],"canonicalName":"Ownable2Step","contractDependencies":[],"contractKind":"contract","documentation":{"id":1600,"nodeType":"StructuredDocumentation","src":"157:441:12","text":" @dev Contract module which provides access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership} and {acceptOwnership}.\n This module is used through inheritance. It will make available all functions\n from parent (Ownable)."},"fullyImplemented":true,"id":1679,"linearizedBaseContracts":[1679,1596,2644],"name":"Ownable2Step","nameLocation":"617:12:12","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":1604,"mutability":"mutable","name":"_pendingOwner","nameLocation":"663:13:12","nodeType":"VariableDeclaration","scope":1679,"src":"647:29:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1603,"name":"address","nodeType":"ElementaryTypeName","src":"647:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"anonymous":false,"eventSelector":"38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700","id":1610,"name":"OwnershipTransferStarted","nameLocation":"689:24:12","nodeType":"EventDefinition","parameters":{"id":1609,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1606,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"730:13:12","nodeType":"VariableDeclaration","scope":1610,"src":"714:29:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1605,"name":"address","nodeType":"ElementaryTypeName","src":"714:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1608,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"761:8:12","nodeType":"VariableDeclaration","scope":1610,"src":"745:24:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1607,"name":"address","nodeType":"ElementaryTypeName","src":"745:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"713:57:12"},"src":"683:88:12"},{"body":{"id":1618,"nodeType":"Block","src":"909:37:12","statements":[{"expression":{"id":1616,"name":"_pendingOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1604,"src":"926:13:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1615,"id":1617,"nodeType":"Return","src":"919:20:12"}]},"documentation":{"id":1611,"nodeType":"StructuredDocumentation","src":"777:65:12","text":" @dev Returns the address of the pending owner."},"functionSelector":"e30c3978","id":1619,"implemented":true,"kind":"function","modifiers":[],"name":"pendingOwner","nameLocation":"856:12:12","nodeType":"FunctionDefinition","parameters":{"id":1612,"nodeType":"ParameterList","parameters":[],"src":"868:2:12"},"returnParameters":{"id":1615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1614,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1619,"src":"900:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1613,"name":"address","nodeType":"ElementaryTypeName","src":"900:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"899:9:12"},"scope":1679,"src":"847:99:12","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1575],"body":{"id":1638,"nodeType":"Block","src":"1218:99:12","statements":[{"expression":{"id":1630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1628,"name":"_pendingOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1604,"src":"1228:13:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1629,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1622,"src":"1244:8:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1228:24:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1631,"nodeType":"ExpressionStatement","src":"1228:24:12"},{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1633,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1524,"src":"1292:5:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1292:7:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1635,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1622,"src":"1301:8:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1632,"name":"OwnershipTransferStarted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1610,"src":"1267:24:12","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":1636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1267:43:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1637,"nodeType":"EmitStatement","src":"1262:48:12"}]},"documentation":{"id":1620,"nodeType":"StructuredDocumentation","src":"952:182:12","text":" @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.\n Can only be called by the current owner."},"functionSelector":"f2fde38b","id":1639,"implemented":true,"kind":"function","modifiers":[{"id":1626,"kind":"modifierInvocation","modifierName":{"id":1625,"name":"onlyOwner","nameLocations":["1208:9:12"],"nodeType":"IdentifierPath","referencedDeclaration":1515,"src":"1208:9:12"},"nodeType":"ModifierInvocation","src":"1208:9:12"}],"name":"transferOwnership","nameLocation":"1148:17:12","nodeType":"FunctionDefinition","overrides":{"id":1624,"nodeType":"OverrideSpecifier","overrides":[],"src":"1199:8:12"},"parameters":{"id":1623,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1622,"mutability":"mutable","name":"newOwner","nameLocation":"1174:8:12","nodeType":"VariableDeclaration","scope":1639,"src":"1166:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1621,"name":"address","nodeType":"ElementaryTypeName","src":"1166:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1165:18:12"},"returnParameters":{"id":1627,"nodeType":"ParameterList","parameters":[],"src":"1218:0:12"},"scope":1679,"src":"1139:178:12","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1595],"body":{"id":1655,"nodeType":"Block","src":"1573:81:12","statements":[{"expression":{"id":1647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"1583:20:12","subExpression":{"id":1646,"name":"_pendingOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1604,"src":"1590:13:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1648,"nodeType":"ExpressionStatement","src":"1583:20:12"},{"expression":{"arguments":[{"id":1652,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1642,"src":"1638:8:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1649,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"1613:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_Ownable2Step_$1679_$","typeString":"type(contract super Ownable2Step)"}},"id":1651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1619:18:12","memberName":"_transferOwnership","nodeType":"MemberAccess","referencedDeclaration":1595,"src":"1613:24:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1613:34:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1654,"nodeType":"ExpressionStatement","src":"1613:34:12"}]},"documentation":{"id":1640,"nodeType":"StructuredDocumentation","src":"1323:173:12","text":" @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.\n Internal function without access restriction."},"id":1656,"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"1510:18:12","nodeType":"FunctionDefinition","overrides":{"id":1644,"nodeType":"OverrideSpecifier","overrides":[],"src":"1564:8:12"},"parameters":{"id":1643,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1642,"mutability":"mutable","name":"newOwner","nameLocation":"1537:8:12","nodeType":"VariableDeclaration","scope":1656,"src":"1529:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1641,"name":"address","nodeType":"ElementaryTypeName","src":"1529:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1528:18:12"},"returnParameters":{"id":1645,"nodeType":"ParameterList","parameters":[],"src":"1573:0:12"},"scope":1679,"src":"1501:153:12","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1677,"nodeType":"Block","src":"1776:170:12","statements":[{"assignments":[1661],"declarations":[{"constant":false,"id":1661,"mutability":"mutable","name":"sender","nameLocation":"1794:6:12","nodeType":"VariableDeclaration","scope":1677,"src":"1786:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1660,"name":"address","nodeType":"ElementaryTypeName","src":"1786:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1664,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1662,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2626,"src":"1803:10:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1803:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1786:29:12"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":1666,"name":"pendingOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1619,"src":"1833:12:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1833:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1668,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1661,"src":"1851:6:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1833:24:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206e6577206f776e6572","id":1670,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1859:43:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_225559eb8402045bea7ff07c35d0ad8c0547830223ac1c21d44fb948d6896ebc","typeString":"literal_string \"Ownable2Step: caller is not the new owner\""},"value":"Ownable2Step: caller is not the new owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_225559eb8402045bea7ff07c35d0ad8c0547830223ac1c21d44fb948d6896ebc","typeString":"literal_string \"Ownable2Step: caller is not the new owner\""}],"id":1665,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1825:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1825:78:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1672,"nodeType":"ExpressionStatement","src":"1825:78:12"},{"expression":{"arguments":[{"id":1674,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1661,"src":"1932:6:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1673,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[1656],"referencedDeclaration":1656,"src":"1913:18:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1913:26:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1676,"nodeType":"ExpressionStatement","src":"1913:26:12"}]},"documentation":{"id":1657,"nodeType":"StructuredDocumentation","src":"1660:69:12","text":" @dev The new owner accepts the ownership transfer."},"functionSelector":"79ba5097","id":1678,"implemented":true,"kind":"function","modifiers":[],"name":"acceptOwnership","nameLocation":"1743:15:12","nodeType":"FunctionDefinition","parameters":{"id":1658,"nodeType":"ParameterList","parameters":[],"src":"1758:2:12"},"returnParameters":{"id":1659,"nodeType":"ParameterList","parameters":[],"src":"1776:0:12"},"scope":1679,"src":"1734:212:12","stateMutability":"nonpayable","virtual":true,"visibility":"public"}],"scope":1680,"src":"599:1349:12","usedErrors":[],"usedEvents":[1497,1610]}],"src":"107:1842:12"},"id":12},"@openzeppelin/contracts/interfaces/IERC5267.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC5267.sol","exportedSymbols":{"IERC5267":[1704]},"id":1705,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1681,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"107:23:13"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC5267","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":1704,"linearizedBaseContracts":[1704],"name":"IERC5267","nameLocation":"142:8:13","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":1682,"nodeType":"StructuredDocumentation","src":"157:84:13","text":" @dev MAY be emitted to signal that the domain could have changed."},"eventSelector":"0a6387c9ea3628b88a633bb4f3b151770f70085117a15f9bf3787cda53f13d31","id":1684,"name":"EIP712DomainChanged","nameLocation":"252:19:13","nodeType":"EventDefinition","parameters":{"id":1683,"nodeType":"ParameterList","parameters":[],"src":"271:2:13"},"src":"246:28:13"},{"documentation":{"id":1685,"nodeType":"StructuredDocumentation","src":"280:140:13","text":" @dev returns the fields and values that describe the domain separator used by this contract for EIP-712\n signature."},"functionSelector":"84b0196e","id":1703,"implemented":false,"kind":"function","modifiers":[],"name":"eip712Domain","nameLocation":"434:12:13","nodeType":"FunctionDefinition","parameters":{"id":1686,"nodeType":"ParameterList","parameters":[],"src":"446:2:13"},"returnParameters":{"id":1702,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1688,"mutability":"mutable","name":"fields","nameLocation":"516:6:13","nodeType":"VariableDeclaration","scope":1703,"src":"509:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":1687,"name":"bytes1","nodeType":"ElementaryTypeName","src":"509:6:13","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"},{"constant":false,"id":1690,"mutability":"mutable","name":"name","nameLocation":"550:4:13","nodeType":"VariableDeclaration","scope":1703,"src":"536:18:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1689,"name":"string","nodeType":"ElementaryTypeName","src":"536:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1692,"mutability":"mutable","name":"version","nameLocation":"582:7:13","nodeType":"VariableDeclaration","scope":1703,"src":"568:21:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1691,"name":"string","nodeType":"ElementaryTypeName","src":"568:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1694,"mutability":"mutable","name":"chainId","nameLocation":"611:7:13","nodeType":"VariableDeclaration","scope":1703,"src":"603:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1693,"name":"uint256","nodeType":"ElementaryTypeName","src":"603:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1696,"mutability":"mutable","name":"verifyingContract","nameLocation":"640:17:13","nodeType":"VariableDeclaration","scope":1703,"src":"632:25:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1695,"name":"address","nodeType":"ElementaryTypeName","src":"632:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1698,"mutability":"mutable","name":"salt","nameLocation":"679:4:13","nodeType":"VariableDeclaration","scope":1703,"src":"671:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1697,"name":"bytes32","nodeType":"ElementaryTypeName","src":"671:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1701,"mutability":"mutable","name":"extensions","nameLocation":"714:10:13","nodeType":"VariableDeclaration","scope":1703,"src":"697:27:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1699,"name":"uint256","nodeType":"ElementaryTypeName","src":"697:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1700,"nodeType":"ArrayTypeName","src":"697:9:13","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"495:239:13"},"scope":1704,"src":"425:310:13","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1705,"src":"132:605:13","usedErrors":[],"usedEvents":[1684]}],"src":"107:631:13"},"id":13},"@openzeppelin/contracts/security/ReentrancyGuard.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/security/ReentrancyGuard.sol","exportedSymbols":{"ReentrancyGuard":[1769]},"id":1770,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1706,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"112:23:14"},{"abstract":true,"baseContracts":[],"canonicalName":"ReentrancyGuard","contractDependencies":[],"contractKind":"contract","documentation":{"id":1707,"nodeType":"StructuredDocumentation","src":"137:750:14","text":" @dev Contract module that helps prevent reentrant calls to a function.\n Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n available, which can be applied to functions to make sure there are no nested\n (reentrant) calls to them.\n Note that because there is a single `nonReentrant` guard, functions marked as\n `nonReentrant` may not call one another. This can be worked around by making\n those functions `private`, and then adding `external` `nonReentrant` entry\n points to them.\n TIP: If you would like to learn more about reentrancy and alternative ways\n to protect against it, check out our blog post\n https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]."},"fullyImplemented":true,"id":1769,"linearizedBaseContracts":[1769],"name":"ReentrancyGuard","nameLocation":"906:15:14","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":1710,"mutability":"constant","name":"_NOT_ENTERED","nameLocation":"1701:12:14","nodeType":"VariableDeclaration","scope":1769,"src":"1676:41:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1708,"name":"uint256","nodeType":"ElementaryTypeName","src":"1676:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":1709,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1716:1:14","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"private"},{"constant":true,"id":1713,"mutability":"constant","name":"_ENTERED","nameLocation":"1748:8:14","nodeType":"VariableDeclaration","scope":1769,"src":"1723:37:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1711,"name":"uint256","nodeType":"ElementaryTypeName","src":"1723:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":1712,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1759:1:14","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"private"},{"constant":false,"id":1715,"mutability":"mutable","name":"_status","nameLocation":"1783:7:14","nodeType":"VariableDeclaration","scope":1769,"src":"1767:23:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1714,"name":"uint256","nodeType":"ElementaryTypeName","src":"1767:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"body":{"id":1722,"nodeType":"Block","src":"1811:39:14","statements":[{"expression":{"id":1720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1718,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1715,"src":"1821:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1719,"name":"_NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1710,"src":"1831:12:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1821:22:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1721,"nodeType":"ExpressionStatement","src":"1821:22:14"}]},"id":1723,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1716,"nodeType":"ParameterList","parameters":[],"src":"1808:2:14"},"returnParameters":{"id":1717,"nodeType":"ParameterList","parameters":[],"src":"1811:0:14"},"scope":1769,"src":"1797:53:14","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1733,"nodeType":"Block","src":"2251:79:14","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1726,"name":"_nonReentrantBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1749,"src":"2261:19:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2261:21:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1728,"nodeType":"ExpressionStatement","src":"2261:21:14"},{"id":1729,"nodeType":"PlaceholderStatement","src":"2292:1:14"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1730,"name":"_nonReentrantAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1757,"src":"2303:18:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2303:20:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1732,"nodeType":"ExpressionStatement","src":"2303:20:14"}]},"documentation":{"id":1724,"nodeType":"StructuredDocumentation","src":"1856:366:14","text":" @dev Prevents a contract from calling itself, directly or indirectly.\n Calling a `nonReentrant` function from another `nonReentrant`\n function is not supported. It is possible to prevent this from happening\n by making the `nonReentrant` function external, and making it call a\n `private` function that does the actual work."},"id":1734,"name":"nonReentrant","nameLocation":"2236:12:14","nodeType":"ModifierDefinition","parameters":{"id":1725,"nodeType":"ParameterList","parameters":[],"src":"2248:2:14"},"src":"2227:103:14","virtual":false,"visibility":"internal"},{"body":{"id":1748,"nodeType":"Block","src":"2375:248:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1738,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1715,"src":"2468:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":1739,"name":"_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1713,"src":"2479:8:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2468:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5265656e7472616e637947756172643a207265656e7472616e742063616c6c","id":1741,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2489:33:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619","typeString":"literal_string \"ReentrancyGuard: reentrant call\""},"value":"ReentrancyGuard: reentrant call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619","typeString":"literal_string \"ReentrancyGuard: reentrant call\""}],"id":1737,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2460:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1742,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2460:63:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1743,"nodeType":"ExpressionStatement","src":"2460:63:14"},{"expression":{"id":1746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1744,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1715,"src":"2598:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1745,"name":"_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1713,"src":"2608:8:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2598:18:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1747,"nodeType":"ExpressionStatement","src":"2598:18:14"}]},"id":1749,"implemented":true,"kind":"function","modifiers":[],"name":"_nonReentrantBefore","nameLocation":"2345:19:14","nodeType":"FunctionDefinition","parameters":{"id":1735,"nodeType":"ParameterList","parameters":[],"src":"2364:2:14"},"returnParameters":{"id":1736,"nodeType":"ParameterList","parameters":[],"src":"2375:0:14"},"scope":1769,"src":"2336:287:14","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1756,"nodeType":"Block","src":"2667:171:14","statements":[{"expression":{"id":1754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1752,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1715,"src":"2809:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1753,"name":"_NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1710,"src":"2819:12:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2809:22:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1755,"nodeType":"ExpressionStatement","src":"2809:22:14"}]},"id":1757,"implemented":true,"kind":"function","modifiers":[],"name":"_nonReentrantAfter","nameLocation":"2638:18:14","nodeType":"FunctionDefinition","parameters":{"id":1750,"nodeType":"ParameterList","parameters":[],"src":"2656:2:14"},"returnParameters":{"id":1751,"nodeType":"ParameterList","parameters":[],"src":"2667:0:14"},"scope":1769,"src":"2629:209:14","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1767,"nodeType":"Block","src":"3081:43:14","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1763,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1715,"src":"3098:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1764,"name":"_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1713,"src":"3109:8:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3098:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1762,"id":1766,"nodeType":"Return","src":"3091:26:14"}]},"documentation":{"id":1758,"nodeType":"StructuredDocumentation","src":"2844:168:14","text":" @dev Returns true if the reentrancy guard is currently set to \"entered\", which indicates there is a\n `nonReentrant` function in the call stack."},"id":1768,"implemented":true,"kind":"function","modifiers":[],"name":"_reentrancyGuardEntered","nameLocation":"3026:23:14","nodeType":"FunctionDefinition","parameters":{"id":1759,"nodeType":"ParameterList","parameters":[],"src":"3049:2:14"},"returnParameters":{"id":1762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1761,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1768,"src":"3075:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1760,"name":"bool","nodeType":"ElementaryTypeName","src":"3075:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3074:6:14"},"scope":1769,"src":"3017:107:14","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":1770,"src":"888:2238:14","usedErrors":[],"usedEvents":[]}],"src":"112:3015:14"},"id":14},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[1847]},"id":1848,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1771,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"106:23:15"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20","contractDependencies":[],"contractKind":"interface","documentation":{"id":1772,"nodeType":"StructuredDocumentation","src":"131:70:15","text":" @dev Interface of the ERC20 standard as defined in the EIP."},"fullyImplemented":false,"id":1847,"linearizedBaseContracts":[1847],"name":"IERC20","nameLocation":"212:6:15","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":1773,"nodeType":"StructuredDocumentation","src":"225:158:15","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":1781,"name":"Transfer","nameLocation":"394:8:15","nodeType":"EventDefinition","parameters":{"id":1780,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1775,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"419:4:15","nodeType":"VariableDeclaration","scope":1781,"src":"403:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1774,"name":"address","nodeType":"ElementaryTypeName","src":"403:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1777,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"441:2:15","nodeType":"VariableDeclaration","scope":1781,"src":"425:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1776,"name":"address","nodeType":"ElementaryTypeName","src":"425:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1779,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"453:5:15","nodeType":"VariableDeclaration","scope":1781,"src":"445:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1778,"name":"uint256","nodeType":"ElementaryTypeName","src":"445:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"402:57:15"},"src":"388:72:15"},{"anonymous":false,"documentation":{"id":1782,"nodeType":"StructuredDocumentation","src":"466:148:15","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":1790,"name":"Approval","nameLocation":"625:8:15","nodeType":"EventDefinition","parameters":{"id":1789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1784,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"650:5:15","nodeType":"VariableDeclaration","scope":1790,"src":"634:21:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1783,"name":"address","nodeType":"ElementaryTypeName","src":"634:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1786,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"673:7:15","nodeType":"VariableDeclaration","scope":1790,"src":"657:23:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1785,"name":"address","nodeType":"ElementaryTypeName","src":"657:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1788,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"690:5:15","nodeType":"VariableDeclaration","scope":1790,"src":"682:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1787,"name":"uint256","nodeType":"ElementaryTypeName","src":"682:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"633:63:15"},"src":"619:78:15"},{"documentation":{"id":1791,"nodeType":"StructuredDocumentation","src":"703:66:15","text":" @dev Returns the amount of tokens in existence."},"functionSelector":"18160ddd","id":1796,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"783:11:15","nodeType":"FunctionDefinition","parameters":{"id":1792,"nodeType":"ParameterList","parameters":[],"src":"794:2:15"},"returnParameters":{"id":1795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1794,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1796,"src":"820:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1793,"name":"uint256","nodeType":"ElementaryTypeName","src":"820:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"819:9:15"},"scope":1847,"src":"774:55:15","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1797,"nodeType":"StructuredDocumentation","src":"835:72:15","text":" @dev Returns the amount of tokens owned by `account`."},"functionSelector":"70a08231","id":1804,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"921:9:15","nodeType":"FunctionDefinition","parameters":{"id":1800,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1799,"mutability":"mutable","name":"account","nameLocation":"939:7:15","nodeType":"VariableDeclaration","scope":1804,"src":"931:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1798,"name":"address","nodeType":"ElementaryTypeName","src":"931:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"930:17:15"},"returnParameters":{"id":1803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1802,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1804,"src":"971:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1801,"name":"uint256","nodeType":"ElementaryTypeName","src":"971:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"970:9:15"},"scope":1847,"src":"912:68:15","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1805,"nodeType":"StructuredDocumentation","src":"986:202:15","text":" @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":1814,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1202:8:15","nodeType":"FunctionDefinition","parameters":{"id":1810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1807,"mutability":"mutable","name":"to","nameLocation":"1219:2:15","nodeType":"VariableDeclaration","scope":1814,"src":"1211:10:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1806,"name":"address","nodeType":"ElementaryTypeName","src":"1211:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1809,"mutability":"mutable","name":"amount","nameLocation":"1231:6:15","nodeType":"VariableDeclaration","scope":1814,"src":"1223:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1808,"name":"uint256","nodeType":"ElementaryTypeName","src":"1223:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1210:28:15"},"returnParameters":{"id":1813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1812,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1814,"src":"1257:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1811,"name":"bool","nodeType":"ElementaryTypeName","src":"1257:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1256:6:15"},"scope":1847,"src":"1193:70:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1815,"nodeType":"StructuredDocumentation","src":"1269:264:15","text":" @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 This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","id":1824,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1547:9:15","nodeType":"FunctionDefinition","parameters":{"id":1820,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1817,"mutability":"mutable","name":"owner","nameLocation":"1565:5:15","nodeType":"VariableDeclaration","scope":1824,"src":"1557:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1816,"name":"address","nodeType":"ElementaryTypeName","src":"1557:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1819,"mutability":"mutable","name":"spender","nameLocation":"1580:7:15","nodeType":"VariableDeclaration","scope":1824,"src":"1572:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1818,"name":"address","nodeType":"ElementaryTypeName","src":"1572:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1556:32:15"},"returnParameters":{"id":1823,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1822,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1824,"src":"1612:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1821,"name":"uint256","nodeType":"ElementaryTypeName","src":"1612:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1611:9:15"},"scope":1847,"src":"1538:83:15","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1825,"nodeType":"StructuredDocumentation","src":"1627:642:15","text":" @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\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 Emits an {Approval} event."},"functionSelector":"095ea7b3","id":1834,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2283:7:15","nodeType":"FunctionDefinition","parameters":{"id":1830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1827,"mutability":"mutable","name":"spender","nameLocation":"2299:7:15","nodeType":"VariableDeclaration","scope":1834,"src":"2291:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1826,"name":"address","nodeType":"ElementaryTypeName","src":"2291:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1829,"mutability":"mutable","name":"amount","nameLocation":"2316:6:15","nodeType":"VariableDeclaration","scope":1834,"src":"2308:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1828,"name":"uint256","nodeType":"ElementaryTypeName","src":"2308:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2290:33:15"},"returnParameters":{"id":1833,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1832,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1834,"src":"2342:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1831,"name":"bool","nodeType":"ElementaryTypeName","src":"2342:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2341:6:15"},"scope":1847,"src":"2274:74:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1835,"nodeType":"StructuredDocumentation","src":"2354:287:15","text":" @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":1846,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2655:12:15","nodeType":"FunctionDefinition","parameters":{"id":1842,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1837,"mutability":"mutable","name":"from","nameLocation":"2676:4:15","nodeType":"VariableDeclaration","scope":1846,"src":"2668:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1836,"name":"address","nodeType":"ElementaryTypeName","src":"2668:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1839,"mutability":"mutable","name":"to","nameLocation":"2690:2:15","nodeType":"VariableDeclaration","scope":1846,"src":"2682:10:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1838,"name":"address","nodeType":"ElementaryTypeName","src":"2682:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1841,"mutability":"mutable","name":"amount","nameLocation":"2702:6:15","nodeType":"VariableDeclaration","scope":1846,"src":"2694:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1840,"name":"uint256","nodeType":"ElementaryTypeName","src":"2694:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2667:42:15"},"returnParameters":{"id":1845,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1844,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1846,"src":"2728:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1843,"name":"bool","nodeType":"ElementaryTypeName","src":"2728:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2727:6:15"},"scope":1847,"src":"2646:88:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1848,"src":"202:2534:15","usedErrors":[],"usedEvents":[1781,1790]}],"src":"106:2631:15"},"id":15},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","exportedSymbols":{"IERC20":[1847],"IERC20Metadata":[1872]},"id":1873,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1849,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"110:23:16"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"../IERC20.sol","id":1850,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1873,"sourceUnit":1848,"src":"135:23:16","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1852,"name":"IERC20","nameLocations":["305:6:16"],"nodeType":"IdentifierPath","referencedDeclaration":1847,"src":"305:6:16"},"id":1853,"nodeType":"InheritanceSpecifier","src":"305:6:16"}],"canonicalName":"IERC20Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":1851,"nodeType":"StructuredDocumentation","src":"160:116:16","text":" @dev Interface for the optional metadata functions from the ERC20 standard.\n _Available since v4.1._"},"fullyImplemented":false,"id":1872,"linearizedBaseContracts":[1872,1847],"name":"IERC20Metadata","nameLocation":"287:14:16","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1854,"nodeType":"StructuredDocumentation","src":"318:54:16","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":1859,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"386:4:16","nodeType":"FunctionDefinition","parameters":{"id":1855,"nodeType":"ParameterList","parameters":[],"src":"390:2:16"},"returnParameters":{"id":1858,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1857,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1859,"src":"416:13:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1856,"name":"string","nodeType":"ElementaryTypeName","src":"416:6:16","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"415:15:16"},"scope":1872,"src":"377:54:16","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1860,"nodeType":"StructuredDocumentation","src":"437:56:16","text":" @dev Returns the symbol of the token."},"functionSelector":"95d89b41","id":1865,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"507:6:16","nodeType":"FunctionDefinition","parameters":{"id":1861,"nodeType":"ParameterList","parameters":[],"src":"513:2:16"},"returnParameters":{"id":1864,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1863,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1865,"src":"539:13:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1862,"name":"string","nodeType":"ElementaryTypeName","src":"539:6:16","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"538:15:16"},"scope":1872,"src":"498:56:16","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1866,"nodeType":"StructuredDocumentation","src":"560:65:16","text":" @dev Returns the decimals places of the token."},"functionSelector":"313ce567","id":1871,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"639:8:16","nodeType":"FunctionDefinition","parameters":{"id":1867,"nodeType":"ParameterList","parameters":[],"src":"647:2:16"},"returnParameters":{"id":1870,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1869,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1871,"src":"673:5:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1868,"name":"uint8","nodeType":"ElementaryTypeName","src":"673:5:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"672:7:16"},"scope":1872,"src":"630:50:16","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1873,"src":"277:405:16","usedErrors":[],"usedEvents":[1781,1790]}],"src":"110:573:16"},"id":16},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol","exportedSymbols":{"IERC20Permit":[1908]},"id":1909,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1874,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"123:23:17"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20Permit","contractDependencies":[],"contractKind":"interface","documentation":{"id":1875,"nodeType":"StructuredDocumentation","src":"148:1963:17","text":" @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\n need to send a transaction, and thus is not required to hold Ether at all.\n ==== Security Considerations\n There are two important considerations concerning the use of `permit`. The first is that a valid permit signature\n expresses an allowance, and it should not be assumed to convey additional meaning. In particular, it should not be\n considered as an intention to spend the allowance in any specific way. The second is that because permits have\n built-in replay protection and can be submitted by anyone, they can be frontrun. A protocol that uses permits should\n take this into consideration and allow a `permit` call to fail. Combining these two aspects, a pattern that may be\n generally recommended is:\n ```solidity\n function doThingWithPermit(..., uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {\n     try token.permit(msg.sender, address(this), value, deadline, v, r, s) {} catch {}\n     doThing(..., value);\n }\n function doThing(..., uint256 value) public {\n     token.safeTransferFrom(msg.sender, address(this), value);\n     ...\n }\n ```\n Observe that: 1) `msg.sender` is used as the owner, leaving no ambiguity as to the signer intent, and 2) the use of\n `try/catch` allows the permit to fail and makes the code tolerant to frontrunning. (See also\n {SafeERC20-safeTransferFrom}).\n Additionally, note that smart contract wallets (such as Argent or Safe) are not able to produce permit signatures, so\n contracts should have entry points that don't rely on permit."},"fullyImplemented":false,"id":1908,"linearizedBaseContracts":[1908],"name":"IERC20Permit","nameLocation":"2122:12:17","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1876,"nodeType":"StructuredDocumentation","src":"2141:850:17","text":" @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\n given ``owner``'s signed approval.\n IMPORTANT: The same issues {IERC20-approve} has related to transaction\n ordering also apply here.\n Emits an {Approval} event.\n Requirements:\n - `spender` cannot be the zero address.\n - `deadline` must be a timestamp in the future.\n - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n over the EIP712-formatted function arguments.\n - the signature must use ``owner``'s current nonce (see {nonces}).\n For more information on the signature format, see the\n https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n section].\n CAUTION: See Security Considerations above."},"functionSelector":"d505accf","id":1893,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nameLocation":"3005:6:17","nodeType":"FunctionDefinition","parameters":{"id":1891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1878,"mutability":"mutable","name":"owner","nameLocation":"3029:5:17","nodeType":"VariableDeclaration","scope":1893,"src":"3021:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1877,"name":"address","nodeType":"ElementaryTypeName","src":"3021:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1880,"mutability":"mutable","name":"spender","nameLocation":"3052:7:17","nodeType":"VariableDeclaration","scope":1893,"src":"3044:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1879,"name":"address","nodeType":"ElementaryTypeName","src":"3044:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1882,"mutability":"mutable","name":"value","nameLocation":"3077:5:17","nodeType":"VariableDeclaration","scope":1893,"src":"3069:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1881,"name":"uint256","nodeType":"ElementaryTypeName","src":"3069:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1884,"mutability":"mutable","name":"deadline","nameLocation":"3100:8:17","nodeType":"VariableDeclaration","scope":1893,"src":"3092:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1883,"name":"uint256","nodeType":"ElementaryTypeName","src":"3092:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1886,"mutability":"mutable","name":"v","nameLocation":"3124:1:17","nodeType":"VariableDeclaration","scope":1893,"src":"3118:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1885,"name":"uint8","nodeType":"ElementaryTypeName","src":"3118:5:17","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":1888,"mutability":"mutable","name":"r","nameLocation":"3143:1:17","nodeType":"VariableDeclaration","scope":1893,"src":"3135:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1887,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3135:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1890,"mutability":"mutable","name":"s","nameLocation":"3162:1:17","nodeType":"VariableDeclaration","scope":1893,"src":"3154:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1889,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3154:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3011:158:17"},"returnParameters":{"id":1892,"nodeType":"ParameterList","parameters":[],"src":"3178:0:17"},"scope":1908,"src":"2996:183:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1894,"nodeType":"StructuredDocumentation","src":"3185:294:17","text":" @dev Returns the current nonce for `owner`. This value must be\n included whenever a signature is generated for {permit}.\n Every successful call to {permit} increases ``owner``'s nonce by one. This\n prevents a signature from being used multiple times."},"functionSelector":"7ecebe00","id":1901,"implemented":false,"kind":"function","modifiers":[],"name":"nonces","nameLocation":"3493:6:17","nodeType":"FunctionDefinition","parameters":{"id":1897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1896,"mutability":"mutable","name":"owner","nameLocation":"3508:5:17","nodeType":"VariableDeclaration","scope":1901,"src":"3500:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1895,"name":"address","nodeType":"ElementaryTypeName","src":"3500:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3499:15:17"},"returnParameters":{"id":1900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1899,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1901,"src":"3538:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1898,"name":"uint256","nodeType":"ElementaryTypeName","src":"3538:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3537:9:17"},"scope":1908,"src":"3484:63:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1902,"nodeType":"StructuredDocumentation","src":"3553:128:17","text":" @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}."},"functionSelector":"3644e515","id":1907,"implemented":false,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nameLocation":"3748:16:17","nodeType":"FunctionDefinition","parameters":{"id":1903,"nodeType":"ParameterList","parameters":[],"src":"3764:2:17"},"returnParameters":{"id":1906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1905,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1907,"src":"3790:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1904,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3790:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3789:9:17"},"scope":1908,"src":"3739:60:17","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1909,"src":"2112:1689:17","usedErrors":[],"usedEvents":[]}],"src":"123:3679:17"},"id":17},"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","exportedSymbols":{"Address":[2614],"IERC20":[1847],"IERC20Permit":[1908],"SafeERC20":[2284]},"id":2285,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1910,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"115:23:18"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"../IERC20.sol","id":1911,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2285,"sourceUnit":1848,"src":"140:23:18","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol","file":"../extensions/IERC20Permit.sol","id":1912,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2285,"sourceUnit":1909,"src":"164:40:18","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"../../../utils/Address.sol","id":1913,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2285,"sourceUnit":2615,"src":"205:36:18","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"SafeERC20","contractDependencies":[],"contractKind":"library","documentation":{"id":1914,"nodeType":"StructuredDocumentation","src":"243:457:18","text":" @title SafeERC20\n @dev Wrappers around ERC20 operations that throw on failure (when the token\n contract returns false). Tokens that return no value (and instead revert or\n throw on failure) are also supported, non-reverting calls are assumed to be\n successful.\n To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n which allows you to call the safe operations as `token.safeTransfer(...)`, etc."},"fullyImplemented":true,"id":2284,"linearizedBaseContracts":[2284],"name":"SafeERC20","nameLocation":"709:9:18","nodeType":"ContractDefinition","nodes":[{"global":false,"id":1917,"libraryName":{"id":1915,"name":"Address","nameLocations":["731:7:18"],"nodeType":"IdentifierPath","referencedDeclaration":2614,"src":"731:7:18"},"nodeType":"UsingForDirective","src":"725:26:18","typeName":{"id":1916,"name":"address","nodeType":"ElementaryTypeName","src":"743:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"body":{"id":1940,"nodeType":"Block","src":"1013:103:18","statements":[{"expression":{"arguments":[{"id":1929,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1921,"src":"1043:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"}},{"arguments":[{"expression":{"expression":{"id":1932,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1921,"src":"1073:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"}},"id":1933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1079:8:18","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":1814,"src":"1073:14:18","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":1934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1088:8:18","memberName":"selector","nodeType":"MemberAccess","src":"1073:23:18","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":1935,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1923,"src":"1098:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1936,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1925,"src":"1102:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1930,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1050:3:18","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1931,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1054:18:18","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1050:22:18","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":1937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1050:58:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1928,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2235,"src":"1023:19:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1847_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":1938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1023:86:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1939,"nodeType":"ExpressionStatement","src":"1023:86:18"}]},"documentation":{"id":1918,"nodeType":"StructuredDocumentation","src":"757:179:18","text":" @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\n non-reverting calls are assumed to be successful."},"id":1941,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransfer","nameLocation":"950:12:18","nodeType":"FunctionDefinition","parameters":{"id":1926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1921,"mutability":"mutable","name":"token","nameLocation":"970:5:18","nodeType":"VariableDeclaration","scope":1941,"src":"963:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"},"typeName":{"id":1920,"nodeType":"UserDefinedTypeName","pathNode":{"id":1919,"name":"IERC20","nameLocations":["963:6:18"],"nodeType":"IdentifierPath","referencedDeclaration":1847,"src":"963:6:18"},"referencedDeclaration":1847,"src":"963:6:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":1923,"mutability":"mutable","name":"to","nameLocation":"985:2:18","nodeType":"VariableDeclaration","scope":1941,"src":"977:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1922,"name":"address","nodeType":"ElementaryTypeName","src":"977:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1925,"mutability":"mutable","name":"value","nameLocation":"997:5:18","nodeType":"VariableDeclaration","scope":1941,"src":"989:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1924,"name":"uint256","nodeType":"ElementaryTypeName","src":"989:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"962:41:18"},"returnParameters":{"id":1927,"nodeType":"ParameterList","parameters":[],"src":"1013:0:18"},"scope":2284,"src":"941:175:18","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1967,"nodeType":"Block","src":"1445:113:18","statements":[{"expression":{"arguments":[{"id":1955,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1945,"src":"1475:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"}},{"arguments":[{"expression":{"expression":{"id":1958,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1945,"src":"1505:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"}},"id":1959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1511:12:18","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":1846,"src":"1505:18:18","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":1960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1524:8:18","memberName":"selector","nodeType":"MemberAccess","src":"1505:27:18","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":1961,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1947,"src":"1534:4:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1962,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1949,"src":"1540:2:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1963,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"1544:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1956,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1482:3:18","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1957,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1486:18:18","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1482:22:18","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":1964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1482:68:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1954,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2235,"src":"1455:19:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1847_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":1965,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1455:96:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1966,"nodeType":"ExpressionStatement","src":"1455:96:18"}]},"documentation":{"id":1942,"nodeType":"StructuredDocumentation","src":"1122:228:18","text":" @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\n calling contract. If `token` returns no value, non-reverting calls are assumed to be successful."},"id":1968,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"1364:16:18","nodeType":"FunctionDefinition","parameters":{"id":1952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1945,"mutability":"mutable","name":"token","nameLocation":"1388:5:18","nodeType":"VariableDeclaration","scope":1968,"src":"1381:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"},"typeName":{"id":1944,"nodeType":"UserDefinedTypeName","pathNode":{"id":1943,"name":"IERC20","nameLocations":["1381:6:18"],"nodeType":"IdentifierPath","referencedDeclaration":1847,"src":"1381:6:18"},"referencedDeclaration":1847,"src":"1381:6:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":1947,"mutability":"mutable","name":"from","nameLocation":"1403:4:18","nodeType":"VariableDeclaration","scope":1968,"src":"1395:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1946,"name":"address","nodeType":"ElementaryTypeName","src":"1395:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1949,"mutability":"mutable","name":"to","nameLocation":"1417:2:18","nodeType":"VariableDeclaration","scope":1968,"src":"1409:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1948,"name":"address","nodeType":"ElementaryTypeName","src":"1409:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1951,"mutability":"mutable","name":"value","nameLocation":"1429:5:18","nodeType":"VariableDeclaration","scope":1968,"src":"1421:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1950,"name":"uint256","nodeType":"ElementaryTypeName","src":"1421:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1380:55:18"},"returnParameters":{"id":1953,"nodeType":"ParameterList","parameters":[],"src":"1445:0:18"},"scope":2284,"src":"1355:203:18","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2011,"nodeType":"Block","src":"1894:497:18","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1980,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1976,"src":"2143:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1981,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2152:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2143:10:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":1983,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2142:12:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1988,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2183:4:18","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$2284","typeString":"library SafeERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$2284","typeString":"library SafeERC20"}],"id":1987,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2175:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1986,"name":"address","nodeType":"ElementaryTypeName","src":"2175:7:18","typeDescriptions":{}}},"id":1989,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2175:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1990,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1974,"src":"2190:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1984,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1972,"src":"2159:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"}},"id":1985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2165:9:18","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":1824,"src":"2159:15:18","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":1991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2159:39:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1992,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2202:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2159:44:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":1994,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2158:46:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2142:62:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365","id":1996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2218:56:18","typeDescriptions":{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""},"value":"SafeERC20: approve from non-zero to non-zero allowance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""}],"id":1979,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2121:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2121:163:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1998,"nodeType":"ExpressionStatement","src":"2121:163:18"},{"expression":{"arguments":[{"id":2000,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1972,"src":"2314:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"}},{"arguments":[{"expression":{"expression":{"id":2003,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1972,"src":"2344:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"}},"id":2004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2350:7:18","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":1834,"src":"2344:13:18","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":2005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2358:8:18","memberName":"selector","nodeType":"MemberAccess","src":"2344:22:18","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":2006,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1974,"src":"2368:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2007,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1976,"src":"2377:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2001,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2321:3:18","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2002,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2325:18:18","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"2321:22:18","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":2008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2321:62:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1999,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2235,"src":"2294:19:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1847_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":2009,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2294:90:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2010,"nodeType":"ExpressionStatement","src":"2294:90:18"}]},"documentation":{"id":1969,"nodeType":"StructuredDocumentation","src":"1564:249:18","text":" @dev Deprecated. This function has issues similar to the ones found in\n {IERC20-approve}, and its usage is discouraged.\n Whenever possible, use {safeIncreaseAllowance} and\n {safeDecreaseAllowance} instead."},"id":2012,"implemented":true,"kind":"function","modifiers":[],"name":"safeApprove","nameLocation":"1827:11:18","nodeType":"FunctionDefinition","parameters":{"id":1977,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1972,"mutability":"mutable","name":"token","nameLocation":"1846:5:18","nodeType":"VariableDeclaration","scope":2012,"src":"1839:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"},"typeName":{"id":1971,"nodeType":"UserDefinedTypeName","pathNode":{"id":1970,"name":"IERC20","nameLocations":["1839:6:18"],"nodeType":"IdentifierPath","referencedDeclaration":1847,"src":"1839:6:18"},"referencedDeclaration":1847,"src":"1839:6:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":1974,"mutability":"mutable","name":"spender","nameLocation":"1861:7:18","nodeType":"VariableDeclaration","scope":2012,"src":"1853:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1973,"name":"address","nodeType":"ElementaryTypeName","src":"1853:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1976,"mutability":"mutable","name":"value","nameLocation":"1878:5:18","nodeType":"VariableDeclaration","scope":2012,"src":"1870:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1975,"name":"uint256","nodeType":"ElementaryTypeName","src":"1870:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1838:46:18"},"returnParameters":{"id":1978,"nodeType":"ParameterList","parameters":[],"src":"1894:0:18"},"scope":2284,"src":"1818:573:18","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2048,"nodeType":"Block","src":"2668:194:18","statements":[{"assignments":[2024],"declarations":[{"constant":false,"id":2024,"mutability":"mutable","name":"oldAllowance","nameLocation":"2686:12:18","nodeType":"VariableDeclaration","scope":2048,"src":"2678:20:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2023,"name":"uint256","nodeType":"ElementaryTypeName","src":"2678:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2033,"initialValue":{"arguments":[{"arguments":[{"id":2029,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2725:4:18","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$2284","typeString":"library SafeERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$2284","typeString":"library SafeERC20"}],"id":2028,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2717:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2027,"name":"address","nodeType":"ElementaryTypeName","src":"2717:7:18","typeDescriptions":{}}},"id":2030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2717:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2031,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"2732:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":2025,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2016,"src":"2701:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"}},"id":2026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2707:9:18","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":1824,"src":"2701:15:18","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":2032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2701:39:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2678:62:18"},{"expression":{"arguments":[{"id":2035,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2016,"src":"2770:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"}},{"arguments":[{"expression":{"expression":{"id":2038,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2016,"src":"2800:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"}},"id":2039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2806:7:18","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":1834,"src":"2800:13:18","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":2040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2814:8:18","memberName":"selector","nodeType":"MemberAccess","src":"2800:22:18","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":2041,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"2824:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2042,"name":"oldAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2024,"src":"2833:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":2043,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"2848:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2833:20:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2036,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2777:3:18","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2037,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2781:18:18","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"2777:22:18","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":2045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2777:77:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2034,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2235,"src":"2750:19:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1847_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":2046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2750:105:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2047,"nodeType":"ExpressionStatement","src":"2750:105:18"}]},"documentation":{"id":2013,"nodeType":"StructuredDocumentation","src":"2397:180:18","text":" @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful."},"id":2049,"implemented":true,"kind":"function","modifiers":[],"name":"safeIncreaseAllowance","nameLocation":"2591:21:18","nodeType":"FunctionDefinition","parameters":{"id":2021,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2016,"mutability":"mutable","name":"token","nameLocation":"2620:5:18","nodeType":"VariableDeclaration","scope":2049,"src":"2613:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"},"typeName":{"id":2015,"nodeType":"UserDefinedTypeName","pathNode":{"id":2014,"name":"IERC20","nameLocations":["2613:6:18"],"nodeType":"IdentifierPath","referencedDeclaration":1847,"src":"2613:6:18"},"referencedDeclaration":1847,"src":"2613:6:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2018,"mutability":"mutable","name":"spender","nameLocation":"2635:7:18","nodeType":"VariableDeclaration","scope":2049,"src":"2627:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2017,"name":"address","nodeType":"ElementaryTypeName","src":"2627:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2020,"mutability":"mutable","name":"value","nameLocation":"2652:5:18","nodeType":"VariableDeclaration","scope":2049,"src":"2644:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2019,"name":"uint256","nodeType":"ElementaryTypeName","src":"2644:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2612:46:18"},"returnParameters":{"id":2022,"nodeType":"ParameterList","parameters":[],"src":"2668:0:18"},"scope":2284,"src":"2582:280:18","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2093,"nodeType":"Block","src":"3139:321:18","statements":[{"id":2092,"nodeType":"UncheckedBlock","src":"3149:305:18","statements":[{"assignments":[2061],"declarations":[{"constant":false,"id":2061,"mutability":"mutable","name":"oldAllowance","nameLocation":"3181:12:18","nodeType":"VariableDeclaration","scope":2092,"src":"3173:20:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2060,"name":"uint256","nodeType":"ElementaryTypeName","src":"3173:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2070,"initialValue":{"arguments":[{"arguments":[{"id":2066,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3220:4:18","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$2284","typeString":"library SafeERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$2284","typeString":"library SafeERC20"}],"id":2065,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3212:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2064,"name":"address","nodeType":"ElementaryTypeName","src":"3212:7:18","typeDescriptions":{}}},"id":2067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3212:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2068,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2055,"src":"3227:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":2062,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2053,"src":"3196:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"}},"id":2063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3202:9:18","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":1824,"src":"3196:15:18","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":2069,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3196:39:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3173:62:18"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2072,"name":"oldAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"3257:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":2073,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2057,"src":"3273:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3257:21:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f","id":2075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3280:43:18","typeDescriptions":{"typeIdentifier":"t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a","typeString":"literal_string \"SafeERC20: decreased allowance below zero\""},"value":"SafeERC20: decreased allowance below zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a","typeString":"literal_string \"SafeERC20: decreased allowance below zero\""}],"id":2071,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"3249:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3249:75:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2077,"nodeType":"ExpressionStatement","src":"3249:75:18"},{"expression":{"arguments":[{"id":2079,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2053,"src":"3358:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"}},{"arguments":[{"expression":{"expression":{"id":2082,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2053,"src":"3388:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"}},"id":2083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3394:7:18","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":1834,"src":"3388:13:18","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":2084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3402:8:18","memberName":"selector","nodeType":"MemberAccess","src":"3388:22:18","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":2085,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2055,"src":"3412:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2086,"name":"oldAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"3421:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":2087,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2057,"src":"3436:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3421:20:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2080,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3365:3:18","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2081,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3369:18:18","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"3365:22:18","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":2089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3365:77:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2078,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2235,"src":"3338:19:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1847_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":2090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3338:105:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2091,"nodeType":"ExpressionStatement","src":"3338:105:18"}]}]},"documentation":{"id":2050,"nodeType":"StructuredDocumentation","src":"2868:180:18","text":" @dev Decrease the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful."},"id":2094,"implemented":true,"kind":"function","modifiers":[],"name":"safeDecreaseAllowance","nameLocation":"3062:21:18","nodeType":"FunctionDefinition","parameters":{"id":2058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2053,"mutability":"mutable","name":"token","nameLocation":"3091:5:18","nodeType":"VariableDeclaration","scope":2094,"src":"3084:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"},"typeName":{"id":2052,"nodeType":"UserDefinedTypeName","pathNode":{"id":2051,"name":"IERC20","nameLocations":["3084:6:18"],"nodeType":"IdentifierPath","referencedDeclaration":1847,"src":"3084:6:18"},"referencedDeclaration":1847,"src":"3084:6:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2055,"mutability":"mutable","name":"spender","nameLocation":"3106:7:18","nodeType":"VariableDeclaration","scope":2094,"src":"3098:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2054,"name":"address","nodeType":"ElementaryTypeName","src":"3098:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2057,"mutability":"mutable","name":"value","nameLocation":"3123:5:18","nodeType":"VariableDeclaration","scope":2094,"src":"3115:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2056,"name":"uint256","nodeType":"ElementaryTypeName","src":"3115:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3083:46:18"},"returnParameters":{"id":2059,"nodeType":"ParameterList","parameters":[],"src":"3139:0:18"},"scope":2284,"src":"3053:407:18","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2140,"nodeType":"Block","src":"3856:333:18","statements":[{"assignments":[2106],"declarations":[{"constant":false,"id":2106,"mutability":"mutable","name":"approvalCall","nameLocation":"3879:12:18","nodeType":"VariableDeclaration","scope":2140,"src":"3866:25:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2105,"name":"bytes","nodeType":"ElementaryTypeName","src":"3866:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2115,"initialValue":{"arguments":[{"expression":{"expression":{"id":2109,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2098,"src":"3917:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"}},"id":2110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3923:7:18","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":1834,"src":"3917:13:18","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":2111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3931:8:18","memberName":"selector","nodeType":"MemberAccess","src":"3917:22:18","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":2112,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2100,"src":"3941:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2113,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2102,"src":"3950:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2107,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3894:3:18","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2108,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3898:18:18","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"3894:22:18","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":2114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3894:62:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3866:90:18"},{"condition":{"id":2120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3971:45:18","subExpression":{"arguments":[{"id":2117,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2098,"src":"3996:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"}},{"id":2118,"name":"approvalCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2106,"src":"4003:12:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2116,"name":"_callOptionalReturnBool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2283,"src":"3972:23:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1847_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (contract IERC20,bytes memory) returns (bool)"}},"id":2119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3972:44:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2139,"nodeType":"IfStatement","src":"3967:216:18","trueBody":{"id":2138,"nodeType":"Block","src":"4018:165:18","statements":[{"expression":{"arguments":[{"id":2122,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2098,"src":"4052:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"}},{"arguments":[{"expression":{"expression":{"id":2125,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2098,"src":"4082:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"}},"id":2126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4088:7:18","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":1834,"src":"4082:13:18","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":2127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4096:8:18","memberName":"selector","nodeType":"MemberAccess","src":"4082:22:18","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":2128,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2100,"src":"4106:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":2129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4115:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":2123,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4059:3:18","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2124,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4063:18:18","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"4059:22:18","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":2130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4059:58:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2121,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2235,"src":"4032:19:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1847_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":2131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4032:86:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2132,"nodeType":"ExpressionStatement","src":"4032:86:18"},{"expression":{"arguments":[{"id":2134,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2098,"src":"4152:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"}},{"id":2135,"name":"approvalCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2106,"src":"4159:12:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2133,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2235,"src":"4132:19:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$1847_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":2136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4132:40:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2137,"nodeType":"ExpressionStatement","src":"4132:40:18"}]}}]},"documentation":{"id":2095,"nodeType":"StructuredDocumentation","src":"3466:308:18","text":" @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\n to be set to zero before setting it to a non-zero value, such as USDT."},"id":2141,"implemented":true,"kind":"function","modifiers":[],"name":"forceApprove","nameLocation":"3788:12:18","nodeType":"FunctionDefinition","parameters":{"id":2103,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2098,"mutability":"mutable","name":"token","nameLocation":"3808:5:18","nodeType":"VariableDeclaration","scope":2141,"src":"3801:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"},"typeName":{"id":2097,"nodeType":"UserDefinedTypeName","pathNode":{"id":2096,"name":"IERC20","nameLocations":["3801:6:18"],"nodeType":"IdentifierPath","referencedDeclaration":1847,"src":"3801:6:18"},"referencedDeclaration":1847,"src":"3801:6:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2100,"mutability":"mutable","name":"spender","nameLocation":"3823:7:18","nodeType":"VariableDeclaration","scope":2141,"src":"3815:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2099,"name":"address","nodeType":"ElementaryTypeName","src":"3815:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2102,"mutability":"mutable","name":"value","nameLocation":"3840:5:18","nodeType":"VariableDeclaration","scope":2141,"src":"3832:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2101,"name":"uint256","nodeType":"ElementaryTypeName","src":"3832:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3800:46:18"},"returnParameters":{"id":2104,"nodeType":"ParameterList","parameters":[],"src":"3856:0:18"},"scope":2284,"src":"3779:410:18","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2197,"nodeType":"Block","src":"4556:257:18","statements":[{"assignments":[2163],"declarations":[{"constant":false,"id":2163,"mutability":"mutable","name":"nonceBefore","nameLocation":"4574:11:18","nodeType":"VariableDeclaration","scope":2197,"src":"4566:19:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2162,"name":"uint256","nodeType":"ElementaryTypeName","src":"4566:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2168,"initialValue":{"arguments":[{"id":2166,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2147,"src":"4601:5:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":2164,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2145,"src":"4588:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Permit_$1908","typeString":"contract IERC20Permit"}},"id":2165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4594:6:18","memberName":"nonces","nodeType":"MemberAccess","referencedDeclaration":1901,"src":"4588:12:18","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":2167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4588:19:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4566:41:18"},{"expression":{"arguments":[{"id":2172,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2147,"src":"4630:5:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2173,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2149,"src":"4637:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2174,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2151,"src":"4646:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2175,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2153,"src":"4653:8:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2176,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2155,"src":"4663:1:18","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":2177,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2157,"src":"4666:1:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2178,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2159,"src":"4669:1:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":2169,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2145,"src":"4617:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Permit_$1908","typeString":"contract IERC20Permit"}},"id":2171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4623:6:18","memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":1893,"src":"4617:12:18","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"}},"id":2179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4617:54:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2180,"nodeType":"ExpressionStatement","src":"4617:54:18"},{"assignments":[2182],"declarations":[{"constant":false,"id":2182,"mutability":"mutable","name":"nonceAfter","nameLocation":"4689:10:18","nodeType":"VariableDeclaration","scope":2197,"src":"4681:18:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2181,"name":"uint256","nodeType":"ElementaryTypeName","src":"4681:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2187,"initialValue":{"arguments":[{"id":2185,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2147,"src":"4715:5:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":2183,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2145,"src":"4702:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Permit_$1908","typeString":"contract IERC20Permit"}},"id":2184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4708:6:18","memberName":"nonces","nodeType":"MemberAccess","referencedDeclaration":1901,"src":"4702:12:18","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":2186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4702:19:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4681:40:18"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2189,"name":"nonceAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2182,"src":"4739:10:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2190,"name":"nonceBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2163,"src":"4753:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4767:1:18","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4753:15:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4739:29:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a207065726d697420646964206e6f742073756363656564","id":2194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4770:35:18","typeDescriptions":{"typeIdentifier":"t_stringliteral_cde8e927812a7a656f8f04e89ac4f4113d47940dd2125d11fcb8e0bd36bfc59d","typeString":"literal_string \"SafeERC20: permit did not succeed\""},"value":"SafeERC20: permit did not succeed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cde8e927812a7a656f8f04e89ac4f4113d47940dd2125d11fcb8e0bd36bfc59d","typeString":"literal_string \"SafeERC20: permit did not succeed\""}],"id":2188,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4731:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4731:75:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2196,"nodeType":"ExpressionStatement","src":"4731:75:18"}]},"documentation":{"id":2142,"nodeType":"StructuredDocumentation","src":"4195:141:18","text":" @dev Use a ERC-2612 signature to set the `owner` approval toward `spender` on `token`.\n Revert on invalid signature."},"id":2198,"implemented":true,"kind":"function","modifiers":[],"name":"safePermit","nameLocation":"4350:10:18","nodeType":"FunctionDefinition","parameters":{"id":2160,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2145,"mutability":"mutable","name":"token","nameLocation":"4383:5:18","nodeType":"VariableDeclaration","scope":2198,"src":"4370:18:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Permit_$1908","typeString":"contract IERC20Permit"},"typeName":{"id":2144,"nodeType":"UserDefinedTypeName","pathNode":{"id":2143,"name":"IERC20Permit","nameLocations":["4370:12:18"],"nodeType":"IdentifierPath","referencedDeclaration":1908,"src":"4370:12:18"},"referencedDeclaration":1908,"src":"4370:12:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Permit_$1908","typeString":"contract IERC20Permit"}},"visibility":"internal"},{"constant":false,"id":2147,"mutability":"mutable","name":"owner","nameLocation":"4406:5:18","nodeType":"VariableDeclaration","scope":2198,"src":"4398:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2146,"name":"address","nodeType":"ElementaryTypeName","src":"4398:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2149,"mutability":"mutable","name":"spender","nameLocation":"4429:7:18","nodeType":"VariableDeclaration","scope":2198,"src":"4421:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2148,"name":"address","nodeType":"ElementaryTypeName","src":"4421:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2151,"mutability":"mutable","name":"value","nameLocation":"4454:5:18","nodeType":"VariableDeclaration","scope":2198,"src":"4446:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2150,"name":"uint256","nodeType":"ElementaryTypeName","src":"4446:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2153,"mutability":"mutable","name":"deadline","nameLocation":"4477:8:18","nodeType":"VariableDeclaration","scope":2198,"src":"4469:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2152,"name":"uint256","nodeType":"ElementaryTypeName","src":"4469:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2155,"mutability":"mutable","name":"v","nameLocation":"4501:1:18","nodeType":"VariableDeclaration","scope":2198,"src":"4495:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2154,"name":"uint8","nodeType":"ElementaryTypeName","src":"4495:5:18","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":2157,"mutability":"mutable","name":"r","nameLocation":"4520:1:18","nodeType":"VariableDeclaration","scope":2198,"src":"4512:9:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2156,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4512:7:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2159,"mutability":"mutable","name":"s","nameLocation":"4539:1:18","nodeType":"VariableDeclaration","scope":2198,"src":"4531:9:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2158,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4531:7:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4360:186:18"},"returnParameters":{"id":2161,"nodeType":"ParameterList","parameters":[],"src":"4556:0:18"},"scope":2284,"src":"4341:472:18","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2234,"nodeType":"Block","src":"5266:572:18","statements":[{"assignments":[2208],"declarations":[{"constant":false,"id":2208,"mutability":"mutable","name":"returndata","nameLocation":"5628:10:18","nodeType":"VariableDeclaration","scope":2234,"src":"5615:23:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2207,"name":"bytes","nodeType":"ElementaryTypeName","src":"5615:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2217,"initialValue":{"arguments":[{"id":2214,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2204,"src":"5669:4:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564","id":2215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5675:34:18","typeDescriptions":{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""},"value":"SafeERC20: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""}],"expression":{"arguments":[{"id":2211,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2202,"src":"5649:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"}],"id":2210,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5641:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2209,"name":"address","nodeType":"ElementaryTypeName","src":"5641:7:18","typeDescriptions":{}}},"id":2212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5641:14:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5656:12:18","memberName":"functionCall","nodeType":"MemberAccess","referencedDeclaration":2374,"src":"5641:27:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$attached_to$_t_address_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":2216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5641:69:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"5615:95:18"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2219,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2208,"src":"5728:10:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5739:6:18","memberName":"length","nodeType":"MemberAccess","src":"5728:17:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5749:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5728:22:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2225,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2208,"src":"5765:10:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":2227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5778:4:18","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":2226,"name":"bool","nodeType":"ElementaryTypeName","src":"5778:4:18","typeDescriptions":{}}}],"id":2228,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5777:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"expression":{"id":2223,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5754:3:18","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2224,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5758:6:18","memberName":"decode","nodeType":"MemberAccess","src":"5754:10:18","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":2229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5754:30:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5728:56:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564","id":2231,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5786:44:18","typeDescriptions":{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""},"value":"SafeERC20: ERC20 operation did not succeed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""}],"id":2218,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5720:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5720:111:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2233,"nodeType":"ExpressionStatement","src":"5720:111:18"}]},"documentation":{"id":2199,"nodeType":"StructuredDocumentation","src":"4819:372:18","text":" @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants)."},"id":2235,"implemented":true,"kind":"function","modifiers":[],"name":"_callOptionalReturn","nameLocation":"5205:19:18","nodeType":"FunctionDefinition","parameters":{"id":2205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2202,"mutability":"mutable","name":"token","nameLocation":"5232:5:18","nodeType":"VariableDeclaration","scope":2235,"src":"5225:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"},"typeName":{"id":2201,"nodeType":"UserDefinedTypeName","pathNode":{"id":2200,"name":"IERC20","nameLocations":["5225:6:18"],"nodeType":"IdentifierPath","referencedDeclaration":1847,"src":"5225:6:18"},"referencedDeclaration":1847,"src":"5225:6:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2204,"mutability":"mutable","name":"data","nameLocation":"5252:4:18","nodeType":"VariableDeclaration","scope":2235,"src":"5239:17:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2203,"name":"bytes","nodeType":"ElementaryTypeName","src":"5239:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5224:33:18"},"returnParameters":{"id":2206,"nodeType":"ParameterList","parameters":[],"src":"5266:0:18"},"scope":2284,"src":"5196:642:18","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":2282,"nodeType":"Block","src":"6428:505:18","statements":[{"assignments":[2247,2249],"declarations":[{"constant":false,"id":2247,"mutability":"mutable","name":"success","nameLocation":"6729:7:18","nodeType":"VariableDeclaration","scope":2282,"src":"6724:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2246,"name":"bool","nodeType":"ElementaryTypeName","src":"6724:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2249,"mutability":"mutable","name":"returndata","nameLocation":"6751:10:18","nodeType":"VariableDeclaration","scope":2282,"src":"6738:23:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2248,"name":"bytes","nodeType":"ElementaryTypeName","src":"6738:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2257,"initialValue":{"arguments":[{"id":2255,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2241,"src":"6785:4:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":2252,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2239,"src":"6773:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"}],"id":2251,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6765:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2250,"name":"address","nodeType":"ElementaryTypeName","src":"6765:7:18","typeDescriptions":{}}},"id":2253,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6765:14:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6780:4:18","memberName":"call","nodeType":"MemberAccess","src":"6765:19:18","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":2256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6765:25:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6723:67:18"},{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2258,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2247,"src":"6819:7:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2259,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2249,"src":"6831:10:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6842:6:18","memberName":"length","nodeType":"MemberAccess","src":"6831:17:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6852:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6831:22:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2265,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2249,"src":"6868:10:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":2267,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6881:4:18","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":2266,"name":"bool","nodeType":"ElementaryTypeName","src":"6881:4:18","typeDescriptions":{}}}],"id":2268,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6880:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"expression":{"id":2263,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6857:3:18","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2264,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6861:6:18","memberName":"decode","nodeType":"MemberAccess","src":"6857:10:18","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6857:30:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6831:56:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2271,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6830:58:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6819:69:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"arguments":[{"arguments":[{"id":2277,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2239,"src":"6919:5:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"}],"id":2276,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6911:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2275,"name":"address","nodeType":"ElementaryTypeName","src":"6911:7:18","typeDescriptions":{}}},"id":2278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6911:14:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":2273,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2614,"src":"6892:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$2614_$","typeString":"type(library Address)"}},"id":2274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6900:10:18","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":2302,"src":"6892:18:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":2279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6892:34:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6819:107:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2245,"id":2281,"nodeType":"Return","src":"6800:126:18"}]},"documentation":{"id":2236,"nodeType":"StructuredDocumentation","src":"5844:490:18","text":" @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants).\n This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead."},"id":2283,"implemented":true,"kind":"function","modifiers":[],"name":"_callOptionalReturnBool","nameLocation":"6348:23:18","nodeType":"FunctionDefinition","parameters":{"id":2242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2239,"mutability":"mutable","name":"token","nameLocation":"6379:5:18","nodeType":"VariableDeclaration","scope":2283,"src":"6372:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"},"typeName":{"id":2238,"nodeType":"UserDefinedTypeName","pathNode":{"id":2237,"name":"IERC20","nameLocations":["6372:6:18"],"nodeType":"IdentifierPath","referencedDeclaration":1847,"src":"6372:6:18"},"referencedDeclaration":1847,"src":"6372:6:18","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1847","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2241,"mutability":"mutable","name":"data","nameLocation":"6399:4:18","nodeType":"VariableDeclaration","scope":2283,"src":"6386:17:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2240,"name":"bytes","nodeType":"ElementaryTypeName","src":"6386:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6371:33:18"},"returnParameters":{"id":2245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2244,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2283,"src":"6422:4:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2243,"name":"bool","nodeType":"ElementaryTypeName","src":"6422:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6421:6:18"},"scope":2284,"src":"6339:594:18","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":2285,"src":"701:6234:18","usedErrors":[],"usedEvents":[]}],"src":"115:6821:18"},"id":18},"@openzeppelin/contracts/utils/Address.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","exportedSymbols":{"Address":[2614]},"id":2615,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2286,"literals":["solidity","^","0.8",".1"],"nodeType":"PragmaDirective","src":"101:23:19"},{"abstract":false,"baseContracts":[],"canonicalName":"Address","contractDependencies":[],"contractKind":"library","documentation":{"id":2287,"nodeType":"StructuredDocumentation","src":"126:67:19","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":2614,"linearizedBaseContracts":[2614],"name":"Address","nameLocation":"202:7:19","nodeType":"ContractDefinition","nodes":[{"body":{"id":2301,"nodeType":"Block","src":"1478:254:19","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2295,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2290,"src":"1702:7:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1710:4:19","memberName":"code","nodeType":"MemberAccess","src":"1702:12:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1715:6:19","memberName":"length","nodeType":"MemberAccess","src":"1702:19:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1724:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1702:23:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2294,"id":2300,"nodeType":"Return","src":"1695:30:19"}]},"documentation":{"id":2288,"nodeType":"StructuredDocumentation","src":"216:1191:19","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n  - an externally-owned account\n  - a contract in construction\n  - an address where a contract will be created\n  - an address where a contract lived, but was destroyed\n Furthermore, `isContract` will also return true if the target contract within\n the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n which only has an effect at the end of a transaction.\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="},"id":2302,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nameLocation":"1421:10:19","nodeType":"FunctionDefinition","parameters":{"id":2291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2290,"mutability":"mutable","name":"account","nameLocation":"1440:7:19","nodeType":"VariableDeclaration","scope":2302,"src":"1432:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2289,"name":"address","nodeType":"ElementaryTypeName","src":"1432:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1431:17:19"},"returnParameters":{"id":2294,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2293,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2302,"src":"1472:4:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2292,"name":"bool","nodeType":"ElementaryTypeName","src":"1472:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1471:6:19"},"scope":2614,"src":"1412:320:19","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2335,"nodeType":"Block","src":"2718:241:19","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":2313,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2744:4:19","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$2614","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$2614","typeString":"library Address"}],"id":2312,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2736:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2311,"name":"address","nodeType":"ElementaryTypeName","src":"2736:7:19","typeDescriptions":{}}},"id":2314,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2736:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2750:7:19","memberName":"balance","nodeType":"MemberAccess","src":"2736:21:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":2316,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2307,"src":"2761:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2736:31:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":2318,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2769:31:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""},"value":"Address: insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""}],"id":2310,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2728:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2728:73:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2320,"nodeType":"ExpressionStatement","src":"2728:73:19"},{"assignments":[2322,null],"declarations":[{"constant":false,"id":2322,"mutability":"mutable","name":"success","nameLocation":"2818:7:19","nodeType":"VariableDeclaration","scope":2335,"src":"2813:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2321,"name":"bool","nodeType":"ElementaryTypeName","src":"2813:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":2329,"initialValue":{"arguments":[{"hexValue":"","id":2327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2861:2:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":2323,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2305,"src":"2831:9:19","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":2324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2841:4:19","memberName":"call","nodeType":"MemberAccess","src":"2831:14:19","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":2326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":2325,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2307,"src":"2853:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2831:29:19","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":2328,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2831:33:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2812:52:19"},{"expression":{"arguments":[{"id":2331,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2322,"src":"2882:7:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":2332,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2891:60:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""},"value":"Address: unable to send value, recipient may have reverted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"id":2330,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2874:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2874:78:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2334,"nodeType":"ExpressionStatement","src":"2874:78:19"}]},"documentation":{"id":2303,"nodeType":"StructuredDocumentation","src":"1738:904:19","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":2336,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"2656:9:19","nodeType":"FunctionDefinition","parameters":{"id":2308,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2305,"mutability":"mutable","name":"recipient","nameLocation":"2682:9:19","nodeType":"VariableDeclaration","scope":2336,"src":"2666:25:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":2304,"name":"address","nodeType":"ElementaryTypeName","src":"2666:15:19","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":2307,"mutability":"mutable","name":"amount","nameLocation":"2701:6:19","nodeType":"VariableDeclaration","scope":2336,"src":"2693:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2306,"name":"uint256","nodeType":"ElementaryTypeName","src":"2693:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2665:43:19"},"returnParameters":{"id":2309,"nodeType":"ParameterList","parameters":[],"src":"2718:0:19"},"scope":2614,"src":"2647:312:19","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2353,"nodeType":"Block","src":"3790:96:19","statements":[{"expression":{"arguments":[{"id":2347,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2339,"src":"3829:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2348,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2341,"src":"3837:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":2349,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3843:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":2350,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3846:32:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""},"value":"Address: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""}],"id":2346,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[2394,2438],"referencedDeclaration":2438,"src":"3807:21:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":2351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3807:72:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2345,"id":2352,"nodeType":"Return","src":"3800:79:19"}]},"documentation":{"id":2337,"nodeType":"StructuredDocumentation","src":"2965:731:19","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"},"id":2354,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3710:12:19","nodeType":"FunctionDefinition","parameters":{"id":2342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2339,"mutability":"mutable","name":"target","nameLocation":"3731:6:19","nodeType":"VariableDeclaration","scope":2354,"src":"3723:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2338,"name":"address","nodeType":"ElementaryTypeName","src":"3723:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2341,"mutability":"mutable","name":"data","nameLocation":"3752:4:19","nodeType":"VariableDeclaration","scope":2354,"src":"3739:17:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2340,"name":"bytes","nodeType":"ElementaryTypeName","src":"3739:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3722:35:19"},"returnParameters":{"id":2345,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2344,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2354,"src":"3776:12:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2343,"name":"bytes","nodeType":"ElementaryTypeName","src":"3776:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3775:14:19"},"scope":2614,"src":"3701:185:19","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2373,"nodeType":"Block","src":"4255:76:19","statements":[{"expression":{"arguments":[{"id":2367,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2357,"src":"4294:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2368,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2359,"src":"4302:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":2369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4308:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":2370,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2361,"src":"4311:12:19","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2366,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[2394,2438],"referencedDeclaration":2438,"src":"4272:21:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":2371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4272:52:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2365,"id":2372,"nodeType":"Return","src":"4265:59:19"}]},"documentation":{"id":2355,"nodeType":"StructuredDocumentation","src":"3892:211:19","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":2374,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"4117:12:19","nodeType":"FunctionDefinition","parameters":{"id":2362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2357,"mutability":"mutable","name":"target","nameLocation":"4147:6:19","nodeType":"VariableDeclaration","scope":2374,"src":"4139:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2356,"name":"address","nodeType":"ElementaryTypeName","src":"4139:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2359,"mutability":"mutable","name":"data","nameLocation":"4176:4:19","nodeType":"VariableDeclaration","scope":2374,"src":"4163:17:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2358,"name":"bytes","nodeType":"ElementaryTypeName","src":"4163:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2361,"mutability":"mutable","name":"errorMessage","nameLocation":"4204:12:19","nodeType":"VariableDeclaration","scope":2374,"src":"4190:26:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2360,"name":"string","nodeType":"ElementaryTypeName","src":"4190:6:19","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4129:93:19"},"returnParameters":{"id":2365,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2364,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2374,"src":"4241:12:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2363,"name":"bytes","nodeType":"ElementaryTypeName","src":"4241:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4240:14:19"},"scope":2614,"src":"4108:223:19","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2393,"nodeType":"Block","src":"4806:111:19","statements":[{"expression":{"arguments":[{"id":2387,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"4845:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2388,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2379,"src":"4853:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2389,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2381,"src":"4859:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":2390,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4866:43:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""},"value":"Address: low-level call with value failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""}],"id":2386,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[2394,2438],"referencedDeclaration":2438,"src":"4823:21:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":2391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4823:87:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2385,"id":2392,"nodeType":"Return","src":"4816:94:19"}]},"documentation":{"id":2375,"nodeType":"StructuredDocumentation","src":"4337:351:19","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"},"id":2394,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4702:21:19","nodeType":"FunctionDefinition","parameters":{"id":2382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2377,"mutability":"mutable","name":"target","nameLocation":"4732:6:19","nodeType":"VariableDeclaration","scope":2394,"src":"4724:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2376,"name":"address","nodeType":"ElementaryTypeName","src":"4724:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2379,"mutability":"mutable","name":"data","nameLocation":"4753:4:19","nodeType":"VariableDeclaration","scope":2394,"src":"4740:17:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2378,"name":"bytes","nodeType":"ElementaryTypeName","src":"4740:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2381,"mutability":"mutable","name":"value","nameLocation":"4767:5:19","nodeType":"VariableDeclaration","scope":2394,"src":"4759:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2380,"name":"uint256","nodeType":"ElementaryTypeName","src":"4759:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4723:50:19"},"returnParameters":{"id":2385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2384,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2394,"src":"4792:12:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2383,"name":"bytes","nodeType":"ElementaryTypeName","src":"4792:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4791:14:19"},"scope":2614,"src":"4693:224:19","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2437,"nodeType":"Block","src":"5344:267:19","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":2411,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5370:4:19","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$2614","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$2614","typeString":"library Address"}],"id":2410,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5362:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2409,"name":"address","nodeType":"ElementaryTypeName","src":"5362:7:19","typeDescriptions":{}}},"id":2412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5362:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5376:7:19","memberName":"balance","nodeType":"MemberAccess","src":"5362:21:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":2414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2401,"src":"5387:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5362:30:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":2416,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5394:40:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""},"value":"Address: insufficient balance for call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""}],"id":2408,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5354:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2417,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5354:81:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2418,"nodeType":"ExpressionStatement","src":"5354:81:19"},{"assignments":[2420,2422],"declarations":[{"constant":false,"id":2420,"mutability":"mutable","name":"success","nameLocation":"5451:7:19","nodeType":"VariableDeclaration","scope":2437,"src":"5446:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2419,"name":"bool","nodeType":"ElementaryTypeName","src":"5446:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2422,"mutability":"mutable","name":"returndata","nameLocation":"5473:10:19","nodeType":"VariableDeclaration","scope":2437,"src":"5460:23:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2421,"name":"bytes","nodeType":"ElementaryTypeName","src":"5460:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2429,"initialValue":{"arguments":[{"id":2427,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2399,"src":"5513:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2423,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2397,"src":"5487:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5494:4:19","memberName":"call","nodeType":"MemberAccess","src":"5487:11:19","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":2426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":2425,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2401,"src":"5506:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5487:25:19","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":2428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5487:31:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5445:73:19"},{"expression":{"arguments":[{"id":2431,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2397,"src":"5562:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2432,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2420,"src":"5570:7:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":2433,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2422,"src":"5579:10:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2434,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2403,"src":"5591:12:19","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2430,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2569,"src":"5535:26:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":2435,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5535:69:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2407,"id":2436,"nodeType":"Return","src":"5528:76:19"}]},"documentation":{"id":2395,"nodeType":"StructuredDocumentation","src":"4923:237:19","text":" @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":2438,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"5174:21:19","nodeType":"FunctionDefinition","parameters":{"id":2404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2397,"mutability":"mutable","name":"target","nameLocation":"5213:6:19","nodeType":"VariableDeclaration","scope":2438,"src":"5205:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2396,"name":"address","nodeType":"ElementaryTypeName","src":"5205:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2399,"mutability":"mutable","name":"data","nameLocation":"5242:4:19","nodeType":"VariableDeclaration","scope":2438,"src":"5229:17:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2398,"name":"bytes","nodeType":"ElementaryTypeName","src":"5229:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2401,"mutability":"mutable","name":"value","nameLocation":"5264:5:19","nodeType":"VariableDeclaration","scope":2438,"src":"5256:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2400,"name":"uint256","nodeType":"ElementaryTypeName","src":"5256:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2403,"mutability":"mutable","name":"errorMessage","nameLocation":"5293:12:19","nodeType":"VariableDeclaration","scope":2438,"src":"5279:26:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2402,"name":"string","nodeType":"ElementaryTypeName","src":"5279:6:19","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5195:116:19"},"returnParameters":{"id":2407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2406,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2438,"src":"5330:12:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2405,"name":"bytes","nodeType":"ElementaryTypeName","src":"5330:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5329:14:19"},"scope":2614,"src":"5165:446:19","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2454,"nodeType":"Block","src":"5888:97:19","statements":[{"expression":{"arguments":[{"id":2449,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"5924:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2450,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2443,"src":"5932:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":2451,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5938:39:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""},"value":"Address: low-level static call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""}],"id":2448,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[2455,2484],"referencedDeclaration":2484,"src":"5905:18:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) view returns (bytes memory)"}},"id":2452,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5905:73:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2447,"id":2453,"nodeType":"Return","src":"5898:80:19"}]},"documentation":{"id":2439,"nodeType":"StructuredDocumentation","src":"5617:166:19","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":2455,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"5797:18:19","nodeType":"FunctionDefinition","parameters":{"id":2444,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2441,"mutability":"mutable","name":"target","nameLocation":"5824:6:19","nodeType":"VariableDeclaration","scope":2455,"src":"5816:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2440,"name":"address","nodeType":"ElementaryTypeName","src":"5816:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2443,"mutability":"mutable","name":"data","nameLocation":"5845:4:19","nodeType":"VariableDeclaration","scope":2455,"src":"5832:17:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2442,"name":"bytes","nodeType":"ElementaryTypeName","src":"5832:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5815:35:19"},"returnParameters":{"id":2447,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2446,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2455,"src":"5874:12:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2445,"name":"bytes","nodeType":"ElementaryTypeName","src":"5874:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5873:14:19"},"scope":2614,"src":"5788:197:19","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2483,"nodeType":"Block","src":"6327:168:19","statements":[{"assignments":[2468,2470],"declarations":[{"constant":false,"id":2468,"mutability":"mutable","name":"success","nameLocation":"6343:7:19","nodeType":"VariableDeclaration","scope":2483,"src":"6338:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2467,"name":"bool","nodeType":"ElementaryTypeName","src":"6338:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2470,"mutability":"mutable","name":"returndata","nameLocation":"6365:10:19","nodeType":"VariableDeclaration","scope":2483,"src":"6352:23:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2469,"name":"bytes","nodeType":"ElementaryTypeName","src":"6352:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2475,"initialValue":{"arguments":[{"id":2473,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"6397:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2471,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2458,"src":"6379:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6386:10:19","memberName":"staticcall","nodeType":"MemberAccess","src":"6379:17:19","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":2474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6379:23:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6337:65:19"},{"expression":{"arguments":[{"id":2477,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2458,"src":"6446:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2478,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2468,"src":"6454:7:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":2479,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2470,"src":"6463:10:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2480,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2462,"src":"6475:12:19","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2476,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2569,"src":"6419:26:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":2481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6419:69:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2466,"id":2482,"nodeType":"Return","src":"6412:76:19"}]},"documentation":{"id":2456,"nodeType":"StructuredDocumentation","src":"5991:173:19","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":2484,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"6178:18:19","nodeType":"FunctionDefinition","parameters":{"id":2463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2458,"mutability":"mutable","name":"target","nameLocation":"6214:6:19","nodeType":"VariableDeclaration","scope":2484,"src":"6206:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2457,"name":"address","nodeType":"ElementaryTypeName","src":"6206:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2460,"mutability":"mutable","name":"data","nameLocation":"6243:4:19","nodeType":"VariableDeclaration","scope":2484,"src":"6230:17:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2459,"name":"bytes","nodeType":"ElementaryTypeName","src":"6230:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2462,"mutability":"mutable","name":"errorMessage","nameLocation":"6271:12:19","nodeType":"VariableDeclaration","scope":2484,"src":"6257:26:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2461,"name":"string","nodeType":"ElementaryTypeName","src":"6257:6:19","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6196:93:19"},"returnParameters":{"id":2466,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2465,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2484,"src":"6313:12:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2464,"name":"bytes","nodeType":"ElementaryTypeName","src":"6313:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6312:14:19"},"scope":2614,"src":"6169:326:19","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2500,"nodeType":"Block","src":"6771:101:19","statements":[{"expression":{"arguments":[{"id":2495,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2487,"src":"6809:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2496,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2489,"src":"6817:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","id":2497,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6823:41:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""},"value":"Address: low-level delegate call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""}],"id":2494,"name":"functionDelegateCall","nodeType":"Identifier","overloadedDeclarations":[2501,2530],"referencedDeclaration":2530,"src":"6788:20:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":2498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6788:77:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2493,"id":2499,"nodeType":"Return","src":"6781:84:19"}]},"documentation":{"id":2485,"nodeType":"StructuredDocumentation","src":"6501:168:19","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":2501,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"6683:20:19","nodeType":"FunctionDefinition","parameters":{"id":2490,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2487,"mutability":"mutable","name":"target","nameLocation":"6712:6:19","nodeType":"VariableDeclaration","scope":2501,"src":"6704:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2486,"name":"address","nodeType":"ElementaryTypeName","src":"6704:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2489,"mutability":"mutable","name":"data","nameLocation":"6733:4:19","nodeType":"VariableDeclaration","scope":2501,"src":"6720:17:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2488,"name":"bytes","nodeType":"ElementaryTypeName","src":"6720:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6703:35:19"},"returnParameters":{"id":2493,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2492,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2501,"src":"6757:12:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2491,"name":"bytes","nodeType":"ElementaryTypeName","src":"6757:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6756:14:19"},"scope":2614,"src":"6674:198:19","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2529,"nodeType":"Block","src":"7213:170:19","statements":[{"assignments":[2514,2516],"declarations":[{"constant":false,"id":2514,"mutability":"mutable","name":"success","nameLocation":"7229:7:19","nodeType":"VariableDeclaration","scope":2529,"src":"7224:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2513,"name":"bool","nodeType":"ElementaryTypeName","src":"7224:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2516,"mutability":"mutable","name":"returndata","nameLocation":"7251:10:19","nodeType":"VariableDeclaration","scope":2529,"src":"7238:23:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2515,"name":"bytes","nodeType":"ElementaryTypeName","src":"7238:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2521,"initialValue":{"arguments":[{"id":2519,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2506,"src":"7285:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2517,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2504,"src":"7265:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7272:12:19","memberName":"delegatecall","nodeType":"MemberAccess","src":"7265:19:19","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":2520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7265:25:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7223:67:19"},{"expression":{"arguments":[{"id":2523,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2504,"src":"7334:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2524,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2514,"src":"7342:7:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":2525,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2516,"src":"7351:10:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2526,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2508,"src":"7363:12:19","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2522,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2569,"src":"7307:26:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":2527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7307:69:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2512,"id":2528,"nodeType":"Return","src":"7300:76:19"}]},"documentation":{"id":2502,"nodeType":"StructuredDocumentation","src":"6878:175:19","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":2530,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"7067:20:19","nodeType":"FunctionDefinition","parameters":{"id":2509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2504,"mutability":"mutable","name":"target","nameLocation":"7105:6:19","nodeType":"VariableDeclaration","scope":2530,"src":"7097:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2503,"name":"address","nodeType":"ElementaryTypeName","src":"7097:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2506,"mutability":"mutable","name":"data","nameLocation":"7134:4:19","nodeType":"VariableDeclaration","scope":2530,"src":"7121:17:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2505,"name":"bytes","nodeType":"ElementaryTypeName","src":"7121:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2508,"mutability":"mutable","name":"errorMessage","nameLocation":"7162:12:19","nodeType":"VariableDeclaration","scope":2530,"src":"7148:26:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2507,"name":"string","nodeType":"ElementaryTypeName","src":"7148:6:19","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7087:93:19"},"returnParameters":{"id":2512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2511,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2530,"src":"7199:12:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2510,"name":"bytes","nodeType":"ElementaryTypeName","src":"7199:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7198:14:19"},"scope":2614,"src":"7058:325:19","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2568,"nodeType":"Block","src":"7865:434:19","statements":[{"condition":{"id":2544,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2535,"src":"7879:7:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2566,"nodeType":"Block","src":"8235:58:19","statements":[{"expression":{"arguments":[{"id":2562,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2537,"src":"8257:10:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2563,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2539,"src":"8269:12:19","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2561,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2613,"src":"8249:7:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":2564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8249:33:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2565,"nodeType":"ExpressionStatement","src":"8249:33:19"}]},"id":2567,"nodeType":"IfStatement","src":"7875:418:19","trueBody":{"id":2560,"nodeType":"Block","src":"7888:341:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2545,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2537,"src":"7906:10:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7917:6:19","memberName":"length","nodeType":"MemberAccess","src":"7906:17:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7927:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7906:22:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2557,"nodeType":"IfStatement","src":"7902:286:19","trueBody":{"id":2556,"nodeType":"Block","src":"7930:258:19","statements":[{"expression":{"arguments":[{"arguments":[{"id":2551,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2533,"src":"8132:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2550,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2302,"src":"8121:10:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":2552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8121:18:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":2553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8141:31:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""},"value":"Address: call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""}],"id":2549,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"8113:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8113:60:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2555,"nodeType":"ExpressionStatement","src":"8113:60:19"}]}},{"expression":{"id":2558,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2537,"src":"8208:10:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2543,"id":2559,"nodeType":"Return","src":"8201:17:19"}]}}]},"documentation":{"id":2531,"nodeType":"StructuredDocumentation","src":"7389:277:19","text":" @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n _Available since v4.8._"},"id":2569,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResultFromTarget","nameLocation":"7680:26:19","nodeType":"FunctionDefinition","parameters":{"id":2540,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2533,"mutability":"mutable","name":"target","nameLocation":"7724:6:19","nodeType":"VariableDeclaration","scope":2569,"src":"7716:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2532,"name":"address","nodeType":"ElementaryTypeName","src":"7716:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2535,"mutability":"mutable","name":"success","nameLocation":"7745:7:19","nodeType":"VariableDeclaration","scope":2569,"src":"7740:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2534,"name":"bool","nodeType":"ElementaryTypeName","src":"7740:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2537,"mutability":"mutable","name":"returndata","nameLocation":"7775:10:19","nodeType":"VariableDeclaration","scope":2569,"src":"7762:23:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2536,"name":"bytes","nodeType":"ElementaryTypeName","src":"7762:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2539,"mutability":"mutable","name":"errorMessage","nameLocation":"7809:12:19","nodeType":"VariableDeclaration","scope":2569,"src":"7795:26:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2538,"name":"string","nodeType":"ElementaryTypeName","src":"7795:6:19","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7706:121:19"},"returnParameters":{"id":2543,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2542,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2569,"src":"7851:12:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2541,"name":"bytes","nodeType":"ElementaryTypeName","src":"7851:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7850:14:19"},"scope":2614,"src":"7671:628:19","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2592,"nodeType":"Block","src":"8680:135:19","statements":[{"condition":{"id":2581,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2572,"src":"8694:7:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2590,"nodeType":"Block","src":"8751:58:19","statements":[{"expression":{"arguments":[{"id":2586,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2574,"src":"8773:10:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2587,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2576,"src":"8785:12:19","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2585,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2613,"src":"8765:7:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":2588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8765:33:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2589,"nodeType":"ExpressionStatement","src":"8765:33:19"}]},"id":2591,"nodeType":"IfStatement","src":"8690:119:19","trueBody":{"id":2584,"nodeType":"Block","src":"8703:42:19","statements":[{"expression":{"id":2582,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2574,"src":"8724:10:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2580,"id":2583,"nodeType":"Return","src":"8717:17:19"}]}}]},"documentation":{"id":2570,"nodeType":"StructuredDocumentation","src":"8305:210:19","text":" @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason or using the provided one.\n _Available since v4.3._"},"id":2593,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"8529:16:19","nodeType":"FunctionDefinition","parameters":{"id":2577,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2572,"mutability":"mutable","name":"success","nameLocation":"8560:7:19","nodeType":"VariableDeclaration","scope":2593,"src":"8555:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2571,"name":"bool","nodeType":"ElementaryTypeName","src":"8555:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2574,"mutability":"mutable","name":"returndata","nameLocation":"8590:10:19","nodeType":"VariableDeclaration","scope":2593,"src":"8577:23:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2573,"name":"bytes","nodeType":"ElementaryTypeName","src":"8577:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2576,"mutability":"mutable","name":"errorMessage","nameLocation":"8624:12:19","nodeType":"VariableDeclaration","scope":2593,"src":"8610:26:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2575,"name":"string","nodeType":"ElementaryTypeName","src":"8610:6:19","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8545:97:19"},"returnParameters":{"id":2580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2579,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2593,"src":"8666:12:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2578,"name":"bytes","nodeType":"ElementaryTypeName","src":"8666:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8665:14:19"},"scope":2614,"src":"8520:295:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2612,"nodeType":"Block","src":"8904:457:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2600,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2595,"src":"8980:10:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8991:6:19","memberName":"length","nodeType":"MemberAccess","src":"8980:17:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9000:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8980:21:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2610,"nodeType":"Block","src":"9310:45:19","statements":[{"expression":{"arguments":[{"id":2607,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2597,"src":"9331:12:19","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2606,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"9324:6:19","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":2608,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9324:20:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2609,"nodeType":"ExpressionStatement","src":"9324:20:19"}]},"id":2611,"nodeType":"IfStatement","src":"8976:379:19","trueBody":{"id":2605,"nodeType":"Block","src":"9003:301:19","statements":[{"AST":{"nativeSrc":"9161:133:19","nodeType":"YulBlock","src":"9161:133:19","statements":[{"nativeSrc":"9179:40:19","nodeType":"YulVariableDeclaration","src":"9179:40:19","value":{"arguments":[{"name":"returndata","nativeSrc":"9208:10:19","nodeType":"YulIdentifier","src":"9208:10:19"}],"functionName":{"name":"mload","nativeSrc":"9202:5:19","nodeType":"YulIdentifier","src":"9202:5:19"},"nativeSrc":"9202:17:19","nodeType":"YulFunctionCall","src":"9202:17:19"},"variables":[{"name":"returndata_size","nativeSrc":"9183:15:19","nodeType":"YulTypedName","src":"9183:15:19","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9247:2:19","nodeType":"YulLiteral","src":"9247:2:19","type":"","value":"32"},{"name":"returndata","nativeSrc":"9251:10:19","nodeType":"YulIdentifier","src":"9251:10:19"}],"functionName":{"name":"add","nativeSrc":"9243:3:19","nodeType":"YulIdentifier","src":"9243:3:19"},"nativeSrc":"9243:19:19","nodeType":"YulFunctionCall","src":"9243:19:19"},{"name":"returndata_size","nativeSrc":"9264:15:19","nodeType":"YulIdentifier","src":"9264:15:19"}],"functionName":{"name":"revert","nativeSrc":"9236:6:19","nodeType":"YulIdentifier","src":"9236:6:19"},"nativeSrc":"9236:44:19","nodeType":"YulFunctionCall","src":"9236:44:19"},"nativeSrc":"9236:44:19","nodeType":"YulExpressionStatement","src":"9236:44:19"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":2595,"isOffset":false,"isSlot":false,"src":"9208:10:19","valueSize":1},{"declaration":2595,"isOffset":false,"isSlot":false,"src":"9251:10:19","valueSize":1}],"id":2604,"nodeType":"InlineAssembly","src":"9152:142:19"}]}}]},"id":2613,"implemented":true,"kind":"function","modifiers":[],"name":"_revert","nameLocation":"8830:7:19","nodeType":"FunctionDefinition","parameters":{"id":2598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2595,"mutability":"mutable","name":"returndata","nameLocation":"8851:10:19","nodeType":"VariableDeclaration","scope":2613,"src":"8838:23:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2594,"name":"bytes","nodeType":"ElementaryTypeName","src":"8838:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2597,"mutability":"mutable","name":"errorMessage","nameLocation":"8877:12:19","nodeType":"VariableDeclaration","scope":2613,"src":"8863:26:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2596,"name":"string","nodeType":"ElementaryTypeName","src":"8863:6:19","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8837:53:19"},"returnParameters":{"id":2599,"nodeType":"ParameterList","parameters":[],"src":"8904:0:19"},"scope":2614,"src":"8821:540:19","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":2615,"src":"194:9169:19","usedErrors":[],"usedEvents":[]}],"src":"101:9263:19"},"id":19},"@openzeppelin/contracts/utils/Context.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","exportedSymbols":{"Context":[2644]},"id":2645,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2616,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"101:23:20"},{"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":2617,"nodeType":"StructuredDocumentation","src":"126:496:20","text":" @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 This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":2644,"linearizedBaseContracts":[2644],"name":"Context","nameLocation":"641:7:20","nodeType":"ContractDefinition","nodes":[{"body":{"id":2625,"nodeType":"Block","src":"717:34:20","statements":[{"expression":{"expression":{"id":2622,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"734:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"738:6:20","memberName":"sender","nodeType":"MemberAccess","src":"734:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2621,"id":2624,"nodeType":"Return","src":"727:17:20"}]},"id":2626,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"664:10:20","nodeType":"FunctionDefinition","parameters":{"id":2618,"nodeType":"ParameterList","parameters":[],"src":"674:2:20"},"returnParameters":{"id":2621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2620,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2626,"src":"708:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2619,"name":"address","nodeType":"ElementaryTypeName","src":"708:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"707:9:20"},"scope":2644,"src":"655:96:20","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2634,"nodeType":"Block","src":"824:32:20","statements":[{"expression":{"expression":{"id":2631,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"841:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"845:4:20","memberName":"data","nodeType":"MemberAccess","src":"841:8:20","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":2630,"id":2633,"nodeType":"Return","src":"834:15:20"}]},"id":2635,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"766:8:20","nodeType":"FunctionDefinition","parameters":{"id":2627,"nodeType":"ParameterList","parameters":[],"src":"774:2:20"},"returnParameters":{"id":2630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2629,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2635,"src":"808:14:20","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2628,"name":"bytes","nodeType":"ElementaryTypeName","src":"808:5:20","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"807:16:20"},"scope":2644,"src":"757:99:20","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2642,"nodeType":"Block","src":"934:25:20","statements":[{"expression":{"hexValue":"30","id":2640,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"951:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":2639,"id":2641,"nodeType":"Return","src":"944:8:20"}]},"id":2643,"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"871:20:20","nodeType":"FunctionDefinition","parameters":{"id":2636,"nodeType":"ParameterList","parameters":[],"src":"891:2:20"},"returnParameters":{"id":2639,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2638,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2643,"src":"925:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2637,"name":"uint256","nodeType":"ElementaryTypeName","src":"925:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"924:9:20"},"scope":2644,"src":"862:97:20","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":2645,"src":"623:338:20","usedErrors":[],"usedEvents":[]}],"src":"101:861:20"},"id":20},"@openzeppelin/contracts/utils/ShortStrings.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/ShortStrings.sol","exportedSymbols":{"ShortString":[2649],"ShortStrings":[2860],"StorageSlot":[2970]},"id":2861,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2646,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"106:23:21"},{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","file":"./StorageSlot.sol","id":2647,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2861,"sourceUnit":2971,"src":"131:27:21","symbolAliases":[],"unitAlias":""},{"canonicalName":"ShortString","id":2649,"name":"ShortString","nameLocation":"333:11:21","nodeType":"UserDefinedValueTypeDefinition","src":"328:28:21","underlyingType":{"id":2648,"name":"bytes32","nodeType":"ElementaryTypeName","src":"348:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"abstract":false,"baseContracts":[],"canonicalName":"ShortStrings","contractDependencies":[],"contractKind":"library","documentation":{"id":2650,"nodeType":"StructuredDocumentation","src":"358:876:21","text":" @dev This library provides functions to convert short memory strings\n into a `ShortString` type that can be used as an immutable variable.\n Strings of arbitrary length can be optimized using this library if\n they are short enough (up to 31 bytes) by packing them with their\n length (1 byte) in a single EVM word (32 bytes). Additionally, a\n fallback mechanism can be used for every other case.\n Usage example:\n ```solidity\n contract Named {\n     using ShortStrings for *;\n     ShortString private immutable _name;\n     string private _nameFallback;\n     constructor(string memory contractName) {\n         _name = contractName.toShortStringWithFallback(_nameFallback);\n     }\n     function name() external view returns (string memory) {\n         return _name.toStringWithFallback(_nameFallback);\n     }\n }\n ```"},"fullyImplemented":true,"id":2860,"linearizedBaseContracts":[2860],"name":"ShortStrings","nameLocation":"1243:12:21","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":2653,"mutability":"constant","name":"_FALLBACK_SENTINEL","nameLocation":"1350:18:21","nodeType":"VariableDeclaration","scope":2860,"src":"1325:112:21","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2651,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1325:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307830303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030304646","id":2652,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1371:66:21","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0x00000000000000000000000000000000000000000000000000000000000000FF"},"visibility":"private"},{"errorSelector":"305a27a9","id":2657,"name":"StringTooLong","nameLocation":"1450:13:21","nodeType":"ErrorDefinition","parameters":{"id":2656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2655,"mutability":"mutable","name":"str","nameLocation":"1471:3:21","nodeType":"VariableDeclaration","scope":2657,"src":"1464:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2654,"name":"string","nodeType":"ElementaryTypeName","src":"1464:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1463:12:21"},"src":"1444:32:21"},{"errorSelector":"b3512b0c","id":2659,"name":"InvalidShortString","nameLocation":"1487:18:21","nodeType":"ErrorDefinition","parameters":{"id":2658,"nodeType":"ParameterList","parameters":[],"src":"1505:2:21"},"src":"1481:27:21"},{"body":{"id":2702,"nodeType":"Block","src":"1767:208:21","statements":[{"assignments":[2669],"declarations":[{"constant":false,"id":2669,"mutability":"mutable","name":"bstr","nameLocation":"1790:4:21","nodeType":"VariableDeclaration","scope":2702,"src":"1777:17:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2668,"name":"bytes","nodeType":"ElementaryTypeName","src":"1777:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2674,"initialValue":{"arguments":[{"id":2672,"name":"str","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"1803:3:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2671,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1797:5:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2670,"name":"bytes","nodeType":"ElementaryTypeName","src":"1797:5:21","typeDescriptions":{}}},"id":2673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1797:10:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"1777:30:21"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2675,"name":"bstr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2669,"src":"1821:4:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1826:6:21","memberName":"length","nodeType":"MemberAccess","src":"1821:11:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3331","id":2677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1835:2:21","typeDescriptions":{"typeIdentifier":"t_rational_31_by_1","typeString":"int_const 31"},"value":"31"},"src":"1821:16:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2684,"nodeType":"IfStatement","src":"1817:72:21","trueBody":{"id":2683,"nodeType":"Block","src":"1839:50:21","statements":[{"errorCall":{"arguments":[{"id":2680,"name":"str","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"1874:3:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2679,"name":"StringTooLong","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2657,"src":"1860:13:21","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_string_memory_ptr_$returns$_t_error_$","typeString":"function (string memory) pure returns (error)"}},"id":2681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1860:18:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2682,"nodeType":"RevertStatement","src":"1853:25:21"}]}},{"expression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":2693,"name":"bstr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2669,"src":"1946:4:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2692,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1938:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2691,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1938:7:21","typeDescriptions":{}}},"id":2694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1938:13:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2690,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1930:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2689,"name":"uint256","nodeType":"ElementaryTypeName","src":"1930:7:21","typeDescriptions":{}}},"id":2695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1930:22:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"expression":{"id":2696,"name":"bstr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2669,"src":"1955:4:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1960:6:21","memberName":"length","nodeType":"MemberAccess","src":"1955:11:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1930:36:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2688,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1922:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2687,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1922:7:21","typeDescriptions":{}}},"id":2699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1922:45:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":2685,"name":"ShortString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2649,"src":"1905:11:21","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_ShortString_$2649_$","typeString":"type(ShortString)"}},"id":2686,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1917:4:21","memberName":"wrap","nodeType":"MemberAccess","src":"1905:16:21","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_ShortString_$2649_$","typeString":"function (bytes32) pure returns (ShortString)"}},"id":2700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1905:63:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$2649","typeString":"ShortString"}},"functionReturnParameters":2667,"id":2701,"nodeType":"Return","src":"1898:70:21"}]},"documentation":{"id":2660,"nodeType":"StructuredDocumentation","src":"1514:170:21","text":" @dev Encode a string of at most 31 chars into a `ShortString`.\n This will trigger a `StringTooLong` error is the input string is too long."},"id":2703,"implemented":true,"kind":"function","modifiers":[],"name":"toShortString","nameLocation":"1698:13:21","nodeType":"FunctionDefinition","parameters":{"id":2663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2662,"mutability":"mutable","name":"str","nameLocation":"1726:3:21","nodeType":"VariableDeclaration","scope":2703,"src":"1712:17:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2661,"name":"string","nodeType":"ElementaryTypeName","src":"1712:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1711:19:21"},"returnParameters":{"id":2667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2666,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2703,"src":"1754:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$2649","typeString":"ShortString"},"typeName":{"id":2665,"nodeType":"UserDefinedTypeName","pathNode":{"id":2664,"name":"ShortString","nameLocations":["1754:11:21"],"nodeType":"IdentifierPath","referencedDeclaration":2649,"src":"1754:11:21"},"referencedDeclaration":2649,"src":"1754:11:21","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$2649","typeString":"ShortString"}},"visibility":"internal"}],"src":"1753:13:21"},"scope":2860,"src":"1689:286:21","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2728,"nodeType":"Block","src":"2133:331:21","statements":[{"assignments":[2713],"declarations":[{"constant":false,"id":2713,"mutability":"mutable","name":"len","nameLocation":"2151:3:21","nodeType":"VariableDeclaration","scope":2728,"src":"2143:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2712,"name":"uint256","nodeType":"ElementaryTypeName","src":"2143:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2717,"initialValue":{"arguments":[{"id":2715,"name":"sstr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2707,"src":"2168:4:21","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$2649","typeString":"ShortString"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ShortString_$2649","typeString":"ShortString"}],"id":2714,"name":"byteLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2761,"src":"2157:10:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_ShortString_$2649_$returns$_t_uint256_$","typeString":"function (ShortString) pure returns (uint256)"}},"id":2716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2157:16:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2143:30:21"},{"assignments":[2719],"declarations":[{"constant":false,"id":2719,"mutability":"mutable","name":"str","nameLocation":"2275:3:21","nodeType":"VariableDeclaration","scope":2728,"src":"2261:17:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2718,"name":"string","nodeType":"ElementaryTypeName","src":"2261:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":2724,"initialValue":{"arguments":[{"hexValue":"3332","id":2722,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2292:2:21","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"id":2721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2281:10:21","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":2720,"name":"string","nodeType":"ElementaryTypeName","src":"2285:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":2723,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2281:14:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"2261:34:21"},{"AST":{"nativeSrc":"2357:81:21","nodeType":"YulBlock","src":"2357:81:21","statements":[{"expression":{"arguments":[{"name":"str","nativeSrc":"2378:3:21","nodeType":"YulIdentifier","src":"2378:3:21"},{"name":"len","nativeSrc":"2383:3:21","nodeType":"YulIdentifier","src":"2383:3:21"}],"functionName":{"name":"mstore","nativeSrc":"2371:6:21","nodeType":"YulIdentifier","src":"2371:6:21"},"nativeSrc":"2371:16:21","nodeType":"YulFunctionCall","src":"2371:16:21"},"nativeSrc":"2371:16:21","nodeType":"YulExpressionStatement","src":"2371:16:21"},{"expression":{"arguments":[{"arguments":[{"name":"str","nativeSrc":"2411:3:21","nodeType":"YulIdentifier","src":"2411:3:21"},{"kind":"number","nativeSrc":"2416:4:21","nodeType":"YulLiteral","src":"2416:4:21","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2407:3:21","nodeType":"YulIdentifier","src":"2407:3:21"},"nativeSrc":"2407:14:21","nodeType":"YulFunctionCall","src":"2407:14:21"},{"name":"sstr","nativeSrc":"2423:4:21","nodeType":"YulIdentifier","src":"2423:4:21"}],"functionName":{"name":"mstore","nativeSrc":"2400:6:21","nodeType":"YulIdentifier","src":"2400:6:21"},"nativeSrc":"2400:28:21","nodeType":"YulFunctionCall","src":"2400:28:21"},"nativeSrc":"2400:28:21","nodeType":"YulExpressionStatement","src":"2400:28:21"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":2713,"isOffset":false,"isSlot":false,"src":"2383:3:21","valueSize":1},{"declaration":2707,"isOffset":false,"isSlot":false,"src":"2423:4:21","valueSize":1},{"declaration":2719,"isOffset":false,"isSlot":false,"src":"2378:3:21","valueSize":1},{"declaration":2719,"isOffset":false,"isSlot":false,"src":"2411:3:21","valueSize":1}],"id":2725,"nodeType":"InlineAssembly","src":"2348:90:21"},{"expression":{"id":2726,"name":"str","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2719,"src":"2454:3:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":2711,"id":2727,"nodeType":"Return","src":"2447:10:21"}]},"documentation":{"id":2704,"nodeType":"StructuredDocumentation","src":"1981:73:21","text":" @dev Decode a `ShortString` back to a \"normal\" string."},"id":2729,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"2068:8:21","nodeType":"FunctionDefinition","parameters":{"id":2708,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2707,"mutability":"mutable","name":"sstr","nameLocation":"2089:4:21","nodeType":"VariableDeclaration","scope":2729,"src":"2077:16:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$2649","typeString":"ShortString"},"typeName":{"id":2706,"nodeType":"UserDefinedTypeName","pathNode":{"id":2705,"name":"ShortString","nameLocations":["2077:11:21"],"nodeType":"IdentifierPath","referencedDeclaration":2649,"src":"2077:11:21"},"referencedDeclaration":2649,"src":"2077:11:21","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$2649","typeString":"ShortString"}},"visibility":"internal"}],"src":"2076:18:21"},"returnParameters":{"id":2711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2710,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2729,"src":"2118:13:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2709,"name":"string","nodeType":"ElementaryTypeName","src":"2118:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2117:15:21"},"scope":2860,"src":"2059:405:21","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2760,"nodeType":"Block","src":"2606:175:21","statements":[{"assignments":[2739],"declarations":[{"constant":false,"id":2739,"mutability":"mutable","name":"result","nameLocation":"2624:6:21","nodeType":"VariableDeclaration","scope":2760,"src":"2616:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2738,"name":"uint256","nodeType":"ElementaryTypeName","src":"2616:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2749,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":2744,"name":"sstr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2733,"src":"2660:4:21","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$2649","typeString":"ShortString"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ShortString_$2649","typeString":"ShortString"}],"expression":{"id":2742,"name":"ShortString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2649,"src":"2641:11:21","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_ShortString_$2649_$","typeString":"type(ShortString)"}},"id":2743,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2653:6:21","memberName":"unwrap","nodeType":"MemberAccess","src":"2641:18:21","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_ShortString_$2649_$returns$_t_bytes32_$","typeString":"function (ShortString) pure returns (bytes32)"}},"id":2745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2641:24:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2741,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2633:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2740,"name":"uint256","nodeType":"ElementaryTypeName","src":"2633:7:21","typeDescriptions":{}}},"id":2746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2633:33:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30784646","id":2747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2669:4:21","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xFF"},"src":"2633:40:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2616:57:21"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2750,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2739,"src":"2687:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3331","id":2751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2696:2:21","typeDescriptions":{"typeIdentifier":"t_rational_31_by_1","typeString":"int_const 31"},"value":"31"},"src":"2687:11:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2757,"nodeType":"IfStatement","src":"2683:69:21","trueBody":{"id":2756,"nodeType":"Block","src":"2700:52:21","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2753,"name":"InvalidShortString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2659,"src":"2721:18:21","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2721:20:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2755,"nodeType":"RevertStatement","src":"2714:27:21"}]}},{"expression":{"id":2758,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2739,"src":"2768:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2737,"id":2759,"nodeType":"Return","src":"2761:13:21"}]},"documentation":{"id":2730,"nodeType":"StructuredDocumentation","src":"2470:61:21","text":" @dev Return the length of a `ShortString`."},"id":2761,"implemented":true,"kind":"function","modifiers":[],"name":"byteLength","nameLocation":"2545:10:21","nodeType":"FunctionDefinition","parameters":{"id":2734,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2733,"mutability":"mutable","name":"sstr","nameLocation":"2568:4:21","nodeType":"VariableDeclaration","scope":2761,"src":"2556:16:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$2649","typeString":"ShortString"},"typeName":{"id":2732,"nodeType":"UserDefinedTypeName","pathNode":{"id":2731,"name":"ShortString","nameLocations":["2556:11:21"],"nodeType":"IdentifierPath","referencedDeclaration":2649,"src":"2556:11:21"},"referencedDeclaration":2649,"src":"2556:11:21","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$2649","typeString":"ShortString"}},"visibility":"internal"}],"src":"2555:18:21"},"returnParameters":{"id":2737,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2736,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2761,"src":"2597:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2735,"name":"uint256","nodeType":"ElementaryTypeName","src":"2597:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2596:9:21"},"scope":2860,"src":"2536:245:21","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2800,"nodeType":"Block","src":"3004:232:21","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":2774,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2764,"src":"3024:5:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2773,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3018:5:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2772,"name":"bytes","nodeType":"ElementaryTypeName","src":"3018:5:21","typeDescriptions":{}}},"id":2775,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3018:12:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3031:6:21","memberName":"length","nodeType":"MemberAccess","src":"3018:19:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3332","id":2777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3040:2:21","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"3018:24:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2798,"nodeType":"Block","src":"3102:128:21","statements":[{"expression":{"id":2791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":2787,"name":"store","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2766,"src":"3142:5:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_storage_ptr","typeString":"string storage pointer"}],"expression":{"id":2784,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2970,"src":"3116:11:21","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2970_$","typeString":"type(library StorageSlot)"}},"id":2786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3128:13:21","memberName":"getStringSlot","nodeType":"MemberAccess","referencedDeclaration":2947,"src":"3116:25:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_storage_ptr_$returns$_t_struct$_StringSlot_$2878_storage_ptr_$","typeString":"function (string storage pointer) pure returns (struct StorageSlot.StringSlot storage pointer)"}},"id":2788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3116:32:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$2878_storage_ptr","typeString":"struct StorageSlot.StringSlot storage pointer"}},"id":2789,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3149:5:21","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2877,"src":"3116:38:21","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2790,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2764,"src":"3157:5:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"3116:46:21","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":2792,"nodeType":"ExpressionStatement","src":"3116:46:21"},{"expression":{"arguments":[{"id":2795,"name":"_FALLBACK_SENTINEL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2653,"src":"3200:18:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":2793,"name":"ShortString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2649,"src":"3183:11:21","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_ShortString_$2649_$","typeString":"type(ShortString)"}},"id":2794,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3195:4:21","memberName":"wrap","nodeType":"MemberAccess","src":"3183:16:21","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_ShortString_$2649_$","typeString":"function (bytes32) pure returns (ShortString)"}},"id":2796,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3183:36:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$2649","typeString":"ShortString"}},"functionReturnParameters":2771,"id":2797,"nodeType":"Return","src":"3176:43:21"}]},"id":2799,"nodeType":"IfStatement","src":"3014:216:21","trueBody":{"id":2783,"nodeType":"Block","src":"3044:52:21","statements":[{"expression":{"arguments":[{"id":2780,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2764,"src":"3079:5:21","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2779,"name":"toShortString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2703,"src":"3065:13:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$returns$_t_userDefinedValueType$_ShortString_$2649_$","typeString":"function (string memory) pure returns (ShortString)"}},"id":2781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3065:20:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$2649","typeString":"ShortString"}},"functionReturnParameters":2771,"id":2782,"nodeType":"Return","src":"3058:27:21"}]}}]},"documentation":{"id":2762,"nodeType":"StructuredDocumentation","src":"2787:103:21","text":" @dev Encode a string into a `ShortString`, or write it to storage if it is too long."},"id":2801,"implemented":true,"kind":"function","modifiers":[],"name":"toShortStringWithFallback","nameLocation":"2904:25:21","nodeType":"FunctionDefinition","parameters":{"id":2767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2764,"mutability":"mutable","name":"value","nameLocation":"2944:5:21","nodeType":"VariableDeclaration","scope":2801,"src":"2930:19:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2763,"name":"string","nodeType":"ElementaryTypeName","src":"2930:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2766,"mutability":"mutable","name":"store","nameLocation":"2966:5:21","nodeType":"VariableDeclaration","scope":2801,"src":"2951:20:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":2765,"name":"string","nodeType":"ElementaryTypeName","src":"2951:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2929:43:21"},"returnParameters":{"id":2771,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2770,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2801,"src":"2991:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$2649","typeString":"ShortString"},"typeName":{"id":2769,"nodeType":"UserDefinedTypeName","pathNode":{"id":2768,"name":"ShortString","nameLocations":["2991:11:21"],"nodeType":"IdentifierPath","referencedDeclaration":2649,"src":"2991:11:21"},"referencedDeclaration":2649,"src":"2991:11:21","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$2649","typeString":"ShortString"}},"visibility":"internal"}],"src":"2990:13:21"},"scope":2860,"src":"2895:341:21","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2827,"nodeType":"Block","src":"3476:159:21","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":2817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2814,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2805,"src":"3509:5:21","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$2649","typeString":"ShortString"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ShortString_$2649","typeString":"ShortString"}],"expression":{"id":2812,"name":"ShortString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2649,"src":"3490:11:21","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_ShortString_$2649_$","typeString":"type(ShortString)"}},"id":2813,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3502:6:21","memberName":"unwrap","nodeType":"MemberAccess","src":"3490:18:21","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_ShortString_$2649_$returns$_t_bytes32_$","typeString":"function (ShortString) pure returns (bytes32)"}},"id":2815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3490:25:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2816,"name":"_FALLBACK_SENTINEL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2653,"src":"3519:18:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3490:47:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2825,"nodeType":"Block","src":"3592:37:21","statements":[{"expression":{"id":2823,"name":"store","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"3613:5:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string storage pointer"}},"functionReturnParameters":2811,"id":2824,"nodeType":"Return","src":"3606:12:21"}]},"id":2826,"nodeType":"IfStatement","src":"3486:143:21","trueBody":{"id":2822,"nodeType":"Block","src":"3539:47:21","statements":[{"expression":{"arguments":[{"id":2819,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2805,"src":"3569:5:21","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$2649","typeString":"ShortString"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ShortString_$2649","typeString":"ShortString"}],"id":2818,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2729,"src":"3560:8:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_ShortString_$2649_$returns$_t_string_memory_ptr_$","typeString":"function (ShortString) pure returns (string memory)"}},"id":2820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3560:15:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":2811,"id":2821,"nodeType":"Return","src":"3553:22:21"}]}}]},"documentation":{"id":2802,"nodeType":"StructuredDocumentation","src":"3242:120:21","text":" @dev Decode a string that was encoded to `ShortString` or written to storage using {setWithFallback}."},"id":2828,"implemented":true,"kind":"function","modifiers":[],"name":"toStringWithFallback","nameLocation":"3376:20:21","nodeType":"FunctionDefinition","parameters":{"id":2808,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2805,"mutability":"mutable","name":"value","nameLocation":"3409:5:21","nodeType":"VariableDeclaration","scope":2828,"src":"3397:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$2649","typeString":"ShortString"},"typeName":{"id":2804,"nodeType":"UserDefinedTypeName","pathNode":{"id":2803,"name":"ShortString","nameLocations":["3397:11:21"],"nodeType":"IdentifierPath","referencedDeclaration":2649,"src":"3397:11:21"},"referencedDeclaration":2649,"src":"3397:11:21","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$2649","typeString":"ShortString"}},"visibility":"internal"},{"constant":false,"id":2807,"mutability":"mutable","name":"store","nameLocation":"3431:5:21","nodeType":"VariableDeclaration","scope":2828,"src":"3416:20:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":2806,"name":"string","nodeType":"ElementaryTypeName","src":"3416:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3396:41:21"},"returnParameters":{"id":2811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2810,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2828,"src":"3461:13:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2809,"name":"string","nodeType":"ElementaryTypeName","src":"3461:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3460:15:21"},"scope":2860,"src":"3367:268:21","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2858,"nodeType":"Block","src":"4108:175:21","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":2844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2841,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2832,"src":"4141:5:21","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$2649","typeString":"ShortString"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ShortString_$2649","typeString":"ShortString"}],"expression":{"id":2839,"name":"ShortString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2649,"src":"4122:11:21","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_ShortString_$2649_$","typeString":"type(ShortString)"}},"id":2840,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4134:6:21","memberName":"unwrap","nodeType":"MemberAccess","src":"4122:18:21","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_ShortString_$2649_$returns$_t_bytes32_$","typeString":"function (ShortString) pure returns (bytes32)"}},"id":2842,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4122:25:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2843,"name":"_FALLBACK_SENTINEL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2653,"src":"4151:18:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4122:47:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2856,"nodeType":"Block","src":"4226:51:21","statements":[{"expression":{"expression":{"arguments":[{"id":2852,"name":"store","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2834,"src":"4253:5:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_storage_ptr","typeString":"string storage pointer"}],"id":2851,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4247:5:21","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2850,"name":"bytes","nodeType":"ElementaryTypeName","src":"4247:5:21","typeDescriptions":{}}},"id":2853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4247:12:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes storage pointer"}},"id":2854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4260:6:21","memberName":"length","nodeType":"MemberAccess","src":"4247:19:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2838,"id":2855,"nodeType":"Return","src":"4240:26:21"}]},"id":2857,"nodeType":"IfStatement","src":"4118:159:21","trueBody":{"id":2849,"nodeType":"Block","src":"4171:49:21","statements":[{"expression":{"arguments":[{"id":2846,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2832,"src":"4203:5:21","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$2649","typeString":"ShortString"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ShortString_$2649","typeString":"ShortString"}],"id":2845,"name":"byteLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2761,"src":"4192:10:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_ShortString_$2649_$returns$_t_uint256_$","typeString":"function (ShortString) pure returns (uint256)"}},"id":2847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4192:17:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2838,"id":2848,"nodeType":"Return","src":"4185:24:21"}]}}]},"documentation":{"id":2829,"nodeType":"StructuredDocumentation","src":"3641:357:21","text":" @dev Return the length of a string that was encoded to `ShortString` or written to storage using {setWithFallback}.\n WARNING: This will return the \"byte length\" of the string. This may not reflect the actual length in terms of\n actual characters as the UTF-8 encoding of a single character can span over multiple bytes."},"id":2859,"implemented":true,"kind":"function","modifiers":[],"name":"byteLengthWithFallback","nameLocation":"4012:22:21","nodeType":"FunctionDefinition","parameters":{"id":2835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2832,"mutability":"mutable","name":"value","nameLocation":"4047:5:21","nodeType":"VariableDeclaration","scope":2859,"src":"4035:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$2649","typeString":"ShortString"},"typeName":{"id":2831,"nodeType":"UserDefinedTypeName","pathNode":{"id":2830,"name":"ShortString","nameLocations":["4035:11:21"],"nodeType":"IdentifierPath","referencedDeclaration":2649,"src":"4035:11:21"},"referencedDeclaration":2649,"src":"4035:11:21","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$2649","typeString":"ShortString"}},"visibility":"internal"},{"constant":false,"id":2834,"mutability":"mutable","name":"store","nameLocation":"4069:5:21","nodeType":"VariableDeclaration","scope":2859,"src":"4054:20:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":2833,"name":"string","nodeType":"ElementaryTypeName","src":"4054:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4034:41:21"},"returnParameters":{"id":2838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2837,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2859,"src":"4099:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2836,"name":"uint256","nodeType":"ElementaryTypeName","src":"4099:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4098:9:21"},"scope":2860,"src":"4003:280:21","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":2861,"src":"1235:3050:21","usedErrors":[2657,2659],"usedEvents":[]}],"src":"106:4180:21"},"id":21},"@openzeppelin/contracts/utils/StorageSlot.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","exportedSymbols":{"StorageSlot":[2970]},"id":2971,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2862,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"193:23:22"},{"abstract":false,"baseContracts":[],"canonicalName":"StorageSlot","contractDependencies":[],"contractKind":"library","documentation":{"id":2863,"nodeType":"StructuredDocumentation","src":"218:1201:22","text":" @dev Library for reading and writing primitive types to specific storage slots.\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 The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n Example usage to set ERC1967 implementation slot:\n ```solidity\n contract ERC1967 {\n     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n     function _getImplementation() internal view returns (address) {\n         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\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 _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\n _Available since v4.9 for `string`, `bytes`._"},"fullyImplemented":true,"id":2970,"linearizedBaseContracts":[2970],"name":"StorageSlot","nameLocation":"1428:11:22","nodeType":"ContractDefinition","nodes":[{"canonicalName":"StorageSlot.AddressSlot","id":2866,"members":[{"constant":false,"id":2865,"mutability":"mutable","name":"value","nameLocation":"1483:5:22","nodeType":"VariableDeclaration","scope":2866,"src":"1475:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2864,"name":"address","nodeType":"ElementaryTypeName","src":"1475:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"AddressSlot","nameLocation":"1453:11:22","nodeType":"StructDefinition","scope":2970,"src":"1446:49:22","visibility":"public"},{"canonicalName":"StorageSlot.BooleanSlot","id":2869,"members":[{"constant":false,"id":2868,"mutability":"mutable","name":"value","nameLocation":"1535:5:22","nodeType":"VariableDeclaration","scope":2869,"src":"1530:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2867,"name":"bool","nodeType":"ElementaryTypeName","src":"1530:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"BooleanSlot","nameLocation":"1508:11:22","nodeType":"StructDefinition","scope":2970,"src":"1501:46:22","visibility":"public"},{"canonicalName":"StorageSlot.Bytes32Slot","id":2872,"members":[{"constant":false,"id":2871,"mutability":"mutable","name":"value","nameLocation":"1590:5:22","nodeType":"VariableDeclaration","scope":2872,"src":"1582:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2870,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1582:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"Bytes32Slot","nameLocation":"1560:11:22","nodeType":"StructDefinition","scope":2970,"src":"1553:49:22","visibility":"public"},{"canonicalName":"StorageSlot.Uint256Slot","id":2875,"members":[{"constant":false,"id":2874,"mutability":"mutable","name":"value","nameLocation":"1645:5:22","nodeType":"VariableDeclaration","scope":2875,"src":"1637:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2873,"name":"uint256","nodeType":"ElementaryTypeName","src":"1637:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Uint256Slot","nameLocation":"1615:11:22","nodeType":"StructDefinition","scope":2970,"src":"1608:49:22","visibility":"public"},{"canonicalName":"StorageSlot.StringSlot","id":2878,"members":[{"constant":false,"id":2877,"mutability":"mutable","name":"value","nameLocation":"1698:5:22","nodeType":"VariableDeclaration","scope":2878,"src":"1691:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":2876,"name":"string","nodeType":"ElementaryTypeName","src":"1691:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"StringSlot","nameLocation":"1670:10:22","nodeType":"StructDefinition","scope":2970,"src":"1663:47:22","visibility":"public"},{"canonicalName":"StorageSlot.BytesSlot","id":2881,"members":[{"constant":false,"id":2880,"mutability":"mutable","name":"value","nameLocation":"1749:5:22","nodeType":"VariableDeclaration","scope":2881,"src":"1743:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":2879,"name":"bytes","nodeType":"ElementaryTypeName","src":"1743:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"BytesSlot","nameLocation":"1723:9:22","nodeType":"StructDefinition","scope":2970,"src":"1716:45:22","visibility":"public"},{"body":{"id":2891,"nodeType":"Block","src":"1943:106:22","statements":[{"AST":{"nativeSrc":"2005:38:22","nodeType":"YulBlock","src":"2005:38:22","statements":[{"nativeSrc":"2019:14:22","nodeType":"YulAssignment","src":"2019:14:22","value":{"name":"slot","nativeSrc":"2029:4:22","nodeType":"YulIdentifier","src":"2029:4:22"},"variableNames":[{"name":"r.slot","nativeSrc":"2019:6:22","nodeType":"YulIdentifier","src":"2019:6:22"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":2888,"isOffset":false,"isSlot":true,"src":"2019:6:22","suffix":"slot","valueSize":1},{"declaration":2884,"isOffset":false,"isSlot":false,"src":"2029:4:22","valueSize":1}],"id":2890,"nodeType":"InlineAssembly","src":"1996:47:22"}]},"documentation":{"id":2882,"nodeType":"StructuredDocumentation","src":"1767:87:22","text":" @dev Returns an `AddressSlot` with member `value` located at `slot`."},"id":2892,"implemented":true,"kind":"function","modifiers":[],"name":"getAddressSlot","nameLocation":"1868:14:22","nodeType":"FunctionDefinition","parameters":{"id":2885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2884,"mutability":"mutable","name":"slot","nameLocation":"1891:4:22","nodeType":"VariableDeclaration","scope":2892,"src":"1883:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2883,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1883:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1882:14:22"},"returnParameters":{"id":2889,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2888,"mutability":"mutable","name":"r","nameLocation":"1940:1:22","nodeType":"VariableDeclaration","scope":2892,"src":"1920:21:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2866_storage_ptr","typeString":"struct StorageSlot.AddressSlot"},"typeName":{"id":2887,"nodeType":"UserDefinedTypeName","pathNode":{"id":2886,"name":"AddressSlot","nameLocations":["1920:11:22"],"nodeType":"IdentifierPath","referencedDeclaration":2866,"src":"1920:11:22"},"referencedDeclaration":2866,"src":"1920:11:22","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$2866_storage_ptr","typeString":"struct StorageSlot.AddressSlot"}},"visibility":"internal"}],"src":"1919:23:22"},"scope":2970,"src":"1859:190:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2902,"nodeType":"Block","src":"2231:106:22","statements":[{"AST":{"nativeSrc":"2293:38:22","nodeType":"YulBlock","src":"2293:38:22","statements":[{"nativeSrc":"2307:14:22","nodeType":"YulAssignment","src":"2307:14:22","value":{"name":"slot","nativeSrc":"2317:4:22","nodeType":"YulIdentifier","src":"2317:4:22"},"variableNames":[{"name":"r.slot","nativeSrc":"2307:6:22","nodeType":"YulIdentifier","src":"2307:6:22"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":2899,"isOffset":false,"isSlot":true,"src":"2307:6:22","suffix":"slot","valueSize":1},{"declaration":2895,"isOffset":false,"isSlot":false,"src":"2317:4:22","valueSize":1}],"id":2901,"nodeType":"InlineAssembly","src":"2284:47:22"}]},"documentation":{"id":2893,"nodeType":"StructuredDocumentation","src":"2055:87:22","text":" @dev Returns an `BooleanSlot` with member `value` located at `slot`."},"id":2903,"implemented":true,"kind":"function","modifiers":[],"name":"getBooleanSlot","nameLocation":"2156:14:22","nodeType":"FunctionDefinition","parameters":{"id":2896,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2895,"mutability":"mutable","name":"slot","nameLocation":"2179:4:22","nodeType":"VariableDeclaration","scope":2903,"src":"2171:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2894,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2171:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2170:14:22"},"returnParameters":{"id":2900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2899,"mutability":"mutable","name":"r","nameLocation":"2228:1:22","nodeType":"VariableDeclaration","scope":2903,"src":"2208:21:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$2869_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"},"typeName":{"id":2898,"nodeType":"UserDefinedTypeName","pathNode":{"id":2897,"name":"BooleanSlot","nameLocations":["2208:11:22"],"nodeType":"IdentifierPath","referencedDeclaration":2869,"src":"2208:11:22"},"referencedDeclaration":2869,"src":"2208:11:22","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$2869_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"}},"visibility":"internal"}],"src":"2207:23:22"},"scope":2970,"src":"2147:190:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2913,"nodeType":"Block","src":"2519:106:22","statements":[{"AST":{"nativeSrc":"2581:38:22","nodeType":"YulBlock","src":"2581:38:22","statements":[{"nativeSrc":"2595:14:22","nodeType":"YulAssignment","src":"2595:14:22","value":{"name":"slot","nativeSrc":"2605:4:22","nodeType":"YulIdentifier","src":"2605:4:22"},"variableNames":[{"name":"r.slot","nativeSrc":"2595:6:22","nodeType":"YulIdentifier","src":"2595:6:22"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":2910,"isOffset":false,"isSlot":true,"src":"2595:6:22","suffix":"slot","valueSize":1},{"declaration":2906,"isOffset":false,"isSlot":false,"src":"2605:4:22","valueSize":1}],"id":2912,"nodeType":"InlineAssembly","src":"2572:47:22"}]},"documentation":{"id":2904,"nodeType":"StructuredDocumentation","src":"2343:87:22","text":" @dev Returns an `Bytes32Slot` with member `value` located at `slot`."},"id":2914,"implemented":true,"kind":"function","modifiers":[],"name":"getBytes32Slot","nameLocation":"2444:14:22","nodeType":"FunctionDefinition","parameters":{"id":2907,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2906,"mutability":"mutable","name":"slot","nameLocation":"2467:4:22","nodeType":"VariableDeclaration","scope":2914,"src":"2459:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2905,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2459:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2458:14:22"},"returnParameters":{"id":2911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2910,"mutability":"mutable","name":"r","nameLocation":"2516:1:22","nodeType":"VariableDeclaration","scope":2914,"src":"2496:21:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$2872_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"},"typeName":{"id":2909,"nodeType":"UserDefinedTypeName","pathNode":{"id":2908,"name":"Bytes32Slot","nameLocations":["2496:11:22"],"nodeType":"IdentifierPath","referencedDeclaration":2872,"src":"2496:11:22"},"referencedDeclaration":2872,"src":"2496:11:22","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$2872_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"}},"visibility":"internal"}],"src":"2495:23:22"},"scope":2970,"src":"2435:190:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2924,"nodeType":"Block","src":"2807:106:22","statements":[{"AST":{"nativeSrc":"2869:38:22","nodeType":"YulBlock","src":"2869:38:22","statements":[{"nativeSrc":"2883:14:22","nodeType":"YulAssignment","src":"2883:14:22","value":{"name":"slot","nativeSrc":"2893:4:22","nodeType":"YulIdentifier","src":"2893:4:22"},"variableNames":[{"name":"r.slot","nativeSrc":"2883:6:22","nodeType":"YulIdentifier","src":"2883:6:22"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":2921,"isOffset":false,"isSlot":true,"src":"2883:6:22","suffix":"slot","valueSize":1},{"declaration":2917,"isOffset":false,"isSlot":false,"src":"2893:4:22","valueSize":1}],"id":2923,"nodeType":"InlineAssembly","src":"2860:47:22"}]},"documentation":{"id":2915,"nodeType":"StructuredDocumentation","src":"2631:87:22","text":" @dev Returns an `Uint256Slot` with member `value` located at `slot`."},"id":2925,"implemented":true,"kind":"function","modifiers":[],"name":"getUint256Slot","nameLocation":"2732:14:22","nodeType":"FunctionDefinition","parameters":{"id":2918,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2917,"mutability":"mutable","name":"slot","nameLocation":"2755:4:22","nodeType":"VariableDeclaration","scope":2925,"src":"2747:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2916,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2747:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2746:14:22"},"returnParameters":{"id":2922,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2921,"mutability":"mutable","name":"r","nameLocation":"2804:1:22","nodeType":"VariableDeclaration","scope":2925,"src":"2784:21:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$2875_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"},"typeName":{"id":2920,"nodeType":"UserDefinedTypeName","pathNode":{"id":2919,"name":"Uint256Slot","nameLocations":["2784:11:22"],"nodeType":"IdentifierPath","referencedDeclaration":2875,"src":"2784:11:22"},"referencedDeclaration":2875,"src":"2784:11:22","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$2875_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"}},"visibility":"internal"}],"src":"2783:23:22"},"scope":2970,"src":"2723:190:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2935,"nodeType":"Block","src":"3092:106:22","statements":[{"AST":{"nativeSrc":"3154:38:22","nodeType":"YulBlock","src":"3154:38:22","statements":[{"nativeSrc":"3168:14:22","nodeType":"YulAssignment","src":"3168:14:22","value":{"name":"slot","nativeSrc":"3178:4:22","nodeType":"YulIdentifier","src":"3178:4:22"},"variableNames":[{"name":"r.slot","nativeSrc":"3168:6:22","nodeType":"YulIdentifier","src":"3168:6:22"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":2932,"isOffset":false,"isSlot":true,"src":"3168:6:22","suffix":"slot","valueSize":1},{"declaration":2928,"isOffset":false,"isSlot":false,"src":"3178:4:22","valueSize":1}],"id":2934,"nodeType":"InlineAssembly","src":"3145:47:22"}]},"documentation":{"id":2926,"nodeType":"StructuredDocumentation","src":"2919:86:22","text":" @dev Returns an `StringSlot` with member `value` located at `slot`."},"id":2936,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3019:13:22","nodeType":"FunctionDefinition","parameters":{"id":2929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2928,"mutability":"mutable","name":"slot","nameLocation":"3041:4:22","nodeType":"VariableDeclaration","scope":2936,"src":"3033:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2927,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3033:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3032:14:22"},"returnParameters":{"id":2933,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2932,"mutability":"mutable","name":"r","nameLocation":"3089:1:22","nodeType":"VariableDeclaration","scope":2936,"src":"3070:20:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$2878_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":2931,"nodeType":"UserDefinedTypeName","pathNode":{"id":2930,"name":"StringSlot","nameLocations":["3070:10:22"],"nodeType":"IdentifierPath","referencedDeclaration":2878,"src":"3070:10:22"},"referencedDeclaration":2878,"src":"3070:10:22","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$2878_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"3069:22:22"},"scope":2970,"src":"3010:188:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2946,"nodeType":"Block","src":"3400:112:22","statements":[{"AST":{"nativeSrc":"3462:44:22","nodeType":"YulBlock","src":"3462:44:22","statements":[{"nativeSrc":"3476:20:22","nodeType":"YulAssignment","src":"3476:20:22","value":{"name":"store.slot","nativeSrc":"3486:10:22","nodeType":"YulIdentifier","src":"3486:10:22"},"variableNames":[{"name":"r.slot","nativeSrc":"3476:6:22","nodeType":"YulIdentifier","src":"3476:6:22"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":2943,"isOffset":false,"isSlot":true,"src":"3476:6:22","suffix":"slot","valueSize":1},{"declaration":2939,"isOffset":false,"isSlot":true,"src":"3486:10:22","suffix":"slot","valueSize":1}],"id":2945,"nodeType":"InlineAssembly","src":"3453:53:22"}]},"documentation":{"id":2937,"nodeType":"StructuredDocumentation","src":"3204:101:22","text":" @dev Returns an `StringSlot` representation of the string storage pointer `store`."},"id":2947,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3319:13:22","nodeType":"FunctionDefinition","parameters":{"id":2940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2939,"mutability":"mutable","name":"store","nameLocation":"3348:5:22","nodeType":"VariableDeclaration","scope":2947,"src":"3333:20:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":2938,"name":"string","nodeType":"ElementaryTypeName","src":"3333:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3332:22:22"},"returnParameters":{"id":2944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2943,"mutability":"mutable","name":"r","nameLocation":"3397:1:22","nodeType":"VariableDeclaration","scope":2947,"src":"3378:20:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$2878_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":2942,"nodeType":"UserDefinedTypeName","pathNode":{"id":2941,"name":"StringSlot","nameLocations":["3378:10:22"],"nodeType":"IdentifierPath","referencedDeclaration":2878,"src":"3378:10:22"},"referencedDeclaration":2878,"src":"3378:10:22","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$2878_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"3377:22:22"},"scope":2970,"src":"3310:202:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2957,"nodeType":"Block","src":"3688:106:22","statements":[{"AST":{"nativeSrc":"3750:38:22","nodeType":"YulBlock","src":"3750:38:22","statements":[{"nativeSrc":"3764:14:22","nodeType":"YulAssignment","src":"3764:14:22","value":{"name":"slot","nativeSrc":"3774:4:22","nodeType":"YulIdentifier","src":"3774:4:22"},"variableNames":[{"name":"r.slot","nativeSrc":"3764:6:22","nodeType":"YulIdentifier","src":"3764:6:22"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":2954,"isOffset":false,"isSlot":true,"src":"3764:6:22","suffix":"slot","valueSize":1},{"declaration":2950,"isOffset":false,"isSlot":false,"src":"3774:4:22","valueSize":1}],"id":2956,"nodeType":"InlineAssembly","src":"3741:47:22"}]},"documentation":{"id":2948,"nodeType":"StructuredDocumentation","src":"3518:85:22","text":" @dev Returns an `BytesSlot` with member `value` located at `slot`."},"id":2958,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3617:12:22","nodeType":"FunctionDefinition","parameters":{"id":2951,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2950,"mutability":"mutable","name":"slot","nameLocation":"3638:4:22","nodeType":"VariableDeclaration","scope":2958,"src":"3630:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2949,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3630:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3629:14:22"},"returnParameters":{"id":2955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2954,"mutability":"mutable","name":"r","nameLocation":"3685:1:22","nodeType":"VariableDeclaration","scope":2958,"src":"3667:19:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$2881_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":2953,"nodeType":"UserDefinedTypeName","pathNode":{"id":2952,"name":"BytesSlot","nameLocations":["3667:9:22"],"nodeType":"IdentifierPath","referencedDeclaration":2881,"src":"3667:9:22"},"referencedDeclaration":2881,"src":"3667:9:22","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$2881_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"3666:21:22"},"scope":2970,"src":"3608:186:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2968,"nodeType":"Block","src":"3991:112:22","statements":[{"AST":{"nativeSrc":"4053:44:22","nodeType":"YulBlock","src":"4053:44:22","statements":[{"nativeSrc":"4067:20:22","nodeType":"YulAssignment","src":"4067:20:22","value":{"name":"store.slot","nativeSrc":"4077:10:22","nodeType":"YulIdentifier","src":"4077:10:22"},"variableNames":[{"name":"r.slot","nativeSrc":"4067:6:22","nodeType":"YulIdentifier","src":"4067:6:22"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":2965,"isOffset":false,"isSlot":true,"src":"4067:6:22","suffix":"slot","valueSize":1},{"declaration":2961,"isOffset":false,"isSlot":true,"src":"4077:10:22","suffix":"slot","valueSize":1}],"id":2967,"nodeType":"InlineAssembly","src":"4044:53:22"}]},"documentation":{"id":2959,"nodeType":"StructuredDocumentation","src":"3800:99:22","text":" @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`."},"id":2969,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3913:12:22","nodeType":"FunctionDefinition","parameters":{"id":2962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2961,"mutability":"mutable","name":"store","nameLocation":"3940:5:22","nodeType":"VariableDeclaration","scope":2969,"src":"3926:19:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":2960,"name":"bytes","nodeType":"ElementaryTypeName","src":"3926:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3925:21:22"},"returnParameters":{"id":2966,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2965,"mutability":"mutable","name":"r","nameLocation":"3988:1:22","nodeType":"VariableDeclaration","scope":2969,"src":"3970:19:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$2881_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":2964,"nodeType":"UserDefinedTypeName","pathNode":{"id":2963,"name":"BytesSlot","nameLocations":["3970:9:22"],"nodeType":"IdentifierPath","referencedDeclaration":2881,"src":"3970:9:22"},"referencedDeclaration":2881,"src":"3970:9:22","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$2881_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"3969:21:22"},"scope":2970,"src":"3904:199:22","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2971,"src":"1420:2685:22","usedErrors":[],"usedEvents":[]}],"src":"193:3913:22"},"id":22},"@openzeppelin/contracts/utils/Strings.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","exportedSymbols":{"Math":[4635],"SignedMath":[4740],"Strings":[3199]},"id":3200,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2972,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"101:23:23"},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"./math/Math.sol","id":2973,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3200,"sourceUnit":4636,"src":"126:25:23","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SignedMath.sol","file":"./math/SignedMath.sol","id":2974,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3200,"sourceUnit":4741,"src":"152:31:23","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":2975,"nodeType":"StructuredDocumentation","src":"185:34:23","text":" @dev String operations."},"fullyImplemented":true,"id":3199,"linearizedBaseContracts":[3199],"name":"Strings","nameLocation":"228:7:23","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":2978,"mutability":"constant","name":"_SYMBOLS","nameLocation":"267:8:23","nodeType":"VariableDeclaration","scope":3199,"src":"242:54:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":2976,"name":"bytes16","nodeType":"ElementaryTypeName","src":"242:7:23","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":2977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"278:18:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"constant":true,"id":2981,"mutability":"constant","name":"_ADDRESS_LENGTH","nameLocation":"325:15:23","nodeType":"VariableDeclaration","scope":3199,"src":"302:43:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2979,"name":"uint8","nodeType":"ElementaryTypeName","src":"302:5:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":2980,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"343:2:23","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"body":{"id":3028,"nodeType":"Block","src":"518:625:23","statements":[{"id":3027,"nodeType":"UncheckedBlock","src":"528:609:23","statements":[{"assignments":[2990],"declarations":[{"constant":false,"id":2990,"mutability":"mutable","name":"length","nameLocation":"560:6:23","nodeType":"VariableDeclaration","scope":3027,"src":"552:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2989,"name":"uint256","nodeType":"ElementaryTypeName","src":"552:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2997,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2993,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2984,"src":"580:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2991,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4635,"src":"569:4:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$4635_$","typeString":"type(library Math)"}},"id":2992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"574:5:23","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":4472,"src":"569:10:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"569:17:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2995,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"589:1:23","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"569:21:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"552:38:23"},{"assignments":[2999],"declarations":[{"constant":false,"id":2999,"mutability":"mutable","name":"buffer","nameLocation":"618:6:23","nodeType":"VariableDeclaration","scope":3027,"src":"604:20:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2998,"name":"string","nodeType":"ElementaryTypeName","src":"604:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":3004,"initialValue":{"arguments":[{"id":3002,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2990,"src":"638:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3001,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"627:10:23","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":3000,"name":"string","nodeType":"ElementaryTypeName","src":"631:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":3003,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"627:18:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"604:41:23"},{"assignments":[3006],"declarations":[{"constant":false,"id":3006,"mutability":"mutable","name":"ptr","nameLocation":"667:3:23","nodeType":"VariableDeclaration","scope":3027,"src":"659:11:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3005,"name":"uint256","nodeType":"ElementaryTypeName","src":"659:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3007,"nodeType":"VariableDeclarationStatement","src":"659:11:23"},{"AST":{"nativeSrc":"740:67:23","nodeType":"YulBlock","src":"740:67:23","statements":[{"nativeSrc":"758:35:23","nodeType":"YulAssignment","src":"758:35:23","value":{"arguments":[{"name":"buffer","nativeSrc":"769:6:23","nodeType":"YulIdentifier","src":"769:6:23"},{"arguments":[{"kind":"number","nativeSrc":"781:2:23","nodeType":"YulLiteral","src":"781:2:23","type":"","value":"32"},{"name":"length","nativeSrc":"785:6:23","nodeType":"YulIdentifier","src":"785:6:23"}],"functionName":{"name":"add","nativeSrc":"777:3:23","nodeType":"YulIdentifier","src":"777:3:23"},"nativeSrc":"777:15:23","nodeType":"YulFunctionCall","src":"777:15:23"}],"functionName":{"name":"add","nativeSrc":"765:3:23","nodeType":"YulIdentifier","src":"765:3:23"},"nativeSrc":"765:28:23","nodeType":"YulFunctionCall","src":"765:28:23"},"variableNames":[{"name":"ptr","nativeSrc":"758:3:23","nodeType":"YulIdentifier","src":"758:3:23"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":2999,"isOffset":false,"isSlot":false,"src":"769:6:23","valueSize":1},{"declaration":2990,"isOffset":false,"isSlot":false,"src":"785:6:23","valueSize":1},{"declaration":3006,"isOffset":false,"isSlot":false,"src":"758:3:23","valueSize":1}],"id":3008,"nodeType":"InlineAssembly","src":"731:76:23"},{"body":{"id":3023,"nodeType":"Block","src":"833:267:23","statements":[{"expression":{"id":3011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"851:5:23","subExpression":{"id":3010,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"851:3:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3012,"nodeType":"ExpressionStatement","src":"851:5:23"},{"AST":{"nativeSrc":"934:84:23","nodeType":"YulBlock","src":"934:84:23","statements":[{"expression":{"arguments":[{"name":"ptr","nativeSrc":"964:3:23","nodeType":"YulIdentifier","src":"964:3:23"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"978:5:23","nodeType":"YulIdentifier","src":"978:5:23"},{"kind":"number","nativeSrc":"985:2:23","nodeType":"YulLiteral","src":"985:2:23","type":"","value":"10"}],"functionName":{"name":"mod","nativeSrc":"974:3:23","nodeType":"YulIdentifier","src":"974:3:23"},"nativeSrc":"974:14:23","nodeType":"YulFunctionCall","src":"974:14:23"},{"name":"_SYMBOLS","nativeSrc":"990:8:23","nodeType":"YulIdentifier","src":"990:8:23"}],"functionName":{"name":"byte","nativeSrc":"969:4:23","nodeType":"YulIdentifier","src":"969:4:23"},"nativeSrc":"969:30:23","nodeType":"YulFunctionCall","src":"969:30:23"}],"functionName":{"name":"mstore8","nativeSrc":"956:7:23","nodeType":"YulIdentifier","src":"956:7:23"},"nativeSrc":"956:44:23","nodeType":"YulFunctionCall","src":"956:44:23"},"nativeSrc":"956:44:23","nodeType":"YulExpressionStatement","src":"956:44:23"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":2978,"isOffset":false,"isSlot":false,"src":"990:8:23","valueSize":1},{"declaration":3006,"isOffset":false,"isSlot":false,"src":"964:3:23","valueSize":1},{"declaration":2984,"isOffset":false,"isSlot":false,"src":"978:5:23","valueSize":1}],"id":3013,"nodeType":"InlineAssembly","src":"925:93:23"},{"expression":{"id":3016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3014,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2984,"src":"1035:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":3015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1044:2:23","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"1035:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3017,"nodeType":"ExpressionStatement","src":"1035:11:23"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3018,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2984,"src":"1068:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1077:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1068:10:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3022,"nodeType":"IfStatement","src":"1064:21:23","trueBody":{"id":3021,"nodeType":"Break","src":"1080:5:23"}}]},"condition":{"hexValue":"74727565","id":3009,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"827:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":3024,"nodeType":"WhileStatement","src":"820:280:23"},{"expression":{"id":3025,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2999,"src":"1120:6:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":2988,"id":3026,"nodeType":"Return","src":"1113:13:23"}]}]},"documentation":{"id":2982,"nodeType":"StructuredDocumentation","src":"352:90:23","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"id":3029,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"456:8:23","nodeType":"FunctionDefinition","parameters":{"id":2985,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2984,"mutability":"mutable","name":"value","nameLocation":"473:5:23","nodeType":"VariableDeclaration","scope":3029,"src":"465:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2983,"name":"uint256","nodeType":"ElementaryTypeName","src":"465:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"464:15:23"},"returnParameters":{"id":2988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2987,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3029,"src":"503:13:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2986,"name":"string","nodeType":"ElementaryTypeName","src":"503:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"502:15:23"},"scope":3199,"src":"447:696:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3056,"nodeType":"Block","src":"1313:103:23","statements":[{"expression":{"arguments":[{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3041,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3032,"src":"1354:5:23","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":3042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1362:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1354:9:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":3045,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1372:2:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":3046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1354:20:23","trueExpression":{"hexValue":"2d","id":3044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1366:3:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":3050,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3032,"src":"1400:5:23","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":3048,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4740,"src":"1385:10:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$4740_$","typeString":"type(library SignedMath)"}},"id":3049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1396:3:23","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":4739,"src":"1385:14:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":3051,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1385:21:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3047,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[3029,3057],"referencedDeclaration":3029,"src":"1376:8:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":3052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1376:31:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":3039,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1337:3:23","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3040,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1341:12:23","memberName":"encodePacked","nodeType":"MemberAccess","src":"1337:16:23","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1337:71:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1330:6:23","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":3037,"name":"string","nodeType":"ElementaryTypeName","src":"1330:6:23","typeDescriptions":{}}},"id":3054,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1330:79:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":3036,"id":3055,"nodeType":"Return","src":"1323:86:23"}]},"documentation":{"id":3030,"nodeType":"StructuredDocumentation","src":"1149:89:23","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"id":3057,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"1252:8:23","nodeType":"FunctionDefinition","parameters":{"id":3033,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3032,"mutability":"mutable","name":"value","nameLocation":"1268:5:23","nodeType":"VariableDeclaration","scope":3057,"src":"1261:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3031,"name":"int256","nodeType":"ElementaryTypeName","src":"1261:6:23","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1260:14:23"},"returnParameters":{"id":3036,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3035,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3057,"src":"1298:13:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3034,"name":"string","nodeType":"ElementaryTypeName","src":"1298:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1297:15:23"},"scope":3199,"src":"1243:173:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3076,"nodeType":"Block","src":"1595:100:23","statements":[{"id":3075,"nodeType":"UncheckedBlock","src":"1605:84:23","statements":[{"expression":{"arguments":[{"id":3066,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3060,"src":"1648:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3069,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3060,"src":"1667:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3067,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4635,"src":"1655:4:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$4635_$","typeString":"type(library Math)"}},"id":3068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1660:6:23","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":4595,"src":"1655:11:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":3070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1655:18:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":3071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1676:1:23","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1655:22:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3065,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[3077,3153,3173],"referencedDeclaration":3153,"src":"1636:11:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":3073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1636:42:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":3064,"id":3074,"nodeType":"Return","src":"1629:49:23"}]}]},"documentation":{"id":3058,"nodeType":"StructuredDocumentation","src":"1422:94:23","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"id":3077,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"1530:11:23","nodeType":"FunctionDefinition","parameters":{"id":3061,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3060,"mutability":"mutable","name":"value","nameLocation":"1550:5:23","nodeType":"VariableDeclaration","scope":3077,"src":"1542:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3059,"name":"uint256","nodeType":"ElementaryTypeName","src":"1542:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1541:15:23"},"returnParameters":{"id":3064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3063,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3077,"src":"1580:13:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3062,"name":"string","nodeType":"ElementaryTypeName","src":"1580:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1579:15:23"},"scope":3199,"src":"1521:174:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3152,"nodeType":"Block","src":"1908:347:23","statements":[{"assignments":[3088],"declarations":[{"constant":false,"id":3088,"mutability":"mutable","name":"buffer","nameLocation":"1931:6:23","nodeType":"VariableDeclaration","scope":3152,"src":"1918:19:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3087,"name":"bytes","nodeType":"ElementaryTypeName","src":"1918:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":3097,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3091,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1950:1:23","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3092,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3082,"src":"1954:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1950:10:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":3094,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1963:1:23","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1950:14:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3090,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1940:9:23","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":3089,"name":"bytes","nodeType":"ElementaryTypeName","src":"1944:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":3096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1940:25:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"1918:47:23"},{"expression":{"id":3102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3098,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3088,"src":"1975:6:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3100,"indexExpression":{"hexValue":"30","id":3099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1982:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1975:9:23","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":3101,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1987:3:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"1975:15:23","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":3103,"nodeType":"ExpressionStatement","src":"1975:15:23"},{"expression":{"id":3108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3104,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3088,"src":"2000:6:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3106,"indexExpression":{"hexValue":"31","id":3105,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2007:1:23","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2000:9:23","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":3107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2012:3:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"2000:15:23","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":3109,"nodeType":"ExpressionStatement","src":"2000:15:23"},{"body":{"id":3138,"nodeType":"Block","src":"2070:83:23","statements":[{"expression":{"id":3132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3124,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3088,"src":"2084:6:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3126,"indexExpression":{"id":3125,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3111,"src":"2091:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2084:9:23","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":3127,"name":"_SYMBOLS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2978,"src":"2096:8:23","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":3131,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3128,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3080,"src":"2105:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":3129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2113:3:23","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"2105:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2096:21:23","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"2084:33:23","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":3133,"nodeType":"ExpressionStatement","src":"2084:33:23"},{"expression":{"id":3136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3134,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3080,"src":"2131:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":3135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2141:1:23","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"2131:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3137,"nodeType":"ExpressionStatement","src":"2131:11:23"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3118,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3111,"src":"2058:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":3119,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2062:1:23","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2058:5:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3139,"initializationExpression":{"assignments":[3111],"declarations":[{"constant":false,"id":3111,"mutability":"mutable","name":"i","nameLocation":"2038:1:23","nodeType":"VariableDeclaration","scope":3139,"src":"2030:9:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3110,"name":"uint256","nodeType":"ElementaryTypeName","src":"2030:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3117,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3112,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2042:1:23","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3113,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3082,"src":"2046:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2042:10:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":3115,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2055:1:23","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2042:14:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2030:26:23"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":3122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"2065:3:23","subExpression":{"id":3121,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3111,"src":"2067:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3123,"nodeType":"ExpressionStatement","src":"2065:3:23"},"nodeType":"ForStatement","src":"2025:128:23"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3141,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3080,"src":"2170:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2179:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2170:10:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"537472696e67733a20686578206c656e67746820696e73756666696369656e74","id":3144,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2182:34:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","typeString":"literal_string \"Strings: hex length insufficient\""},"value":"Strings: hex length insufficient"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","typeString":"literal_string \"Strings: hex length insufficient\""}],"id":3140,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2162:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2162:55:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3146,"nodeType":"ExpressionStatement","src":"2162:55:23"},{"expression":{"arguments":[{"id":3149,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3088,"src":"2241:6:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3148,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2234:6:23","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":3147,"name":"string","nodeType":"ElementaryTypeName","src":"2234:6:23","typeDescriptions":{}}},"id":3150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2234:14:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":3086,"id":3151,"nodeType":"Return","src":"2227:21:23"}]},"documentation":{"id":3078,"nodeType":"StructuredDocumentation","src":"1701:112:23","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"id":3153,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"1827:11:23","nodeType":"FunctionDefinition","parameters":{"id":3083,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3080,"mutability":"mutable","name":"value","nameLocation":"1847:5:23","nodeType":"VariableDeclaration","scope":3153,"src":"1839:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3079,"name":"uint256","nodeType":"ElementaryTypeName","src":"1839:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3082,"mutability":"mutable","name":"length","nameLocation":"1862:6:23","nodeType":"VariableDeclaration","scope":3153,"src":"1854:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3081,"name":"uint256","nodeType":"ElementaryTypeName","src":"1854:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1838:31:23"},"returnParameters":{"id":3086,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3085,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3153,"src":"1893:13:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3084,"name":"string","nodeType":"ElementaryTypeName","src":"1893:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1892:15:23"},"scope":3199,"src":"1818:437:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3172,"nodeType":"Block","src":"2480:76:23","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":3166,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3156,"src":"2525:4:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3165,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2517:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":3164,"name":"uint160","nodeType":"ElementaryTypeName","src":"2517:7:23","typeDescriptions":{}}},"id":3167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2517:13:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":3163,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2509:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3162,"name":"uint256","nodeType":"ElementaryTypeName","src":"2509:7:23","typeDescriptions":{}}},"id":3168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2509:22:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3169,"name":"_ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2981,"src":"2533:15:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":3161,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[3077,3153,3173],"referencedDeclaration":3153,"src":"2497:11:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":3170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2497:52:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":3160,"id":3171,"nodeType":"Return","src":"2490:59:23"}]},"documentation":{"id":3154,"nodeType":"StructuredDocumentation","src":"2261:141:23","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation."},"id":3173,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"2416:11:23","nodeType":"FunctionDefinition","parameters":{"id":3157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3156,"mutability":"mutable","name":"addr","nameLocation":"2436:4:23","nodeType":"VariableDeclaration","scope":3173,"src":"2428:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3155,"name":"address","nodeType":"ElementaryTypeName","src":"2428:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2427:14:23"},"returnParameters":{"id":3160,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3159,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3173,"src":"2465:13:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3158,"name":"string","nodeType":"ElementaryTypeName","src":"2465:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2464:15:23"},"scope":3199,"src":"2407:149:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3197,"nodeType":"Block","src":"2711:66:23","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":3186,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3176,"src":"2744:1:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":3185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2738:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":3184,"name":"bytes","nodeType":"ElementaryTypeName","src":"2738:5:23","typeDescriptions":{}}},"id":3187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2738:8:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3183,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2728:9:23","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2728:19:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":3192,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3178,"src":"2767:1:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":3191,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2761:5:23","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":3190,"name":"bytes","nodeType":"ElementaryTypeName","src":"2761:5:23","typeDescriptions":{}}},"id":3193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2761:8:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3189,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2751:9:23","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2751:19:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2728:42:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3182,"id":3196,"nodeType":"Return","src":"2721:49:23"}]},"documentation":{"id":3174,"nodeType":"StructuredDocumentation","src":"2562:66:23","text":" @dev Returns true if the two strings are equal."},"id":3198,"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"2642:5:23","nodeType":"FunctionDefinition","parameters":{"id":3179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3176,"mutability":"mutable","name":"a","nameLocation":"2662:1:23","nodeType":"VariableDeclaration","scope":3198,"src":"2648:15:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3175,"name":"string","nodeType":"ElementaryTypeName","src":"2648:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":3178,"mutability":"mutable","name":"b","nameLocation":"2679:1:23","nodeType":"VariableDeclaration","scope":3198,"src":"2665:15:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3177,"name":"string","nodeType":"ElementaryTypeName","src":"2665:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2647:34:23"},"returnParameters":{"id":3182,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3181,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3198,"src":"2705:4:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3180,"name":"bool","nodeType":"ElementaryTypeName","src":"2705:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2704:6:23"},"scope":3199,"src":"2633:144:23","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":3200,"src":"220:2559:23","usedErrors":[],"usedEvents":[]}],"src":"101:2679:23"},"id":23},"@openzeppelin/contracts/utils/cryptography/ECDSA.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/cryptography/ECDSA.sol","exportedSymbols":{"ECDSA":[3565],"Math":[4635],"SignedMath":[4740],"Strings":[3199]},"id":3566,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3201,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"112:23:24"},{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","file":"../Strings.sol","id":3202,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3566,"sourceUnit":3200,"src":"137:24:24","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ECDSA","contractDependencies":[],"contractKind":"library","documentation":{"id":3203,"nodeType":"StructuredDocumentation","src":"163:205:24","text":" @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n These functions can be used to verify that a message was signed by the holder\n of the private keys of a given address."},"fullyImplemented":true,"id":3565,"linearizedBaseContracts":[3565],"name":"ECDSA","nameLocation":"377:5:24","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ECDSA.RecoverError","id":3209,"members":[{"id":3204,"name":"NoError","nameLocation":"417:7:24","nodeType":"EnumValue","src":"417:7:24"},{"id":3205,"name":"InvalidSignature","nameLocation":"434:16:24","nodeType":"EnumValue","src":"434:16:24"},{"id":3206,"name":"InvalidSignatureLength","nameLocation":"460:22:24","nodeType":"EnumValue","src":"460:22:24"},{"id":3207,"name":"InvalidSignatureS","nameLocation":"492:17:24","nodeType":"EnumValue","src":"492:17:24"},{"id":3208,"name":"InvalidSignatureV","nameLocation":"519:17:24","nodeType":"EnumValue","src":"519:17:24"}],"name":"RecoverError","nameLocation":"394:12:24","nodeType":"EnumDefinition","src":"389:175:24"},{"body":{"id":3252,"nodeType":"Block","src":"624:457:24","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$3209","typeString":"enum ECDSA.RecoverError"},"id":3218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3215,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3212,"src":"638:5:24","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$3209","typeString":"enum ECDSA.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":3216,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3209,"src":"647:12:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$3209_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":3217,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"660:7:24","memberName":"NoError","nodeType":"MemberAccess","referencedDeclaration":3204,"src":"647:20:24","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$3209","typeString":"enum ECDSA.RecoverError"}},"src":"638:29:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$3209","typeString":"enum ECDSA.RecoverError"},"id":3224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3221,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3212,"src":"734:5:24","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$3209","typeString":"enum ECDSA.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":3222,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3209,"src":"743:12:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$3209_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":3223,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"756:16:24","memberName":"InvalidSignature","nodeType":"MemberAccess","referencedDeclaration":3205,"src":"743:29:24","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$3209","typeString":"enum ECDSA.RecoverError"}},"src":"734:38:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$3209","typeString":"enum ECDSA.RecoverError"},"id":3233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3230,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3212,"src":"843:5:24","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$3209","typeString":"enum ECDSA.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":3231,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3209,"src":"852:12:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$3209_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":3232,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"865:22:24","memberName":"InvalidSignatureLength","nodeType":"MemberAccess","referencedDeclaration":3206,"src":"852:35:24","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$3209","typeString":"enum ECDSA.RecoverError"}},"src":"843:44:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$3209","typeString":"enum ECDSA.RecoverError"},"id":3242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3239,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3212,"src":"965:5:24","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$3209","typeString":"enum ECDSA.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":3240,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3209,"src":"974:12:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$3209_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":3241,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"987:17:24","memberName":"InvalidSignatureS","nodeType":"MemberAccess","referencedDeclaration":3207,"src":"974:30:24","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$3209","typeString":"enum ECDSA.RecoverError"}},"src":"965:39:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3248,"nodeType":"IfStatement","src":"961:114:24","trueBody":{"id":3247,"nodeType":"Block","src":"1006:69:24","statements":[{"expression":{"arguments":[{"hexValue":"45434453413a20696e76616c6964207369676e6174757265202773272076616c7565","id":3244,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1027:36:24","typeDescriptions":{"typeIdentifier":"t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd","typeString":"literal_string \"ECDSA: invalid signature 's' value\""},"value":"ECDSA: invalid signature 's' value"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd","typeString":"literal_string \"ECDSA: invalid signature 's' value\""}],"id":3243,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"1020:6:24","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":3245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1020:44:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3246,"nodeType":"ExpressionStatement","src":"1020:44:24"}]}},"id":3249,"nodeType":"IfStatement","src":"839:236:24","trueBody":{"id":3238,"nodeType":"Block","src":"889:66:24","statements":[{"expression":{"arguments":[{"hexValue":"45434453413a20696e76616c6964207369676e6174757265206c656e677468","id":3235,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"910:33:24","typeDescriptions":{"typeIdentifier":"t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77","typeString":"literal_string \"ECDSA: invalid signature length\""},"value":"ECDSA: invalid signature length"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77","typeString":"literal_string \"ECDSA: invalid signature length\""}],"id":3234,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"903:6:24","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":3236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"903:41:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3237,"nodeType":"ExpressionStatement","src":"903:41:24"}]}},"id":3250,"nodeType":"IfStatement","src":"730:345:24","trueBody":{"id":3229,"nodeType":"Block","src":"774:59:24","statements":[{"expression":{"arguments":[{"hexValue":"45434453413a20696e76616c6964207369676e6174757265","id":3226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"795:26:24","typeDescriptions":{"typeIdentifier":"t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be","typeString":"literal_string \"ECDSA: invalid signature\""},"value":"ECDSA: invalid signature"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be","typeString":"literal_string \"ECDSA: invalid signature\""}],"id":3225,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"788:6:24","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":3227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"788:34:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3228,"nodeType":"ExpressionStatement","src":"788:34:24"}]}},"id":3251,"nodeType":"IfStatement","src":"634:441:24","trueBody":{"id":3220,"nodeType":"Block","src":"669:55:24","statements":[{"functionReturnParameters":3214,"id":3219,"nodeType":"Return","src":"683:7:24"}]}}]},"id":3253,"implemented":true,"kind":"function","modifiers":[],"name":"_throwError","nameLocation":"579:11:24","nodeType":"FunctionDefinition","parameters":{"id":3213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3212,"mutability":"mutable","name":"error","nameLocation":"604:5:24","nodeType":"VariableDeclaration","scope":3253,"src":"591:18:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$3209","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":3211,"nodeType":"UserDefinedTypeName","pathNode":{"id":3210,"name":"RecoverError","nameLocations":["591:12:24"],"nodeType":"IdentifierPath","referencedDeclaration":3209,"src":"591:12:24"},"referencedDeclaration":3209,"src":"591:12:24","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$3209","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"}],"src":"590:20:24"},"returnParameters":{"id":3214,"nodeType":"ParameterList","parameters":[],"src":"624:0:24"},"scope":3565,"src":"570:511:24","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":3298,"nodeType":"Block","src":"2249:626:24","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3266,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3258,"src":"2263:9:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2273:6:24","memberName":"length","nodeType":"MemberAccess","src":"2263:16:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"3635","id":3268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2283:2:24","typeDescriptions":{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},"value":"65"},"src":"2263:22:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3296,"nodeType":"Block","src":"2788:81:24","statements":[{"expression":{"components":[{"arguments":[{"hexValue":"30","id":3290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2818:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3289,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2810:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3288,"name":"address","nodeType":"ElementaryTypeName","src":"2810:7:24","typeDescriptions":{}}},"id":3291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2810:10:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3292,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3209,"src":"2822:12:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$3209_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":3293,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2835:22:24","memberName":"InvalidSignatureLength","nodeType":"MemberAccess","referencedDeclaration":3206,"src":"2822:35:24","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$3209","typeString":"enum ECDSA.RecoverError"}}],"id":3294,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2809:49:24","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$3209_$","typeString":"tuple(address,enum ECDSA.RecoverError)"}},"functionReturnParameters":3265,"id":3295,"nodeType":"Return","src":"2802:56:24"}]},"id":3297,"nodeType":"IfStatement","src":"2259:610:24","trueBody":{"id":3287,"nodeType":"Block","src":"2287:495:24","statements":[{"assignments":[3271],"declarations":[{"constant":false,"id":3271,"mutability":"mutable","name":"r","nameLocation":"2309:1:24","nodeType":"VariableDeclaration","scope":3287,"src":"2301:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3270,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2301:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3272,"nodeType":"VariableDeclarationStatement","src":"2301:9:24"},{"assignments":[3274],"declarations":[{"constant":false,"id":3274,"mutability":"mutable","name":"s","nameLocation":"2332:1:24","nodeType":"VariableDeclaration","scope":3287,"src":"2324:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3273,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2324:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3275,"nodeType":"VariableDeclarationStatement","src":"2324:9:24"},{"assignments":[3277],"declarations":[{"constant":false,"id":3277,"mutability":"mutable","name":"v","nameLocation":"2353:1:24","nodeType":"VariableDeclaration","scope":3287,"src":"2347:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3276,"name":"uint8","nodeType":"ElementaryTypeName","src":"2347:5:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":3278,"nodeType":"VariableDeclarationStatement","src":"2347:7:24"},{"AST":{"nativeSrc":"2555:171:24","nodeType":"YulBlock","src":"2555:171:24","statements":[{"nativeSrc":"2573:32:24","nodeType":"YulAssignment","src":"2573:32:24","value":{"arguments":[{"arguments":[{"name":"signature","nativeSrc":"2588:9:24","nodeType":"YulIdentifier","src":"2588:9:24"},{"kind":"number","nativeSrc":"2599:4:24","nodeType":"YulLiteral","src":"2599:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2584:3:24","nodeType":"YulIdentifier","src":"2584:3:24"},"nativeSrc":"2584:20:24","nodeType":"YulFunctionCall","src":"2584:20:24"}],"functionName":{"name":"mload","nativeSrc":"2578:5:24","nodeType":"YulIdentifier","src":"2578:5:24"},"nativeSrc":"2578:27:24","nodeType":"YulFunctionCall","src":"2578:27:24"},"variableNames":[{"name":"r","nativeSrc":"2573:1:24","nodeType":"YulIdentifier","src":"2573:1:24"}]},{"nativeSrc":"2622:32:24","nodeType":"YulAssignment","src":"2622:32:24","value":{"arguments":[{"arguments":[{"name":"signature","nativeSrc":"2637:9:24","nodeType":"YulIdentifier","src":"2637:9:24"},{"kind":"number","nativeSrc":"2648:4:24","nodeType":"YulLiteral","src":"2648:4:24","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"2633:3:24","nodeType":"YulIdentifier","src":"2633:3:24"},"nativeSrc":"2633:20:24","nodeType":"YulFunctionCall","src":"2633:20:24"}],"functionName":{"name":"mload","nativeSrc":"2627:5:24","nodeType":"YulIdentifier","src":"2627:5:24"},"nativeSrc":"2627:27:24","nodeType":"YulFunctionCall","src":"2627:27:24"},"variableNames":[{"name":"s","nativeSrc":"2622:1:24","nodeType":"YulIdentifier","src":"2622:1:24"}]},{"nativeSrc":"2671:41:24","nodeType":"YulAssignment","src":"2671:41:24","value":{"arguments":[{"kind":"number","nativeSrc":"2681:1:24","nodeType":"YulLiteral","src":"2681:1:24","type":"","value":"0"},{"arguments":[{"arguments":[{"name":"signature","nativeSrc":"2694:9:24","nodeType":"YulIdentifier","src":"2694:9:24"},{"kind":"number","nativeSrc":"2705:4:24","nodeType":"YulLiteral","src":"2705:4:24","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"2690:3:24","nodeType":"YulIdentifier","src":"2690:3:24"},"nativeSrc":"2690:20:24","nodeType":"YulFunctionCall","src":"2690:20:24"}],"functionName":{"name":"mload","nativeSrc":"2684:5:24","nodeType":"YulIdentifier","src":"2684:5:24"},"nativeSrc":"2684:27:24","nodeType":"YulFunctionCall","src":"2684:27:24"}],"functionName":{"name":"byte","nativeSrc":"2676:4:24","nodeType":"YulIdentifier","src":"2676:4:24"},"nativeSrc":"2676:36:24","nodeType":"YulFunctionCall","src":"2676:36:24"},"variableNames":[{"name":"v","nativeSrc":"2671:1:24","nodeType":"YulIdentifier","src":"2671:1:24"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":3271,"isOffset":false,"isSlot":false,"src":"2573:1:24","valueSize":1},{"declaration":3274,"isOffset":false,"isSlot":false,"src":"2622:1:24","valueSize":1},{"declaration":3258,"isOffset":false,"isSlot":false,"src":"2588:9:24","valueSize":1},{"declaration":3258,"isOffset":false,"isSlot":false,"src":"2637:9:24","valueSize":1},{"declaration":3258,"isOffset":false,"isSlot":false,"src":"2694:9:24","valueSize":1},{"declaration":3277,"isOffset":false,"isSlot":false,"src":"2671:1:24","valueSize":1}],"id":3279,"nodeType":"InlineAssembly","src":"2546:180:24"},{"expression":{"arguments":[{"id":3281,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3256,"src":"2757:4:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3282,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3277,"src":"2763:1:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":3283,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3271,"src":"2766:1:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3284,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3274,"src":"2769:1:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3280,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[3299,3373,3467],"referencedDeclaration":3467,"src":"2746:10:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$3209_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError)"}},"id":3285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2746:25:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$3209_$","typeString":"tuple(address,enum ECDSA.RecoverError)"}},"functionReturnParameters":3265,"id":3286,"nodeType":"Return","src":"2739:32:24"}]}}]},"documentation":{"id":3254,"nodeType":"StructuredDocumentation","src":"1087:1053:24","text":" @dev Returns the address that signed a hashed message (`hash`) with\n `signature` or error string. This address can then be used for verification purposes.\n The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n this function rejects them by requiring the `s` value to be in the lower\n half order, and the `v` value to be either 27 or 28.\n IMPORTANT: `hash` _must_ be the result of a hash operation for the\n verification to be secure: it is possible to craft signatures that\n recover to arbitrary addresses for non-hashed data. A safe way to ensure\n this is by receiving a hash of the original message (which may otherwise\n be too long), and then calling {toEthSignedMessageHash} on it.\n Documentation for signature generation:\n - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\n _Available since v4.3._"},"id":3299,"implemented":true,"kind":"function","modifiers":[],"name":"tryRecover","nameLocation":"2154:10:24","nodeType":"FunctionDefinition","parameters":{"id":3259,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3256,"mutability":"mutable","name":"hash","nameLocation":"2173:4:24","nodeType":"VariableDeclaration","scope":3299,"src":"2165:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3255,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2165:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3258,"mutability":"mutable","name":"signature","nameLocation":"2192:9:24","nodeType":"VariableDeclaration","scope":3299,"src":"2179:22:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3257,"name":"bytes","nodeType":"ElementaryTypeName","src":"2179:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2164:38:24"},"returnParameters":{"id":3265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3261,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3299,"src":"2226:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3260,"name":"address","nodeType":"ElementaryTypeName","src":"2226:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3264,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3299,"src":"2235:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$3209","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":3263,"nodeType":"UserDefinedTypeName","pathNode":{"id":3262,"name":"RecoverError","nameLocations":["2235:12:24"],"nodeType":"IdentifierPath","referencedDeclaration":3209,"src":"2235:12:24"},"referencedDeclaration":3209,"src":"2235:12:24","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$3209","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"}],"src":"2225:23:24"},"scope":3565,"src":"2145:730:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3325,"nodeType":"Block","src":"3748:140:24","statements":[{"assignments":[3310,3313],"declarations":[{"constant":false,"id":3310,"mutability":"mutable","name":"recovered","nameLocation":"3767:9:24","nodeType":"VariableDeclaration","scope":3325,"src":"3759:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3309,"name":"address","nodeType":"ElementaryTypeName","src":"3759:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3313,"mutability":"mutable","name":"error","nameLocation":"3791:5:24","nodeType":"VariableDeclaration","scope":3325,"src":"3778:18:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$3209","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":3312,"nodeType":"UserDefinedTypeName","pathNode":{"id":3311,"name":"RecoverError","nameLocations":["3778:12:24"],"nodeType":"IdentifierPath","referencedDeclaration":3209,"src":"3778:12:24"},"referencedDeclaration":3209,"src":"3778:12:24","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$3209","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"}],"id":3318,"initialValue":{"arguments":[{"id":3315,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3302,"src":"3811:4:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3316,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3304,"src":"3817:9:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3314,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[3299,3373,3467],"referencedDeclaration":3299,"src":"3800:10:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$_t_enum$_RecoverError_$3209_$","typeString":"function (bytes32,bytes memory) pure returns (address,enum ECDSA.RecoverError)"}},"id":3317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3800:27:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$3209_$","typeString":"tuple(address,enum ECDSA.RecoverError)"}},"nodeType":"VariableDeclarationStatement","src":"3758:69:24"},{"expression":{"arguments":[{"id":3320,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3313,"src":"3849:5:24","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$3209","typeString":"enum ECDSA.RecoverError"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_RecoverError_$3209","typeString":"enum ECDSA.RecoverError"}],"id":3319,"name":"_throwError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3253,"src":"3837:11:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_RecoverError_$3209_$returns$__$","typeString":"function (enum ECDSA.RecoverError) pure"}},"id":3321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3837:18:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3322,"nodeType":"ExpressionStatement","src":"3837:18:24"},{"expression":{"id":3323,"name":"recovered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3310,"src":"3872:9:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":3308,"id":3324,"nodeType":"Return","src":"3865:16:24"}]},"documentation":{"id":3300,"nodeType":"StructuredDocumentation","src":"2881:775:24","text":" @dev Returns the address that signed a hashed message (`hash`) with\n `signature`. This address can then be used for verification purposes.\n The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n this function rejects them by requiring the `s` value to be in the lower\n half order, and the `v` value to be either 27 or 28.\n IMPORTANT: `hash` _must_ be the result of a hash operation for the\n verification to be secure: it is possible to craft signatures that\n recover to arbitrary addresses for non-hashed data. A safe way to ensure\n this is by receiving a hash of the original message (which may otherwise\n be too long), and then calling {toEthSignedMessageHash} on it."},"id":3326,"implemented":true,"kind":"function","modifiers":[],"name":"recover","nameLocation":"3670:7:24","nodeType":"FunctionDefinition","parameters":{"id":3305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3302,"mutability":"mutable","name":"hash","nameLocation":"3686:4:24","nodeType":"VariableDeclaration","scope":3326,"src":"3678:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3301,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3678:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3304,"mutability":"mutable","name":"signature","nameLocation":"3705:9:24","nodeType":"VariableDeclaration","scope":3326,"src":"3692:22:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3303,"name":"bytes","nodeType":"ElementaryTypeName","src":"3692:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3677:38:24"},"returnParameters":{"id":3308,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3307,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3326,"src":"3739:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3306,"name":"address","nodeType":"ElementaryTypeName","src":"3739:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3738:9:24"},"scope":3565,"src":"3661:227:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3372,"nodeType":"Block","src":"4245:203:24","statements":[{"assignments":[3342],"declarations":[{"constant":false,"id":3342,"mutability":"mutable","name":"s","nameLocation":"4263:1:24","nodeType":"VariableDeclaration","scope":3372,"src":"4255:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3341,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4255:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3349,"initialValue":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3343,"name":"vs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3333,"src":"4267:2:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"arguments":[{"hexValue":"307837666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666","id":3346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4280:66:24","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1","typeString":"int_const 5789...(69 digits omitted)...9967"},"value":"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1","typeString":"int_const 5789...(69 digits omitted)...9967"}],"id":3345,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4272:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3344,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4272:7:24","typeDescriptions":{}}},"id":3347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4272:75:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4267:80:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"4255:92:24"},{"assignments":[3351],"declarations":[{"constant":false,"id":3351,"mutability":"mutable","name":"v","nameLocation":"4363:1:24","nodeType":"VariableDeclaration","scope":3372,"src":"4357:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3350,"name":"uint8","nodeType":"ElementaryTypeName","src":"4357:5:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":3364,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3356,"name":"vs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3333,"src":"4382:2:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3355,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4374:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3354,"name":"uint256","nodeType":"ElementaryTypeName","src":"4374:7:24","typeDescriptions":{}}},"id":3357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4374:11:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":3358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4389:3:24","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"4374:18:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3360,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4373:20:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3237","id":3361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4396:2:24","typeDescriptions":{"typeIdentifier":"t_rational_27_by_1","typeString":"int_const 27"},"value":"27"},"src":"4373:25:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3353,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4367:5:24","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":3352,"name":"uint8","nodeType":"ElementaryTypeName","src":"4367:5:24","typeDescriptions":{}}},"id":3363,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4367:32:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"4357:42:24"},{"expression":{"arguments":[{"id":3366,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3329,"src":"4427:4:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3367,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3351,"src":"4433:1:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":3368,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3331,"src":"4436:1:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3369,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3342,"src":"4439:1:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3365,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[3299,3373,3467],"referencedDeclaration":3467,"src":"4416:10:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$3209_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError)"}},"id":3370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4416:25:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$3209_$","typeString":"tuple(address,enum ECDSA.RecoverError)"}},"functionReturnParameters":3340,"id":3371,"nodeType":"Return","src":"4409:32:24"}]},"documentation":{"id":3327,"nodeType":"StructuredDocumentation","src":"3894:243:24","text":" @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\n _Available since v4.3._"},"id":3373,"implemented":true,"kind":"function","modifiers":[],"name":"tryRecover","nameLocation":"4151:10:24","nodeType":"FunctionDefinition","parameters":{"id":3334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3329,"mutability":"mutable","name":"hash","nameLocation":"4170:4:24","nodeType":"VariableDeclaration","scope":3373,"src":"4162:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3328,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4162:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3331,"mutability":"mutable","name":"r","nameLocation":"4184:1:24","nodeType":"VariableDeclaration","scope":3373,"src":"4176:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3330,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4176:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3333,"mutability":"mutable","name":"vs","nameLocation":"4195:2:24","nodeType":"VariableDeclaration","scope":3373,"src":"4187:10:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3332,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4187:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4161:37:24"},"returnParameters":{"id":3340,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3336,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3373,"src":"4222:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3335,"name":"address","nodeType":"ElementaryTypeName","src":"4222:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3339,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3373,"src":"4231:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$3209","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":3338,"nodeType":"UserDefinedTypeName","pathNode":{"id":3337,"name":"RecoverError","nameLocations":["4231:12:24"],"nodeType":"IdentifierPath","referencedDeclaration":3209,"src":"4231:12:24"},"referencedDeclaration":3209,"src":"4231:12:24","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$3209","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"}],"src":"4221:23:24"},"scope":3565,"src":"4142:306:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3402,"nodeType":"Block","src":"4699:136:24","statements":[{"assignments":[3386,3389],"declarations":[{"constant":false,"id":3386,"mutability":"mutable","name":"recovered","nameLocation":"4718:9:24","nodeType":"VariableDeclaration","scope":3402,"src":"4710:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3385,"name":"address","nodeType":"ElementaryTypeName","src":"4710:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3389,"mutability":"mutable","name":"error","nameLocation":"4742:5:24","nodeType":"VariableDeclaration","scope":3402,"src":"4729:18:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$3209","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":3388,"nodeType":"UserDefinedTypeName","pathNode":{"id":3387,"name":"RecoverError","nameLocations":["4729:12:24"],"nodeType":"IdentifierPath","referencedDeclaration":3209,"src":"4729:12:24"},"referencedDeclaration":3209,"src":"4729:12:24","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$3209","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"}],"id":3395,"initialValue":{"arguments":[{"id":3391,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3376,"src":"4762:4:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3392,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3378,"src":"4768:1:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3393,"name":"vs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3380,"src":"4771:2:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3390,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[3299,3373,3467],"referencedDeclaration":3373,"src":"4751:10:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$3209_$","typeString":"function (bytes32,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError)"}},"id":3394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4751:23:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$3209_$","typeString":"tuple(address,enum ECDSA.RecoverError)"}},"nodeType":"VariableDeclarationStatement","src":"4709:65:24"},{"expression":{"arguments":[{"id":3397,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3389,"src":"4796:5:24","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$3209","typeString":"enum ECDSA.RecoverError"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_RecoverError_$3209","typeString":"enum ECDSA.RecoverError"}],"id":3396,"name":"_throwError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3253,"src":"4784:11:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_RecoverError_$3209_$returns$__$","typeString":"function (enum ECDSA.RecoverError) pure"}},"id":3398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4784:18:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3399,"nodeType":"ExpressionStatement","src":"4784:18:24"},{"expression":{"id":3400,"name":"recovered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3386,"src":"4819:9:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":3384,"id":3401,"nodeType":"Return","src":"4812:16:24"}]},"documentation":{"id":3374,"nodeType":"StructuredDocumentation","src":"4454:154:24","text":" @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\n _Available since v4.2._"},"id":3403,"implemented":true,"kind":"function","modifiers":[],"name":"recover","nameLocation":"4622:7:24","nodeType":"FunctionDefinition","parameters":{"id":3381,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3376,"mutability":"mutable","name":"hash","nameLocation":"4638:4:24","nodeType":"VariableDeclaration","scope":3403,"src":"4630:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3375,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4630:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3378,"mutability":"mutable","name":"r","nameLocation":"4652:1:24","nodeType":"VariableDeclaration","scope":3403,"src":"4644:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3377,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4644:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3380,"mutability":"mutable","name":"vs","nameLocation":"4663:2:24","nodeType":"VariableDeclaration","scope":3403,"src":"4655:10:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3379,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4655:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4629:37:24"},"returnParameters":{"id":3384,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3383,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3403,"src":"4690:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3382,"name":"address","nodeType":"ElementaryTypeName","src":"4690:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4689:9:24"},"scope":3565,"src":"4613:222:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3466,"nodeType":"Block","src":"5120:1345:24","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3422,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3412,"src":"6016:1:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3421,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6008:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3420,"name":"uint256","nodeType":"ElementaryTypeName","src":"6008:7:24","typeDescriptions":{}}},"id":3423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6008:10:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307837464646464646464646464646464646464646464646464646464646464646463544353736453733353741343530314444464539324634363638314232304130","id":3424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6021:66:24","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926418782139537452191302581570759080747168_by_1","typeString":"int_const 5789...(69 digits omitted)...7168"},"value":"0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0"},"src":"6008:79:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3435,"nodeType":"IfStatement","src":"6004:161:24","trueBody":{"id":3434,"nodeType":"Block","src":"6089:76:24","statements":[{"expression":{"components":[{"arguments":[{"hexValue":"30","id":3428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6119:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3427,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6111:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3426,"name":"address","nodeType":"ElementaryTypeName","src":"6111:7:24","typeDescriptions":{}}},"id":3429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6111:10:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3430,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3209,"src":"6123:12:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$3209_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":3431,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6136:17:24","memberName":"InvalidSignatureS","nodeType":"MemberAccess","referencedDeclaration":3207,"src":"6123:30:24","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$3209","typeString":"enum ECDSA.RecoverError"}}],"id":3432,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6110:44:24","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$3209_$","typeString":"tuple(address,enum ECDSA.RecoverError)"}},"functionReturnParameters":3419,"id":3433,"nodeType":"Return","src":"6103:51:24"}]}},{"assignments":[3437],"declarations":[{"constant":false,"id":3437,"mutability":"mutable","name":"signer","nameLocation":"6267:6:24","nodeType":"VariableDeclaration","scope":3466,"src":"6259:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3436,"name":"address","nodeType":"ElementaryTypeName","src":"6259:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3444,"initialValue":{"arguments":[{"id":3439,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3406,"src":"6286:4:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3440,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3408,"src":"6292:1:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":3441,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3410,"src":"6295:1:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3442,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3412,"src":"6298:1:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3438,"name":"ecrecover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-6,"src":"6276:9:24","typeDescriptions":{"typeIdentifier":"t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":3443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6276:24:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6259:41:24"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3445,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3437,"src":"6314:6:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6332:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3447,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6324:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3446,"name":"address","nodeType":"ElementaryTypeName","src":"6324:7:24","typeDescriptions":{}}},"id":3449,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6324:10:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6314:20:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3460,"nodeType":"IfStatement","src":"6310:101:24","trueBody":{"id":3459,"nodeType":"Block","src":"6336:75:24","statements":[{"expression":{"components":[{"arguments":[{"hexValue":"30","id":3453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6366:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6358:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3451,"name":"address","nodeType":"ElementaryTypeName","src":"6358:7:24","typeDescriptions":{}}},"id":3454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6358:10:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3455,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3209,"src":"6370:12:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$3209_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":3456,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6383:16:24","memberName":"InvalidSignature","nodeType":"MemberAccess","referencedDeclaration":3205,"src":"6370:29:24","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$3209","typeString":"enum ECDSA.RecoverError"}}],"id":3457,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6357:43:24","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$3209_$","typeString":"tuple(address,enum ECDSA.RecoverError)"}},"functionReturnParameters":3419,"id":3458,"nodeType":"Return","src":"6350:50:24"}]}},{"expression":{"components":[{"id":3461,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3437,"src":"6429:6:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3462,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3209,"src":"6437:12:24","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$3209_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":3463,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6450:7:24","memberName":"NoError","nodeType":"MemberAccess","referencedDeclaration":3204,"src":"6437:20:24","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$3209","typeString":"enum ECDSA.RecoverError"}}],"id":3464,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6428:30:24","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$3209_$","typeString":"tuple(address,enum ECDSA.RecoverError)"}},"functionReturnParameters":3419,"id":3465,"nodeType":"Return","src":"6421:37:24"}]},"documentation":{"id":3404,"nodeType":"StructuredDocumentation","src":"4841:163:24","text":" @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n `r` and `s` signature fields separately.\n _Available since v4.3._"},"id":3467,"implemented":true,"kind":"function","modifiers":[],"name":"tryRecover","nameLocation":"5018:10:24","nodeType":"FunctionDefinition","parameters":{"id":3413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3406,"mutability":"mutable","name":"hash","nameLocation":"5037:4:24","nodeType":"VariableDeclaration","scope":3467,"src":"5029:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3405,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5029:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3408,"mutability":"mutable","name":"v","nameLocation":"5049:1:24","nodeType":"VariableDeclaration","scope":3467,"src":"5043:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3407,"name":"uint8","nodeType":"ElementaryTypeName","src":"5043:5:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":3410,"mutability":"mutable","name":"r","nameLocation":"5060:1:24","nodeType":"VariableDeclaration","scope":3467,"src":"5052:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3409,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5052:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3412,"mutability":"mutable","name":"s","nameLocation":"5071:1:24","nodeType":"VariableDeclaration","scope":3467,"src":"5063:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3411,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5063:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5028:45:24"},"returnParameters":{"id":3419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3415,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3467,"src":"5097:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3414,"name":"address","nodeType":"ElementaryTypeName","src":"5097:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3418,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3467,"src":"5106:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$3209","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":3417,"nodeType":"UserDefinedTypeName","pathNode":{"id":3416,"name":"RecoverError","nameLocations":["5106:12:24"],"nodeType":"IdentifierPath","referencedDeclaration":3209,"src":"5106:12:24"},"referencedDeclaration":3209,"src":"5106:12:24","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$3209","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"}],"src":"5096:23:24"},"scope":3565,"src":"5009:1456:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3499,"nodeType":"Block","src":"6692:138:24","statements":[{"assignments":[3482,3485],"declarations":[{"constant":false,"id":3482,"mutability":"mutable","name":"recovered","nameLocation":"6711:9:24","nodeType":"VariableDeclaration","scope":3499,"src":"6703:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3481,"name":"address","nodeType":"ElementaryTypeName","src":"6703:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3485,"mutability":"mutable","name":"error","nameLocation":"6735:5:24","nodeType":"VariableDeclaration","scope":3499,"src":"6722:18:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$3209","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":3484,"nodeType":"UserDefinedTypeName","pathNode":{"id":3483,"name":"RecoverError","nameLocations":["6722:12:24"],"nodeType":"IdentifierPath","referencedDeclaration":3209,"src":"6722:12:24"},"referencedDeclaration":3209,"src":"6722:12:24","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$3209","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"}],"id":3492,"initialValue":{"arguments":[{"id":3487,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3470,"src":"6755:4:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3488,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3472,"src":"6761:1:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":3489,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3474,"src":"6764:1:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3490,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3476,"src":"6767:1:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3486,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[3299,3373,3467],"referencedDeclaration":3467,"src":"6744:10:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$3209_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError)"}},"id":3491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6744:25:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$3209_$","typeString":"tuple(address,enum ECDSA.RecoverError)"}},"nodeType":"VariableDeclarationStatement","src":"6702:67:24"},{"expression":{"arguments":[{"id":3494,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3485,"src":"6791:5:24","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$3209","typeString":"enum ECDSA.RecoverError"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_RecoverError_$3209","typeString":"enum ECDSA.RecoverError"}],"id":3493,"name":"_throwError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3253,"src":"6779:11:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_RecoverError_$3209_$returns$__$","typeString":"function (enum ECDSA.RecoverError) pure"}},"id":3495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6779:18:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3496,"nodeType":"ExpressionStatement","src":"6779:18:24"},{"expression":{"id":3497,"name":"recovered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3482,"src":"6814:9:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":3480,"id":3498,"nodeType":"Return","src":"6807:16:24"}]},"documentation":{"id":3468,"nodeType":"StructuredDocumentation","src":"6471:122:24","text":" @dev Overload of {ECDSA-recover} that receives the `v`,\n `r` and `s` signature fields separately."},"id":3500,"implemented":true,"kind":"function","modifiers":[],"name":"recover","nameLocation":"6607:7:24","nodeType":"FunctionDefinition","parameters":{"id":3477,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3470,"mutability":"mutable","name":"hash","nameLocation":"6623:4:24","nodeType":"VariableDeclaration","scope":3500,"src":"6615:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3469,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6615:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3472,"mutability":"mutable","name":"v","nameLocation":"6635:1:24","nodeType":"VariableDeclaration","scope":3500,"src":"6629:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3471,"name":"uint8","nodeType":"ElementaryTypeName","src":"6629:5:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":3474,"mutability":"mutable","name":"r","nameLocation":"6646:1:24","nodeType":"VariableDeclaration","scope":3500,"src":"6638:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3473,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6638:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3476,"mutability":"mutable","name":"s","nameLocation":"6657:1:24","nodeType":"VariableDeclaration","scope":3500,"src":"6649:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3475,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6649:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6614:45:24"},"returnParameters":{"id":3480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3479,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3500,"src":"6683:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3478,"name":"address","nodeType":"ElementaryTypeName","src":"6683:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6682:9:24"},"scope":3565,"src":"6598:232:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3509,"nodeType":"Block","src":"7206:310:24","statements":[{"AST":{"nativeSrc":"7362:148:24","nodeType":"YulBlock","src":"7362:148:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7383:4:24","nodeType":"YulLiteral","src":"7383:4:24","type":"","value":"0x00"},{"hexValue":"19457468657265756d205369676e6564204d6573736167653a0a3332","kind":"string","nativeSrc":"7389:34:24","nodeType":"YulLiteral","src":"7389:34:24","type":"","value":"\u0019Ethereum Signed Message:\n32"}],"functionName":{"name":"mstore","nativeSrc":"7376:6:24","nodeType":"YulIdentifier","src":"7376:6:24"},"nativeSrc":"7376:48:24","nodeType":"YulFunctionCall","src":"7376:48:24"},"nativeSrc":"7376:48:24","nodeType":"YulExpressionStatement","src":"7376:48:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"7444:4:24","nodeType":"YulLiteral","src":"7444:4:24","type":"","value":"0x1c"},{"name":"hash","nativeSrc":"7450:4:24","nodeType":"YulIdentifier","src":"7450:4:24"}],"functionName":{"name":"mstore","nativeSrc":"7437:6:24","nodeType":"YulIdentifier","src":"7437:6:24"},"nativeSrc":"7437:18:24","nodeType":"YulFunctionCall","src":"7437:18:24"},"nativeSrc":"7437:18:24","nodeType":"YulExpressionStatement","src":"7437:18:24"},{"nativeSrc":"7468:32:24","nodeType":"YulAssignment","src":"7468:32:24","value":{"arguments":[{"kind":"number","nativeSrc":"7489:4:24","nodeType":"YulLiteral","src":"7489:4:24","type":"","value":"0x00"},{"kind":"number","nativeSrc":"7495:4:24","nodeType":"YulLiteral","src":"7495:4:24","type":"","value":"0x3c"}],"functionName":{"name":"keccak256","nativeSrc":"7479:9:24","nodeType":"YulIdentifier","src":"7479:9:24"},"nativeSrc":"7479:21:24","nodeType":"YulFunctionCall","src":"7479:21:24"},"variableNames":[{"name":"message","nativeSrc":"7468:7:24","nodeType":"YulIdentifier","src":"7468:7:24"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":3503,"isOffset":false,"isSlot":false,"src":"7450:4:24","valueSize":1},{"declaration":3506,"isOffset":false,"isSlot":false,"src":"7468:7:24","valueSize":1}],"id":3508,"nodeType":"InlineAssembly","src":"7353:157:24"}]},"documentation":{"id":3501,"nodeType":"StructuredDocumentation","src":"6836:279:24","text":" @dev Returns an Ethereum Signed Message, created from a `hash`. This\n produces hash corresponding to the one signed with the\n https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n JSON-RPC method as part of EIP-191.\n See {recover}."},"id":3510,"implemented":true,"kind":"function","modifiers":[],"name":"toEthSignedMessageHash","nameLocation":"7129:22:24","nodeType":"FunctionDefinition","parameters":{"id":3504,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3503,"mutability":"mutable","name":"hash","nameLocation":"7160:4:24","nodeType":"VariableDeclaration","scope":3510,"src":"7152:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3502,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7152:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7151:14:24"},"returnParameters":{"id":3507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3506,"mutability":"mutable","name":"message","nameLocation":"7197:7:24","nodeType":"VariableDeclaration","scope":3510,"src":"7189:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3505,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7189:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7188:17:24"},"scope":3565,"src":"7120:396:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3531,"nodeType":"Block","src":"7881:116:24","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"19457468657265756d205369676e6564204d6573736167653a0a","id":3521,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7925:32:24","typeDescriptions":{"typeIdentifier":"t_stringliteral_9af2d9c228f6cfddaa6d1e5b94e0bce4ab16bd9a472a2b7fbfd74ebff4c720b4","typeString":"literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a\""},"value":"\u0019Ethereum Signed Message:\n"},{"arguments":[{"expression":{"id":3524,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3513,"src":"7976:1:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7978:6:24","memberName":"length","nodeType":"MemberAccess","src":"7976:8:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3522,"name":"Strings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3199,"src":"7959:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Strings_$3199_$","typeString":"type(library Strings)"}},"id":3523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7967:8:24","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":3029,"src":"7959:16:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":3526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7959:26:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":3527,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3513,"src":"7987:1:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9af2d9c228f6cfddaa6d1e5b94e0bce4ab16bd9a472a2b7fbfd74ebff4c720b4","typeString":"literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3519,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7908:3:24","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3520,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7912:12:24","memberName":"encodePacked","nodeType":"MemberAccess","src":"7908:16:24","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7908:81:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3518,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"7898:9:24","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7898:92:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":3517,"id":3530,"nodeType":"Return","src":"7891:99:24"}]},"documentation":{"id":3511,"nodeType":"StructuredDocumentation","src":"7522:274:24","text":" @dev Returns an Ethereum Signed Message, created from `s`. This\n produces hash corresponding to the one signed with the\n https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n JSON-RPC method as part of EIP-191.\n See {recover}."},"id":3532,"implemented":true,"kind":"function","modifiers":[],"name":"toEthSignedMessageHash","nameLocation":"7810:22:24","nodeType":"FunctionDefinition","parameters":{"id":3514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3513,"mutability":"mutable","name":"s","nameLocation":"7846:1:24","nodeType":"VariableDeclaration","scope":3532,"src":"7833:14:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3512,"name":"bytes","nodeType":"ElementaryTypeName","src":"7833:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7832:16:24"},"returnParameters":{"id":3517,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3516,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3532,"src":"7872:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3515,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7872:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7871:9:24"},"scope":3565,"src":"7801:196:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3543,"nodeType":"Block","src":"8443:290:24","statements":[{"AST":{"nativeSrc":"8505:222:24","nodeType":"YulBlock","src":"8505:222:24","statements":[{"nativeSrc":"8519:22:24","nodeType":"YulVariableDeclaration","src":"8519:22:24","value":{"arguments":[{"kind":"number","nativeSrc":"8536:4:24","nodeType":"YulLiteral","src":"8536:4:24","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"8530:5:24","nodeType":"YulIdentifier","src":"8530:5:24"},"nativeSrc":"8530:11:24","nodeType":"YulFunctionCall","src":"8530:11:24"},"variables":[{"name":"ptr","nativeSrc":"8523:3:24","nodeType":"YulTypedName","src":"8523:3:24","type":""}]},{"expression":{"arguments":[{"name":"ptr","nativeSrc":"8561:3:24","nodeType":"YulIdentifier","src":"8561:3:24"},{"hexValue":"1901","kind":"string","nativeSrc":"8566:10:24","nodeType":"YulLiteral","src":"8566:10:24","type":"","value":"\u0019\u0001"}],"functionName":{"name":"mstore","nativeSrc":"8554:6:24","nodeType":"YulIdentifier","src":"8554:6:24"},"nativeSrc":"8554:23:24","nodeType":"YulFunctionCall","src":"8554:23:24"},"nativeSrc":"8554:23:24","nodeType":"YulExpressionStatement","src":"8554:23:24"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"8601:3:24","nodeType":"YulIdentifier","src":"8601:3:24"},{"kind":"number","nativeSrc":"8606:4:24","nodeType":"YulLiteral","src":"8606:4:24","type":"","value":"0x02"}],"functionName":{"name":"add","nativeSrc":"8597:3:24","nodeType":"YulIdentifier","src":"8597:3:24"},"nativeSrc":"8597:14:24","nodeType":"YulFunctionCall","src":"8597:14:24"},{"name":"domainSeparator","nativeSrc":"8613:15:24","nodeType":"YulIdentifier","src":"8613:15:24"}],"functionName":{"name":"mstore","nativeSrc":"8590:6:24","nodeType":"YulIdentifier","src":"8590:6:24"},"nativeSrc":"8590:39:24","nodeType":"YulFunctionCall","src":"8590:39:24"},"nativeSrc":"8590:39:24","nodeType":"YulExpressionStatement","src":"8590:39:24"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"8653:3:24","nodeType":"YulIdentifier","src":"8653:3:24"},{"kind":"number","nativeSrc":"8658:4:24","nodeType":"YulLiteral","src":"8658:4:24","type":"","value":"0x22"}],"functionName":{"name":"add","nativeSrc":"8649:3:24","nodeType":"YulIdentifier","src":"8649:3:24"},"nativeSrc":"8649:14:24","nodeType":"YulFunctionCall","src":"8649:14:24"},{"name":"structHash","nativeSrc":"8665:10:24","nodeType":"YulIdentifier","src":"8665:10:24"}],"functionName":{"name":"mstore","nativeSrc":"8642:6:24","nodeType":"YulIdentifier","src":"8642:6:24"},"nativeSrc":"8642:34:24","nodeType":"YulFunctionCall","src":"8642:34:24"},"nativeSrc":"8642:34:24","nodeType":"YulExpressionStatement","src":"8642:34:24"},{"nativeSrc":"8689:28:24","nodeType":"YulAssignment","src":"8689:28:24","value":{"arguments":[{"name":"ptr","nativeSrc":"8707:3:24","nodeType":"YulIdentifier","src":"8707:3:24"},{"kind":"number","nativeSrc":"8712:4:24","nodeType":"YulLiteral","src":"8712:4:24","type":"","value":"0x42"}],"functionName":{"name":"keccak256","nativeSrc":"8697:9:24","nodeType":"YulIdentifier","src":"8697:9:24"},"nativeSrc":"8697:20:24","nodeType":"YulFunctionCall","src":"8697:20:24"},"variableNames":[{"name":"data","nativeSrc":"8689:4:24","nodeType":"YulIdentifier","src":"8689:4:24"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":3540,"isOffset":false,"isSlot":false,"src":"8689:4:24","valueSize":1},{"declaration":3535,"isOffset":false,"isSlot":false,"src":"8613:15:24","valueSize":1},{"declaration":3537,"isOffset":false,"isSlot":false,"src":"8665:10:24","valueSize":1}],"id":3542,"nodeType":"InlineAssembly","src":"8496:231:24"}]},"documentation":{"id":3533,"nodeType":"StructuredDocumentation","src":"8003:328:24","text":" @dev Returns an Ethereum Signed Typed Data, created from a\n `domainSeparator` and a `structHash`. This produces hash corresponding\n to the one signed with the\n https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\n JSON-RPC method as part of EIP-712.\n See {recover}."},"id":3544,"implemented":true,"kind":"function","modifiers":[],"name":"toTypedDataHash","nameLocation":"8345:15:24","nodeType":"FunctionDefinition","parameters":{"id":3538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3535,"mutability":"mutable","name":"domainSeparator","nameLocation":"8369:15:24","nodeType":"VariableDeclaration","scope":3544,"src":"8361:23:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3534,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8361:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3537,"mutability":"mutable","name":"structHash","nameLocation":"8394:10:24","nodeType":"VariableDeclaration","scope":3544,"src":"8386:18:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3536,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8386:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8360:45:24"},"returnParameters":{"id":3541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3540,"mutability":"mutable","name":"data","nameLocation":"8437:4:24","nodeType":"VariableDeclaration","scope":3544,"src":"8429:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3539,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8429:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8428:14:24"},"scope":3565,"src":"8336:397:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3563,"nodeType":"Block","src":"9048:80:24","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"1900","id":3557,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9092:10:24","typeDescriptions":{"typeIdentifier":"t_stringliteral_73fd5d154550a4a103564cb191928cd38898034de1b952dc21b290898b4b697a","typeString":"literal_string hex\"1900\""},"value":"\u0019\u0000"},{"id":3558,"name":"validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3547,"src":"9104:9:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3559,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3549,"src":"9115:4:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_73fd5d154550a4a103564cb191928cd38898034de1b952dc21b290898b4b697a","typeString":"literal_string hex\"1900\""},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3555,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"9075:3:24","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3556,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9079:12:24","memberName":"encodePacked","nodeType":"MemberAccess","src":"9075:16:24","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3560,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9075:45:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3554,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"9065:9:24","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9065:56:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":3553,"id":3562,"nodeType":"Return","src":"9058:63:24"}]},"documentation":{"id":3545,"nodeType":"StructuredDocumentation","src":"8739:193:24","text":" @dev Returns an Ethereum Signed Data with intended validator, created from a\n `validator` and `data` according to the version 0 of EIP-191.\n See {recover}."},"id":3564,"implemented":true,"kind":"function","modifiers":[],"name":"toDataWithIntendedValidatorHash","nameLocation":"8946:31:24","nodeType":"FunctionDefinition","parameters":{"id":3550,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3547,"mutability":"mutable","name":"validator","nameLocation":"8986:9:24","nodeType":"VariableDeclaration","scope":3564,"src":"8978:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3546,"name":"address","nodeType":"ElementaryTypeName","src":"8978:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3549,"mutability":"mutable","name":"data","nameLocation":"9010:4:24","nodeType":"VariableDeclaration","scope":3564,"src":"8997:17:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3548,"name":"bytes","nodeType":"ElementaryTypeName","src":"8997:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8977:38:24"},"returnParameters":{"id":3553,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3552,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3564,"src":"9039:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3551,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9039:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9038:9:24"},"scope":3565,"src":"8937:191:24","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":3566,"src":"369:8761:24","usedErrors":[],"usedEvents":[]}],"src":"112:9019:24"},"id":24},"@openzeppelin/contracts/utils/cryptography/EIP712.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/cryptography/EIP712.sol","exportedSymbols":{"ECDSA":[3565],"EIP712":[3769],"IERC5267":[1704],"Math":[4635],"ShortString":[2649],"ShortStrings":[2860],"SignedMath":[4740],"StorageSlot":[2970],"Strings":[3199]},"id":3770,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3567,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"113:23:25"},{"absolutePath":"@openzeppelin/contracts/utils/cryptography/ECDSA.sol","file":"./ECDSA.sol","id":3568,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3770,"sourceUnit":3566,"src":"138:21:25","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/ShortStrings.sol","file":"../ShortStrings.sol","id":3569,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3770,"sourceUnit":2861,"src":"160:29:25","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC5267.sol","file":"../../interfaces/IERC5267.sol","id":3570,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3770,"sourceUnit":1705,"src":"190:39:25","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3572,"name":"IERC5267","nameLocations":["1837:8:25"],"nodeType":"IdentifierPath","referencedDeclaration":1704,"src":"1837:8:25"},"id":3573,"nodeType":"InheritanceSpecifier","src":"1837:8:25"}],"canonicalName":"EIP712","contractDependencies":[],"contractKind":"contract","documentation":{"id":3571,"nodeType":"StructuredDocumentation","src":"231:1577:25","text":" @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\n The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,\n thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding\n they need in their contracts using a combination of `abi.encode` and `keccak256`.\n This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\n scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\n ({_hashTypedDataV4}).\n The implementation of the domain separator was designed to be as efficient as possible while still properly updating\n the chain id to protect against replay attacks on an eventual fork of the chain.\n NOTE: This contract implements the version of the encoding known as \"v4\", as implemented by the JSON RPC method\n https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\n NOTE: In the upgradeable version of this contract, the cached values will correspond to the address, and the domain\n separator of the implementation contract. This will cause the `_domainSeparatorV4` function to always rebuild the\n separator from the immutable values, which is cheaper than accessing a cached version in cold storage.\n _Available since v3.4._\n @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment"},"fullyImplemented":true,"id":3769,"linearizedBaseContracts":[3769,1704],"name":"EIP712","nameLocation":"1827:6:25","nodeType":"ContractDefinition","nodes":[{"global":false,"id":3575,"libraryName":{"id":3574,"name":"ShortStrings","nameLocations":["1858:12:25"],"nodeType":"IdentifierPath","referencedDeclaration":2860,"src":"1858:12:25"},"nodeType":"UsingForDirective","src":"1852:25:25"},{"constant":true,"id":3580,"mutability":"constant","name":"_TYPE_HASH","nameLocation":"1908:10:25","nodeType":"VariableDeclaration","scope":3769,"src":"1883:141:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3576,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1883:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429","id":3578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1939:84:25","typeDescriptions":{"typeIdentifier":"t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f","typeString":"literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""},"value":"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f","typeString":"literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""}],"id":3577,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1929:9:25","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1929:95:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":3582,"mutability":"immutable","name":"_cachedDomainSeparator","nameLocation":"2249:22:25","nodeType":"VariableDeclaration","scope":3769,"src":"2223:48:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3581,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2223:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":3584,"mutability":"immutable","name":"_cachedChainId","nameLocation":"2303:14:25","nodeType":"VariableDeclaration","scope":3769,"src":"2277:40:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3583,"name":"uint256","nodeType":"ElementaryTypeName","src":"2277:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":3586,"mutability":"immutable","name":"_cachedThis","nameLocation":"2349:11:25","nodeType":"VariableDeclaration","scope":3769,"src":"2323:37:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3585,"name":"address","nodeType":"ElementaryTypeName","src":"2323:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":false,"id":3588,"mutability":"immutable","name":"_hashedName","nameLocation":"2393:11:25","nodeType":"VariableDeclaration","scope":3769,"src":"2367:37:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3587,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2367:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":3590,"mutability":"immutable","name":"_hashedVersion","nameLocation":"2436:14:25","nodeType":"VariableDeclaration","scope":3769,"src":"2410:40:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3589,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2410:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":3593,"mutability":"immutable","name":"_name","nameLocation":"2487:5:25","nodeType":"VariableDeclaration","scope":3769,"src":"2457:35:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$2649","typeString":"ShortString"},"typeName":{"id":3592,"nodeType":"UserDefinedTypeName","pathNode":{"id":3591,"name":"ShortString","nameLocations":["2457:11:25"],"nodeType":"IdentifierPath","referencedDeclaration":2649,"src":"2457:11:25"},"referencedDeclaration":2649,"src":"2457:11:25","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$2649","typeString":"ShortString"}},"visibility":"private"},{"constant":false,"id":3596,"mutability":"immutable","name":"_version","nameLocation":"2528:8:25","nodeType":"VariableDeclaration","scope":3769,"src":"2498:38:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$2649","typeString":"ShortString"},"typeName":{"id":3595,"nodeType":"UserDefinedTypeName","pathNode":{"id":3594,"name":"ShortString","nameLocations":["2498:11:25"],"nodeType":"IdentifierPath","referencedDeclaration":2649,"src":"2498:11:25"},"referencedDeclaration":2649,"src":"2498:11:25","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$2649","typeString":"ShortString"}},"visibility":"private"},{"constant":false,"id":3598,"mutability":"mutable","name":"_nameFallback","nameLocation":"2557:13:25","nodeType":"VariableDeclaration","scope":3769,"src":"2542:28:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":3597,"name":"string","nodeType":"ElementaryTypeName","src":"2542:6:25","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":3600,"mutability":"mutable","name":"_versionFallback","nameLocation":"2591:16:25","nodeType":"VariableDeclaration","scope":3769,"src":"2576:31:25","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":3599,"name":"string","nodeType":"ElementaryTypeName","src":"2576:6:25","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"body":{"id":3657,"nodeType":"Block","src":"3233:376:25","statements":[{"expression":{"id":3613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3608,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3593,"src":"3243:5:25","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$2649","typeString":"ShortString"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3611,"name":"_nameFallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3598,"src":"3282:13:25","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}],"expression":{"id":3609,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3603,"src":"3251:4:25","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":3610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3256:25:25","memberName":"toShortStringWithFallback","nodeType":"MemberAccess","referencedDeclaration":2801,"src":"3251:30:25","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_storage_ptr_$returns$_t_userDefinedValueType$_ShortString_$2649_$attached_to$_t_string_memory_ptr_$","typeString":"function (string memory,string storage pointer) returns (ShortString)"}},"id":3612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3251:45:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$2649","typeString":"ShortString"}},"src":"3243:53:25","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$2649","typeString":"ShortString"}},"id":3614,"nodeType":"ExpressionStatement","src":"3243:53:25"},{"expression":{"id":3620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3615,"name":"_version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3596,"src":"3306:8:25","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$2649","typeString":"ShortString"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3618,"name":"_versionFallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3600,"src":"3351:16:25","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}],"expression":{"id":3616,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3605,"src":"3317:7:25","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":3617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3325:25:25","memberName":"toShortStringWithFallback","nodeType":"MemberAccess","referencedDeclaration":2801,"src":"3317:33:25","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_storage_ptr_$returns$_t_userDefinedValueType$_ShortString_$2649_$attached_to$_t_string_memory_ptr_$","typeString":"function (string memory,string storage pointer) returns (ShortString)"}},"id":3619,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3317:51:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$2649","typeString":"ShortString"}},"src":"3306:62:25","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$2649","typeString":"ShortString"}},"id":3621,"nodeType":"ExpressionStatement","src":"3306:62:25"},{"expression":{"id":3629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3622,"name":"_hashedName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3588,"src":"3378:11:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":3626,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3603,"src":"3408:4:25","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":3625,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3402:5:25","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":3624,"name":"bytes","nodeType":"ElementaryTypeName","src":"3402:5:25","typeDescriptions":{}}},"id":3627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3402:11:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3623,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3392:9:25","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3392:22:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3378:36:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3630,"nodeType":"ExpressionStatement","src":"3378:36:25"},{"expression":{"id":3638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3631,"name":"_hashedVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3590,"src":"3424:14:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":3635,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3605,"src":"3457:7:25","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":3634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3451:5:25","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":3633,"name":"bytes","nodeType":"ElementaryTypeName","src":"3451:5:25","typeDescriptions":{}}},"id":3636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3451:14:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3632,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3441:9:25","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3637,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3441:25:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3424:42:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3639,"nodeType":"ExpressionStatement","src":"3424:42:25"},{"expression":{"id":3643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3640,"name":"_cachedChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3584,"src":"3477:14:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":3641,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3494:5:25","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":3642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3500:7:25","memberName":"chainid","nodeType":"MemberAccess","src":"3494:13:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3477:30:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3644,"nodeType":"ExpressionStatement","src":"3477:30:25"},{"expression":{"id":3648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3645,"name":"_cachedDomainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3582,"src":"3517:22:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":3646,"name":"_buildDomainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3705,"src":"3542:21:25","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":3647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3542:23:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3517:48:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3649,"nodeType":"ExpressionStatement","src":"3517:48:25"},{"expression":{"id":3655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3650,"name":"_cachedThis","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3586,"src":"3575:11:25","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3653,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3597:4:25","typeDescriptions":{"typeIdentifier":"t_contract$_EIP712_$3769","typeString":"contract EIP712"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_EIP712_$3769","typeString":"contract EIP712"}],"id":3652,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3589:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3651,"name":"address","nodeType":"ElementaryTypeName","src":"3589:7:25","typeDescriptions":{}}},"id":3654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3589:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3575:27:25","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3656,"nodeType":"ExpressionStatement","src":"3575:27:25"}]},"documentation":{"id":3601,"nodeType":"StructuredDocumentation","src":"2614:559:25","text":" @dev Initializes the domain separator and parameter caches.\n The meaning of `name` and `version` is specified in\n https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\n - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\n - `version`: the current major version of the signing domain.\n NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\n contract upgrade]."},"id":3658,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":3606,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3603,"mutability":"mutable","name":"name","nameLocation":"3204:4:25","nodeType":"VariableDeclaration","scope":3658,"src":"3190:18:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3602,"name":"string","nodeType":"ElementaryTypeName","src":"3190:6:25","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":3605,"mutability":"mutable","name":"version","nameLocation":"3224:7:25","nodeType":"VariableDeclaration","scope":3658,"src":"3210:21:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3604,"name":"string","nodeType":"ElementaryTypeName","src":"3210:6:25","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3189:43:25"},"returnParameters":{"id":3607,"nodeType":"ParameterList","parameters":[],"src":"3233:0:25"},"scope":3769,"src":"3178:431:25","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3683,"nodeType":"Block","src":"3757:200:25","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3666,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3779:4:25","typeDescriptions":{"typeIdentifier":"t_contract$_EIP712_$3769","typeString":"contract EIP712"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_EIP712_$3769","typeString":"contract EIP712"}],"id":3665,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3771:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3664,"name":"address","nodeType":"ElementaryTypeName","src":"3771:7:25","typeDescriptions":{}}},"id":3667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3771:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3668,"name":"_cachedThis","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3586,"src":"3788:11:25","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3771:28:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3670,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3803:5:25","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":3671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3809:7:25","memberName":"chainid","nodeType":"MemberAccess","src":"3803:13:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3672,"name":"_cachedChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3584,"src":"3820:14:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3803:31:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3771:63:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3681,"nodeType":"Block","src":"3896:55:25","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3678,"name":"_buildDomainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3705,"src":"3917:21:25","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":3679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3917:23:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":3663,"id":3680,"nodeType":"Return","src":"3910:30:25"}]},"id":3682,"nodeType":"IfStatement","src":"3767:184:25","trueBody":{"id":3677,"nodeType":"Block","src":"3836:54:25","statements":[{"expression":{"id":3675,"name":"_cachedDomainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3582,"src":"3857:22:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":3663,"id":3676,"nodeType":"Return","src":"3850:29:25"}]}}]},"documentation":{"id":3659,"nodeType":"StructuredDocumentation","src":"3615:75:25","text":" @dev Returns the domain separator for the current chain."},"id":3684,"implemented":true,"kind":"function","modifiers":[],"name":"_domainSeparatorV4","nameLocation":"3704:18:25","nodeType":"FunctionDefinition","parameters":{"id":3660,"nodeType":"ParameterList","parameters":[],"src":"3722:2:25"},"returnParameters":{"id":3663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3662,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3684,"src":"3748:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3661,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3748:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3747:9:25"},"scope":3769,"src":"3695:262:25","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3704,"nodeType":"Block","src":"4027:116:25","statements":[{"expression":{"arguments":[{"arguments":[{"id":3692,"name":"_TYPE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3580,"src":"4065:10:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3693,"name":"_hashedName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3588,"src":"4077:11:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3694,"name":"_hashedVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3590,"src":"4090:14:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":3695,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"4106:5:25","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":3696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4112:7:25","memberName":"chainid","nodeType":"MemberAccess","src":"4106:13:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":3699,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4129:4:25","typeDescriptions":{"typeIdentifier":"t_contract$_EIP712_$3769","typeString":"contract EIP712"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_EIP712_$3769","typeString":"contract EIP712"}],"id":3698,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4121:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3697,"name":"address","nodeType":"ElementaryTypeName","src":"4121:7:25","typeDescriptions":{}}},"id":3700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4121:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3690,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4054:3:25","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3691,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4058:6:25","memberName":"encode","nodeType":"MemberAccess","src":"4054:10:25","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4054:81:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3689,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"4044:9:25","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4044:92:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":3688,"id":3703,"nodeType":"Return","src":"4037:99:25"}]},"id":3705,"implemented":true,"kind":"function","modifiers":[],"name":"_buildDomainSeparator","nameLocation":"3972:21:25","nodeType":"FunctionDefinition","parameters":{"id":3685,"nodeType":"ParameterList","parameters":[],"src":"3993:2:25"},"returnParameters":{"id":3688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3687,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3705,"src":"4018:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3686,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4018:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4017:9:25"},"scope":3769,"src":"3963:180:25","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":3720,"nodeType":"Block","src":"4854:79:25","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":3715,"name":"_domainSeparatorV4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3684,"src":"4893:18:25","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":3716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4893:20:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3717,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3708,"src":"4915:10:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":3713,"name":"ECDSA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3565,"src":"4871:5:25","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ECDSA_$3565_$","typeString":"type(library ECDSA)"}},"id":3714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4877:15:25","memberName":"toTypedDataHash","nodeType":"MemberAccess","referencedDeclaration":3544,"src":"4871:21:25","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":3718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4871:55:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":3712,"id":3719,"nodeType":"Return","src":"4864:62:25"}]},"documentation":{"id":3706,"nodeType":"StructuredDocumentation","src":"4149:614:25","text":" @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\n function returns the hash of the fully encoded EIP712 message for this domain.\n This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\n ```solidity\n bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\n     keccak256(\"Mail(address to,string contents)\"),\n     mailTo,\n     keccak256(bytes(mailContents))\n )));\n address signer = ECDSA.recover(digest, signature);\n ```"},"id":3721,"implemented":true,"kind":"function","modifiers":[],"name":"_hashTypedDataV4","nameLocation":"4777:16:25","nodeType":"FunctionDefinition","parameters":{"id":3709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3708,"mutability":"mutable","name":"structHash","nameLocation":"4802:10:25","nodeType":"VariableDeclaration","scope":3721,"src":"4794:18:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3707,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4794:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4793:20:25"},"returnParameters":{"id":3712,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3711,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3721,"src":"4845:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3710,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4845:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4844:9:25"},"scope":3769,"src":"4768:165:25","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[1703],"body":{"id":3767,"nodeType":"Block","src":"5366:288:25","statements":[{"expression":{"components":[{"hexValue":"0f","id":3741,"isConstant":false,"isLValue":false,"isPure":true,"kind":"hexString","lValueRequested":false,"nodeType":"Literal","src":"5397:7:25","typeDescriptions":{"typeIdentifier":"t_stringliteral_3d725c5ee53025f027da36bea8d3af3b6a3e9d2d1542d47c162631de48e66c1c","typeString":"literal_string hex\"0f\""},"value":"\u000f"},{"arguments":[{"id":3744,"name":"_nameFallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3598,"src":"5454:13:25","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}],"expression":{"id":3742,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3593,"src":"5427:5:25","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$2649","typeString":"ShortString"}},"id":3743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5433:20:25","memberName":"toStringWithFallback","nodeType":"MemberAccess","referencedDeclaration":2828,"src":"5427:26:25","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_ShortString_$2649_$_t_string_storage_ptr_$returns$_t_string_memory_ptr_$attached_to$_t_userDefinedValueType$_ShortString_$2649_$","typeString":"function (ShortString,string storage pointer) pure returns (string memory)"}},"id":3745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5427:41:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"id":3748,"name":"_versionFallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3600,"src":"5512:16:25","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}],"expression":{"id":3746,"name":"_version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3596,"src":"5482:8:25","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$2649","typeString":"ShortString"}},"id":3747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5491:20:25","memberName":"toStringWithFallback","nodeType":"MemberAccess","referencedDeclaration":2828,"src":"5482:29:25","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_ShortString_$2649_$_t_string_storage_ptr_$returns$_t_string_memory_ptr_$attached_to$_t_userDefinedValueType$_ShortString_$2649_$","typeString":"function (ShortString,string storage pointer) pure returns (string memory)"}},"id":3749,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5482:47:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":3750,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"5543:5:25","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":3751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5549:7:25","memberName":"chainid","nodeType":"MemberAccess","src":"5543:13:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":3754,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5578:4:25","typeDescriptions":{"typeIdentifier":"t_contract$_EIP712_$3769","typeString":"contract EIP712"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_EIP712_$3769","typeString":"contract EIP712"}],"id":3753,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5570:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3752,"name":"address","nodeType":"ElementaryTypeName","src":"5570:7:25","typeDescriptions":{}}},"id":3755,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5570:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":3758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5605:1:25","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3757,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5597:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3756,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5597:7:25","typeDescriptions":{}}},"id":3759,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5597:10:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"hexValue":"30","id":3763,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5635:1:25","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3762,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"5621:13:25","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":3760,"name":"uint256","nodeType":"ElementaryTypeName","src":"5625:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3761,"nodeType":"ArrayTypeName","src":"5625:9:25","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":3764,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5621:16:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"id":3765,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5383:264:25","typeDescriptions":{"typeIdentifier":"t_tuple$_t_stringliteral_3d725c5ee53025f027da36bea8d3af3b6a3e9d2d1542d47c162631de48e66c1c_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$_t_address_$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(literal_string hex\"0f\",string memory,string memory,uint256,address,bytes32,uint256[] memory)"}},"functionReturnParameters":3740,"id":3766,"nodeType":"Return","src":"5376:271:25"}]},"documentation":{"id":3722,"nodeType":"StructuredDocumentation","src":"4939:77:25","text":" @dev See {EIP-5267}.\n _Available since v4.9._"},"functionSelector":"84b0196e","id":3768,"implemented":true,"kind":"function","modifiers":[],"name":"eip712Domain","nameLocation":"5030:12:25","nodeType":"FunctionDefinition","overrides":{"id":3724,"nodeType":"OverrideSpecifier","overrides":[],"src":"5097:8:25"},"parameters":{"id":3723,"nodeType":"ParameterList","parameters":[],"src":"5042:2:25"},"returnParameters":{"id":3740,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3726,"mutability":"mutable","name":"fields","nameLocation":"5143:6:25","nodeType":"VariableDeclaration","scope":3768,"src":"5136:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":3725,"name":"bytes1","nodeType":"ElementaryTypeName","src":"5136:6:25","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"},{"constant":false,"id":3728,"mutability":"mutable","name":"name","nameLocation":"5177:4:25","nodeType":"VariableDeclaration","scope":3768,"src":"5163:18:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3727,"name":"string","nodeType":"ElementaryTypeName","src":"5163:6:25","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":3730,"mutability":"mutable","name":"version","nameLocation":"5209:7:25","nodeType":"VariableDeclaration","scope":3768,"src":"5195:21:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3729,"name":"string","nodeType":"ElementaryTypeName","src":"5195:6:25","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":3732,"mutability":"mutable","name":"chainId","nameLocation":"5238:7:25","nodeType":"VariableDeclaration","scope":3768,"src":"5230:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3731,"name":"uint256","nodeType":"ElementaryTypeName","src":"5230:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3734,"mutability":"mutable","name":"verifyingContract","nameLocation":"5267:17:25","nodeType":"VariableDeclaration","scope":3768,"src":"5259:25:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3733,"name":"address","nodeType":"ElementaryTypeName","src":"5259:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3736,"mutability":"mutable","name":"salt","nameLocation":"5306:4:25","nodeType":"VariableDeclaration","scope":3768,"src":"5298:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3735,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5298:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3739,"mutability":"mutable","name":"extensions","nameLocation":"5341:10:25","nodeType":"VariableDeclaration","scope":3768,"src":"5324:27:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3737,"name":"uint256","nodeType":"ElementaryTypeName","src":"5324:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3738,"nodeType":"ArrayTypeName","src":"5324:9:25","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"5122:239:25"},"scope":3769,"src":"5021:633:25","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":3770,"src":"1809:3847:25","usedErrors":[2657,2659],"usedEvents":[1684]}],"src":"113:5544:25"},"id":25},"@openzeppelin/contracts/utils/math/Math.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","exportedSymbols":{"Math":[4635]},"id":4636,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3771,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"103:23:26"},{"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":3772,"nodeType":"StructuredDocumentation","src":"128:73:26","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"id":4635,"linearizedBaseContracts":[4635],"name":"Math","nameLocation":"210:4:26","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Math.Rounding","id":3776,"members":[{"id":3773,"name":"Down","nameLocation":"245:4:26","nodeType":"EnumValue","src":"245:4:26"},{"id":3774,"name":"Up","nameLocation":"287:2:26","nodeType":"EnumValue","src":"287:2:26"},{"id":3775,"name":"Zero","nameLocation":"318:4:26","nodeType":"EnumValue","src":"318:4:26"}],"name":"Rounding","nameLocation":"226:8:26","nodeType":"EnumDefinition","src":"221:122:26"},{"body":{"id":3793,"nodeType":"Block","src":"480:37:26","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3786,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3779,"src":"497:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":3787,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3781,"src":"501:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"497:5:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":3790,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3781,"src":"509:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"497:13:26","trueExpression":{"id":3789,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3779,"src":"505:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3785,"id":3792,"nodeType":"Return","src":"490:20:26"}]},"documentation":{"id":3777,"nodeType":"StructuredDocumentation","src":"349:59:26","text":" @dev Returns the largest of two numbers."},"id":3794,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"422:3:26","nodeType":"FunctionDefinition","parameters":{"id":3782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3779,"mutability":"mutable","name":"a","nameLocation":"434:1:26","nodeType":"VariableDeclaration","scope":3794,"src":"426:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3778,"name":"uint256","nodeType":"ElementaryTypeName","src":"426:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3781,"mutability":"mutable","name":"b","nameLocation":"445:1:26","nodeType":"VariableDeclaration","scope":3794,"src":"437:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3780,"name":"uint256","nodeType":"ElementaryTypeName","src":"437:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"425:22:26"},"returnParameters":{"id":3785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3784,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3794,"src":"471:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3783,"name":"uint256","nodeType":"ElementaryTypeName","src":"471:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"470:9:26"},"scope":4635,"src":"413:104:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3811,"nodeType":"Block","src":"655:37:26","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3804,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3797,"src":"672:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3805,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3799,"src":"676:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"672:5:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":3808,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3799,"src":"684:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"672:13:26","trueExpression":{"id":3807,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3797,"src":"680:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3803,"id":3810,"nodeType":"Return","src":"665:20:26"}]},"documentation":{"id":3795,"nodeType":"StructuredDocumentation","src":"523:60:26","text":" @dev Returns the smallest of two numbers."},"id":3812,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"597:3:26","nodeType":"FunctionDefinition","parameters":{"id":3800,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3797,"mutability":"mutable","name":"a","nameLocation":"609:1:26","nodeType":"VariableDeclaration","scope":3812,"src":"601:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3796,"name":"uint256","nodeType":"ElementaryTypeName","src":"601:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3799,"mutability":"mutable","name":"b","nameLocation":"620:1:26","nodeType":"VariableDeclaration","scope":3812,"src":"612:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3798,"name":"uint256","nodeType":"ElementaryTypeName","src":"612:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"600:22:26"},"returnParameters":{"id":3803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3802,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3812,"src":"646:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3801,"name":"uint256","nodeType":"ElementaryTypeName","src":"646:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"645:9:26"},"scope":4635,"src":"588:104:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3834,"nodeType":"Block","src":"876:82:26","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3822,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3815,"src":"931:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":3823,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3817,"src":"935:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"931:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3825,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"930:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3826,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3815,"src":"941:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":3827,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3817,"src":"945:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"941:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3829,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"940:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":3830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"950:1:26","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"940:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"930:21:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3821,"id":3833,"nodeType":"Return","src":"923:28:26"}]},"documentation":{"id":3813,"nodeType":"StructuredDocumentation","src":"698:102:26","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"id":3835,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"814:7:26","nodeType":"FunctionDefinition","parameters":{"id":3818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3815,"mutability":"mutable","name":"a","nameLocation":"830:1:26","nodeType":"VariableDeclaration","scope":3835,"src":"822:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3814,"name":"uint256","nodeType":"ElementaryTypeName","src":"822:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3817,"mutability":"mutable","name":"b","nameLocation":"841:1:26","nodeType":"VariableDeclaration","scope":3835,"src":"833:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3816,"name":"uint256","nodeType":"ElementaryTypeName","src":"833:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"821:22:26"},"returnParameters":{"id":3821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3820,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3835,"src":"867:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3819,"name":"uint256","nodeType":"ElementaryTypeName","src":"867:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"866:9:26"},"scope":4635,"src":"805:153:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3859,"nodeType":"Block","src":"1228:123:26","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3845,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3838,"src":"1316:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3846,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1321:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1316:6:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3849,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3838,"src":"1330:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":3850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1334:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1330:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3852,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1329:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3853,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3840,"src":"1339:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1329:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":3855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1343:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1329:15:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1316:28:26","trueExpression":{"hexValue":"30","id":3848,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1325:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3844,"id":3858,"nodeType":"Return","src":"1309:35:26"}]},"documentation":{"id":3836,"nodeType":"StructuredDocumentation","src":"964:188:26","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds up instead\n of rounding down."},"id":3860,"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"1166:7:26","nodeType":"FunctionDefinition","parameters":{"id":3841,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3838,"mutability":"mutable","name":"a","nameLocation":"1182:1:26","nodeType":"VariableDeclaration","scope":3860,"src":"1174:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3837,"name":"uint256","nodeType":"ElementaryTypeName","src":"1174:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3840,"mutability":"mutable","name":"b","nameLocation":"1193:1:26","nodeType":"VariableDeclaration","scope":3860,"src":"1185:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3839,"name":"uint256","nodeType":"ElementaryTypeName","src":"1185:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1173:22:26"},"returnParameters":{"id":3844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3843,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3860,"src":"1219:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3842,"name":"uint256","nodeType":"ElementaryTypeName","src":"1219:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1218:9:26"},"scope":4635,"src":"1157:194:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3982,"nodeType":"Block","src":"1765:4115:26","statements":[{"id":3981,"nodeType":"UncheckedBlock","src":"1775:4099:26","statements":[{"assignments":[3873],"declarations":[{"constant":false,"id":3873,"mutability":"mutable","name":"prod0","nameLocation":"2104:5:26","nodeType":"VariableDeclaration","scope":3981,"src":"2096:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3872,"name":"uint256","nodeType":"ElementaryTypeName","src":"2096:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3874,"nodeType":"VariableDeclarationStatement","src":"2096:13:26"},{"assignments":[3876],"declarations":[{"constant":false,"id":3876,"mutability":"mutable","name":"prod1","nameLocation":"2176:5:26","nodeType":"VariableDeclaration","scope":3981,"src":"2168:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3875,"name":"uint256","nodeType":"ElementaryTypeName","src":"2168:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3877,"nodeType":"VariableDeclarationStatement","src":"2168:13:26"},{"AST":{"nativeSrc":"2248:157:26","nodeType":"YulBlock","src":"2248:157:26","statements":[{"nativeSrc":"2266:30:26","nodeType":"YulVariableDeclaration","src":"2266:30:26","value":{"arguments":[{"name":"x","nativeSrc":"2283:1:26","nodeType":"YulIdentifier","src":"2283:1:26"},{"name":"y","nativeSrc":"2286:1:26","nodeType":"YulIdentifier","src":"2286:1:26"},{"arguments":[{"kind":"number","nativeSrc":"2293:1:26","nodeType":"YulLiteral","src":"2293:1:26","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"2289:3:26","nodeType":"YulIdentifier","src":"2289:3:26"},"nativeSrc":"2289:6:26","nodeType":"YulFunctionCall","src":"2289:6:26"}],"functionName":{"name":"mulmod","nativeSrc":"2276:6:26","nodeType":"YulIdentifier","src":"2276:6:26"},"nativeSrc":"2276:20:26","nodeType":"YulFunctionCall","src":"2276:20:26"},"variables":[{"name":"mm","nativeSrc":"2270:2:26","nodeType":"YulTypedName","src":"2270:2:26","type":""}]},{"nativeSrc":"2313:18:26","nodeType":"YulAssignment","src":"2313:18:26","value":{"arguments":[{"name":"x","nativeSrc":"2326:1:26","nodeType":"YulIdentifier","src":"2326:1:26"},{"name":"y","nativeSrc":"2329:1:26","nodeType":"YulIdentifier","src":"2329:1:26"}],"functionName":{"name":"mul","nativeSrc":"2322:3:26","nodeType":"YulIdentifier","src":"2322:3:26"},"nativeSrc":"2322:9:26","nodeType":"YulFunctionCall","src":"2322:9:26"},"variableNames":[{"name":"prod0","nativeSrc":"2313:5:26","nodeType":"YulIdentifier","src":"2313:5:26"}]},{"nativeSrc":"2348:43:26","nodeType":"YulAssignment","src":"2348:43:26","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"2365:2:26","nodeType":"YulIdentifier","src":"2365:2:26"},{"name":"prod0","nativeSrc":"2369:5:26","nodeType":"YulIdentifier","src":"2369:5:26"}],"functionName":{"name":"sub","nativeSrc":"2361:3:26","nodeType":"YulIdentifier","src":"2361:3:26"},"nativeSrc":"2361:14:26","nodeType":"YulFunctionCall","src":"2361:14:26"},{"arguments":[{"name":"mm","nativeSrc":"2380:2:26","nodeType":"YulIdentifier","src":"2380:2:26"},{"name":"prod0","nativeSrc":"2384:5:26","nodeType":"YulIdentifier","src":"2384:5:26"}],"functionName":{"name":"lt","nativeSrc":"2377:2:26","nodeType":"YulIdentifier","src":"2377:2:26"},"nativeSrc":"2377:13:26","nodeType":"YulFunctionCall","src":"2377:13:26"}],"functionName":{"name":"sub","nativeSrc":"2357:3:26","nodeType":"YulIdentifier","src":"2357:3:26"},"nativeSrc":"2357:34:26","nodeType":"YulFunctionCall","src":"2357:34:26"},"variableNames":[{"name":"prod1","nativeSrc":"2348:5:26","nodeType":"YulIdentifier","src":"2348:5:26"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3873,"isOffset":false,"isSlot":false,"src":"2313:5:26","valueSize":1},{"declaration":3873,"isOffset":false,"isSlot":false,"src":"2369:5:26","valueSize":1},{"declaration":3873,"isOffset":false,"isSlot":false,"src":"2384:5:26","valueSize":1},{"declaration":3876,"isOffset":false,"isSlot":false,"src":"2348:5:26","valueSize":1},{"declaration":3863,"isOffset":false,"isSlot":false,"src":"2283:1:26","valueSize":1},{"declaration":3863,"isOffset":false,"isSlot":false,"src":"2326:1:26","valueSize":1},{"declaration":3865,"isOffset":false,"isSlot":false,"src":"2286:1:26","valueSize":1},{"declaration":3865,"isOffset":false,"isSlot":false,"src":"2329:1:26","valueSize":1}],"id":3878,"nodeType":"InlineAssembly","src":"2239:166:26"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3879,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3876,"src":"2486:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2495:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2486:10:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3887,"nodeType":"IfStatement","src":"2482:368:26","trueBody":{"id":3886,"nodeType":"Block","src":"2498:352:26","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3882,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3873,"src":"2816:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3883,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3867,"src":"2824:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2816:19:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3871,"id":3885,"nodeType":"Return","src":"2809:26:26"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3889,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3867,"src":"2960:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":3890,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3876,"src":"2974:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2960:19:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d6174683a206d756c446976206f766572666c6f77","id":3892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2981:23:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_d87093691d63b122ac2c14d1b11554b287e2431cf2b03550b3be7cffb0f86851","typeString":"literal_string \"Math: mulDiv overflow\""},"value":"Math: mulDiv overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d87093691d63b122ac2c14d1b11554b287e2431cf2b03550b3be7cffb0f86851","typeString":"literal_string \"Math: mulDiv overflow\""}],"id":3888,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2952:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2952:53:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3894,"nodeType":"ExpressionStatement","src":"2952:53:26"},{"assignments":[3896],"declarations":[{"constant":false,"id":3896,"mutability":"mutable","name":"remainder","nameLocation":"3269:9:26","nodeType":"VariableDeclaration","scope":3981,"src":"3261:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3895,"name":"uint256","nodeType":"ElementaryTypeName","src":"3261:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3897,"nodeType":"VariableDeclarationStatement","src":"3261:17:26"},{"AST":{"nativeSrc":"3301:291:26","nodeType":"YulBlock","src":"3301:291:26","statements":[{"nativeSrc":"3370:38:26","nodeType":"YulAssignment","src":"3370:38:26","value":{"arguments":[{"name":"x","nativeSrc":"3390:1:26","nodeType":"YulIdentifier","src":"3390:1:26"},{"name":"y","nativeSrc":"3393:1:26","nodeType":"YulIdentifier","src":"3393:1:26"},{"name":"denominator","nativeSrc":"3396:11:26","nodeType":"YulIdentifier","src":"3396:11:26"}],"functionName":{"name":"mulmod","nativeSrc":"3383:6:26","nodeType":"YulIdentifier","src":"3383:6:26"},"nativeSrc":"3383:25:26","nodeType":"YulFunctionCall","src":"3383:25:26"},"variableNames":[{"name":"remainder","nativeSrc":"3370:9:26","nodeType":"YulIdentifier","src":"3370:9:26"}]},{"nativeSrc":"3490:41:26","nodeType":"YulAssignment","src":"3490:41:26","value":{"arguments":[{"name":"prod1","nativeSrc":"3503:5:26","nodeType":"YulIdentifier","src":"3503:5:26"},{"arguments":[{"name":"remainder","nativeSrc":"3513:9:26","nodeType":"YulIdentifier","src":"3513:9:26"},{"name":"prod0","nativeSrc":"3524:5:26","nodeType":"YulIdentifier","src":"3524:5:26"}],"functionName":{"name":"gt","nativeSrc":"3510:2:26","nodeType":"YulIdentifier","src":"3510:2:26"},"nativeSrc":"3510:20:26","nodeType":"YulFunctionCall","src":"3510:20:26"}],"functionName":{"name":"sub","nativeSrc":"3499:3:26","nodeType":"YulIdentifier","src":"3499:3:26"},"nativeSrc":"3499:32:26","nodeType":"YulFunctionCall","src":"3499:32:26"},"variableNames":[{"name":"prod1","nativeSrc":"3490:5:26","nodeType":"YulIdentifier","src":"3490:5:26"}]},{"nativeSrc":"3548:30:26","nodeType":"YulAssignment","src":"3548:30:26","value":{"arguments":[{"name":"prod0","nativeSrc":"3561:5:26","nodeType":"YulIdentifier","src":"3561:5:26"},{"name":"remainder","nativeSrc":"3568:9:26","nodeType":"YulIdentifier","src":"3568:9:26"}],"functionName":{"name":"sub","nativeSrc":"3557:3:26","nodeType":"YulIdentifier","src":"3557:3:26"},"nativeSrc":"3557:21:26","nodeType":"YulFunctionCall","src":"3557:21:26"},"variableNames":[{"name":"prod0","nativeSrc":"3548:5:26","nodeType":"YulIdentifier","src":"3548:5:26"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3867,"isOffset":false,"isSlot":false,"src":"3396:11:26","valueSize":1},{"declaration":3873,"isOffset":false,"isSlot":false,"src":"3524:5:26","valueSize":1},{"declaration":3873,"isOffset":false,"isSlot":false,"src":"3548:5:26","valueSize":1},{"declaration":3873,"isOffset":false,"isSlot":false,"src":"3561:5:26","valueSize":1},{"declaration":3876,"isOffset":false,"isSlot":false,"src":"3490:5:26","valueSize":1},{"declaration":3876,"isOffset":false,"isSlot":false,"src":"3503:5:26","valueSize":1},{"declaration":3896,"isOffset":false,"isSlot":false,"src":"3370:9:26","valueSize":1},{"declaration":3896,"isOffset":false,"isSlot":false,"src":"3513:9:26","valueSize":1},{"declaration":3896,"isOffset":false,"isSlot":false,"src":"3568:9:26","valueSize":1},{"declaration":3863,"isOffset":false,"isSlot":false,"src":"3390:1:26","valueSize":1},{"declaration":3865,"isOffset":false,"isSlot":false,"src":"3393:1:26","valueSize":1}],"id":3898,"nodeType":"InlineAssembly","src":"3292:300:26"},{"assignments":[3900],"declarations":[{"constant":false,"id":3900,"mutability":"mutable","name":"twos","nameLocation":"3907:4:26","nodeType":"VariableDeclaration","scope":3981,"src":"3899:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3899,"name":"uint256","nodeType":"ElementaryTypeName","src":"3899:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3908,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3901,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3867,"src":"3914:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"3929:12:26","subExpression":{"id":3902,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3867,"src":"3930:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":3904,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3944:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3929:16:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3906,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3928:18:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3914:32:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3899:47:26"},{"AST":{"nativeSrc":"3969:362:26","nodeType":"YulBlock","src":"3969:362:26","statements":[{"nativeSrc":"4034:37:26","nodeType":"YulAssignment","src":"4034:37:26","value":{"arguments":[{"name":"denominator","nativeSrc":"4053:11:26","nodeType":"YulIdentifier","src":"4053:11:26"},{"name":"twos","nativeSrc":"4066:4:26","nodeType":"YulIdentifier","src":"4066:4:26"}],"functionName":{"name":"div","nativeSrc":"4049:3:26","nodeType":"YulIdentifier","src":"4049:3:26"},"nativeSrc":"4049:22:26","nodeType":"YulFunctionCall","src":"4049:22:26"},"variableNames":[{"name":"denominator","nativeSrc":"4034:11:26","nodeType":"YulIdentifier","src":"4034:11:26"}]},{"nativeSrc":"4138:25:26","nodeType":"YulAssignment","src":"4138:25:26","value":{"arguments":[{"name":"prod0","nativeSrc":"4151:5:26","nodeType":"YulIdentifier","src":"4151:5:26"},{"name":"twos","nativeSrc":"4158:4:26","nodeType":"YulIdentifier","src":"4158:4:26"}],"functionName":{"name":"div","nativeSrc":"4147:3:26","nodeType":"YulIdentifier","src":"4147:3:26"},"nativeSrc":"4147:16:26","nodeType":"YulFunctionCall","src":"4147:16:26"},"variableNames":[{"name":"prod0","nativeSrc":"4138:5:26","nodeType":"YulIdentifier","src":"4138:5:26"}]},{"nativeSrc":"4278:39:26","nodeType":"YulAssignment","src":"4278:39:26","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4298:1:26","nodeType":"YulLiteral","src":"4298:1:26","type":"","value":"0"},{"name":"twos","nativeSrc":"4301:4:26","nodeType":"YulIdentifier","src":"4301:4:26"}],"functionName":{"name":"sub","nativeSrc":"4294:3:26","nodeType":"YulIdentifier","src":"4294:3:26"},"nativeSrc":"4294:12:26","nodeType":"YulFunctionCall","src":"4294:12:26"},{"name":"twos","nativeSrc":"4308:4:26","nodeType":"YulIdentifier","src":"4308:4:26"}],"functionName":{"name":"div","nativeSrc":"4290:3:26","nodeType":"YulIdentifier","src":"4290:3:26"},"nativeSrc":"4290:23:26","nodeType":"YulFunctionCall","src":"4290:23:26"},{"kind":"number","nativeSrc":"4315:1:26","nodeType":"YulLiteral","src":"4315:1:26","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"4286:3:26","nodeType":"YulIdentifier","src":"4286:3:26"},"nativeSrc":"4286:31:26","nodeType":"YulFunctionCall","src":"4286:31:26"},"variableNames":[{"name":"twos","nativeSrc":"4278:4:26","nodeType":"YulIdentifier","src":"4278:4:26"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3867,"isOffset":false,"isSlot":false,"src":"4034:11:26","valueSize":1},{"declaration":3867,"isOffset":false,"isSlot":false,"src":"4053:11:26","valueSize":1},{"declaration":3873,"isOffset":false,"isSlot":false,"src":"4138:5:26","valueSize":1},{"declaration":3873,"isOffset":false,"isSlot":false,"src":"4151:5:26","valueSize":1},{"declaration":3900,"isOffset":false,"isSlot":false,"src":"4066:4:26","valueSize":1},{"declaration":3900,"isOffset":false,"isSlot":false,"src":"4158:4:26","valueSize":1},{"declaration":3900,"isOffset":false,"isSlot":false,"src":"4278:4:26","valueSize":1},{"declaration":3900,"isOffset":false,"isSlot":false,"src":"4301:4:26","valueSize":1},{"declaration":3900,"isOffset":false,"isSlot":false,"src":"4308:4:26","valueSize":1}],"id":3909,"nodeType":"InlineAssembly","src":"3960:371:26"},{"expression":{"id":3914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3910,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3873,"src":"4397:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3911,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3876,"src":"4406:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3912,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3900,"src":"4414:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4406:12:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4397:21:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3915,"nodeType":"ExpressionStatement","src":"4397:21:26"},{"assignments":[3917],"declarations":[{"constant":false,"id":3917,"mutability":"mutable","name":"inverse","nameLocation":"4744:7:26","nodeType":"VariableDeclaration","scope":3981,"src":"4736:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3916,"name":"uint256","nodeType":"ElementaryTypeName","src":"4736:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3924,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":3918,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4755:1:26","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3919,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3867,"src":"4759:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4755:15:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3921,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4754:17:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":3922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4774:1:26","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"4754:21:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4736:39:26"},{"expression":{"id":3931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3925,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3917,"src":"4992:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5003:1:26","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3927,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3867,"src":"5007:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3928,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3917,"src":"5021:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5007:21:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5003:25:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4992:36:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3932,"nodeType":"ExpressionStatement","src":"4992:36:26"},{"expression":{"id":3939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3933,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3917,"src":"5061:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5072:1:26","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3935,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3867,"src":"5076:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3936,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3917,"src":"5090:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5076:21:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5072:25:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5061:36:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3940,"nodeType":"ExpressionStatement","src":"5061:36:26"},{"expression":{"id":3947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3941,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3917,"src":"5131:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3942,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5142:1:26","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3943,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3867,"src":"5146:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3944,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3917,"src":"5160:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5146:21:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5142:25:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5131:36:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3948,"nodeType":"ExpressionStatement","src":"5131:36:26"},{"expression":{"id":3955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3949,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3917,"src":"5201:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5212:1:26","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3951,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3867,"src":"5216:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3952,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3917,"src":"5230:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5216:21:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5212:25:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5201:36:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3956,"nodeType":"ExpressionStatement","src":"5201:36:26"},{"expression":{"id":3963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3957,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3917,"src":"5271:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5282:1:26","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3959,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3867,"src":"5286:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3960,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3917,"src":"5300:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5286:21:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5282:25:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5271:36:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3964,"nodeType":"ExpressionStatement","src":"5271:36:26"},{"expression":{"id":3971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3965,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3917,"src":"5342:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3966,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5353:1:26","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3967,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3867,"src":"5357:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3968,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3917,"src":"5371:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5357:21:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5353:25:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5342:36:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3972,"nodeType":"ExpressionStatement","src":"5342:36:26"},{"expression":{"id":3977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3973,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3870,"src":"5812:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3974,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3873,"src":"5821:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3975,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3917,"src":"5829:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5821:15:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5812:24:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3978,"nodeType":"ExpressionStatement","src":"5812:24:26"},{"expression":{"id":3979,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3870,"src":"5857:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3871,"id":3980,"nodeType":"Return","src":"5850:13:26"}]}]},"documentation":{"id":3861,"nodeType":"StructuredDocumentation","src":"1357:305:26","text":" @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."},"id":3983,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"1676:6:26","nodeType":"FunctionDefinition","parameters":{"id":3868,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3863,"mutability":"mutable","name":"x","nameLocation":"1691:1:26","nodeType":"VariableDeclaration","scope":3983,"src":"1683:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3862,"name":"uint256","nodeType":"ElementaryTypeName","src":"1683:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3865,"mutability":"mutable","name":"y","nameLocation":"1702:1:26","nodeType":"VariableDeclaration","scope":3983,"src":"1694:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3864,"name":"uint256","nodeType":"ElementaryTypeName","src":"1694:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3867,"mutability":"mutable","name":"denominator","nameLocation":"1713:11:26","nodeType":"VariableDeclaration","scope":3983,"src":"1705:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3866,"name":"uint256","nodeType":"ElementaryTypeName","src":"1705:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1682:43:26"},"returnParameters":{"id":3871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3870,"mutability":"mutable","name":"result","nameLocation":"1757:6:26","nodeType":"VariableDeclaration","scope":3983,"src":"1749:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3869,"name":"uint256","nodeType":"ElementaryTypeName","src":"1749:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1748:16:26"},"scope":4635,"src":"1667:4213:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4026,"nodeType":"Block","src":"6122:189:26","statements":[{"assignments":[3999],"declarations":[{"constant":false,"id":3999,"mutability":"mutable","name":"result","nameLocation":"6140:6:26","nodeType":"VariableDeclaration","scope":4026,"src":"6132:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3998,"name":"uint256","nodeType":"ElementaryTypeName","src":"6132:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4005,"initialValue":{"arguments":[{"id":4001,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3986,"src":"6156:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4002,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3988,"src":"6159:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4003,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3990,"src":"6162:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4000,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[3983,4027],"referencedDeclaration":3983,"src":"6149:6:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":4004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6149:25:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6132:42:26"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$3776","typeString":"enum Math.Rounding"},"id":4009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4006,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3993,"src":"6188:8:26","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3776","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":4007,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3776,"src":"6200:8:26","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$3776_$","typeString":"type(enum Math.Rounding)"}},"id":4008,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6209:2:26","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":3774,"src":"6200:11:26","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3776","typeString":"enum Math.Rounding"}},"src":"6188:23:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4011,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3986,"src":"6222:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4012,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3988,"src":"6225:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4013,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3990,"src":"6228:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4010,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"6215:6:26","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":4014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6215:25:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6243:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6215:29:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6188:56:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4023,"nodeType":"IfStatement","src":"6184:98:26","trueBody":{"id":4022,"nodeType":"Block","src":"6246:36:26","statements":[{"expression":{"id":4020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4018,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3999,"src":"6260:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":4019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6270:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6260:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4021,"nodeType":"ExpressionStatement","src":"6260:11:26"}]}},{"expression":{"id":4024,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3999,"src":"6298:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3997,"id":4025,"nodeType":"Return","src":"6291:13:26"}]},"documentation":{"id":3984,"nodeType":"StructuredDocumentation","src":"5886:121:26","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"id":4027,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"6021:6:26","nodeType":"FunctionDefinition","parameters":{"id":3994,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3986,"mutability":"mutable","name":"x","nameLocation":"6036:1:26","nodeType":"VariableDeclaration","scope":4027,"src":"6028:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3985,"name":"uint256","nodeType":"ElementaryTypeName","src":"6028:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3988,"mutability":"mutable","name":"y","nameLocation":"6047:1:26","nodeType":"VariableDeclaration","scope":4027,"src":"6039:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3987,"name":"uint256","nodeType":"ElementaryTypeName","src":"6039:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3990,"mutability":"mutable","name":"denominator","nameLocation":"6058:11:26","nodeType":"VariableDeclaration","scope":4027,"src":"6050:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3989,"name":"uint256","nodeType":"ElementaryTypeName","src":"6050:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3993,"mutability":"mutable","name":"rounding","nameLocation":"6080:8:26","nodeType":"VariableDeclaration","scope":4027,"src":"6071:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3776","typeString":"enum Math.Rounding"},"typeName":{"id":3992,"nodeType":"UserDefinedTypeName","pathNode":{"id":3991,"name":"Rounding","nameLocations":["6071:8:26"],"nodeType":"IdentifierPath","referencedDeclaration":3776,"src":"6071:8:26"},"referencedDeclaration":3776,"src":"6071:8:26","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3776","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"6027:62:26"},"returnParameters":{"id":3997,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3996,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4027,"src":"6113:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3995,"name":"uint256","nodeType":"ElementaryTypeName","src":"6113:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6112:9:26"},"scope":4635,"src":"6012:299:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4138,"nodeType":"Block","src":"6587:1585:26","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4035,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4030,"src":"6601:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6606:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6601:6:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4041,"nodeType":"IfStatement","src":"6597:45:26","trueBody":{"id":4040,"nodeType":"Block","src":"6609:33:26","statements":[{"expression":{"hexValue":"30","id":4038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6630:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":4034,"id":4039,"nodeType":"Return","src":"6623:8:26"}]}},{"assignments":[4043],"declarations":[{"constant":false,"id":4043,"mutability":"mutable","name":"result","nameLocation":"7329:6:26","nodeType":"VariableDeclaration","scope":4138,"src":"7321:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4042,"name":"uint256","nodeType":"ElementaryTypeName","src":"7321:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4052,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7338:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4046,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4030,"src":"7349:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4045,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[4307,4343],"referencedDeclaration":4307,"src":"7344:4:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":4047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7344:7:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7355:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7344:12:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4050,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7343:14:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7338:19:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7321:36:26"},{"id":4137,"nodeType":"UncheckedBlock","src":"7758:408:26","statements":[{"expression":{"id":4062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4053,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"7782:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4054,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"7792:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4055,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4030,"src":"7801:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4056,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"7805:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7801:10:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7792:19:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4059,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7791:21:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4060,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7816:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7791:26:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7782:35:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4063,"nodeType":"ExpressionStatement","src":"7782:35:26"},{"expression":{"id":4073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4064,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"7831:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4065,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"7841:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4066,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4030,"src":"7850:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4067,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"7854:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7850:10:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7841:19:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4070,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7840:21:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7865:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7840:26:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7831:35:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4074,"nodeType":"ExpressionStatement","src":"7831:35:26"},{"expression":{"id":4084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4075,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"7880:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4076,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"7890:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4077,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4030,"src":"7899:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4078,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"7903:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7899:10:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7890:19:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4081,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7889:21:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7914:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7889:26:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7880:35:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4085,"nodeType":"ExpressionStatement","src":"7880:35:26"},{"expression":{"id":4095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4086,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"7929:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4087,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"7939:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4088,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4030,"src":"7948:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4089,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"7952:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7948:10:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7939:19:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4092,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7938:21:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7963:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7938:26:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7929:35:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4096,"nodeType":"ExpressionStatement","src":"7929:35:26"},{"expression":{"id":4106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4097,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"7978:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4098,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"7988:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4099,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4030,"src":"7997:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4100,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"8001:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7997:10:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7988:19:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4103,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7987:21:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8012:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7987:26:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7978:35:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4107,"nodeType":"ExpressionStatement","src":"7978:35:26"},{"expression":{"id":4117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4108,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"8027:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4109,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"8037:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4110,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4030,"src":"8046:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4111,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"8050:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8046:10:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8037:19:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4114,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8036:21:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4115,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8061:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8036:26:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8027:35:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4118,"nodeType":"ExpressionStatement","src":"8027:35:26"},{"expression":{"id":4128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4119,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"8076:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4120,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"8086:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4121,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4030,"src":"8095:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4122,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"8099:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8095:10:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8086:19:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4125,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8085:21:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8110:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8085:26:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8076:35:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4129,"nodeType":"ExpressionStatement","src":"8076:35:26"},{"expression":{"arguments":[{"id":4131,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"8136:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4132,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4030,"src":"8144:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4133,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"8148:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8144:10:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4130,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3812,"src":"8132:3:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":4135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8132:23:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4034,"id":4136,"nodeType":"Return","src":"8125:30:26"}]}]},"documentation":{"id":4028,"nodeType":"StructuredDocumentation","src":"6317:208:26","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"id":4139,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"6539:4:26","nodeType":"FunctionDefinition","parameters":{"id":4031,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4030,"mutability":"mutable","name":"a","nameLocation":"6552:1:26","nodeType":"VariableDeclaration","scope":4139,"src":"6544:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4029,"name":"uint256","nodeType":"ElementaryTypeName","src":"6544:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6543:11:26"},"returnParameters":{"id":4034,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4033,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4139,"src":"6578:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4032,"name":"uint256","nodeType":"ElementaryTypeName","src":"6578:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6577:9:26"},"scope":4635,"src":"6530:1642:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4174,"nodeType":"Block","src":"8348:161:26","statements":[{"id":4173,"nodeType":"UncheckedBlock","src":"8358:145:26","statements":[{"assignments":[4151],"declarations":[{"constant":false,"id":4151,"mutability":"mutable","name":"result","nameLocation":"8390:6:26","nodeType":"VariableDeclaration","scope":4173,"src":"8382:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4150,"name":"uint256","nodeType":"ElementaryTypeName","src":"8382:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4155,"initialValue":{"arguments":[{"id":4153,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4142,"src":"8404:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4152,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[4139,4175],"referencedDeclaration":4139,"src":"8399:4:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":4154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8399:7:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8382:24:26"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4156,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4151,"src":"8427:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$3776","typeString":"enum Math.Rounding"},"id":4160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4157,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4145,"src":"8437:8:26","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3776","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":4158,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3776,"src":"8449:8:26","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$3776_$","typeString":"type(enum Math.Rounding)"}},"id":4159,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8458:2:26","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":3774,"src":"8449:11:26","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3776","typeString":"enum Math.Rounding"}},"src":"8437:23:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4161,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4151,"src":"8464:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4162,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4151,"src":"8473:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8464:15:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4164,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4142,"src":"8482:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8464:19:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8437:46:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":4168,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8490:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":4169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8437:54:26","trueExpression":{"hexValue":"31","id":4167,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8486:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":4170,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8436:56:26","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8427:65:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4149,"id":4172,"nodeType":"Return","src":"8420:72:26"}]}]},"documentation":{"id":4140,"nodeType":"StructuredDocumentation","src":"8178:89:26","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"id":4175,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"8281:4:26","nodeType":"FunctionDefinition","parameters":{"id":4146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4142,"mutability":"mutable","name":"a","nameLocation":"8294:1:26","nodeType":"VariableDeclaration","scope":4175,"src":"8286:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4141,"name":"uint256","nodeType":"ElementaryTypeName","src":"8286:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4145,"mutability":"mutable","name":"rounding","nameLocation":"8306:8:26","nodeType":"VariableDeclaration","scope":4175,"src":"8297:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3776","typeString":"enum Math.Rounding"},"typeName":{"id":4144,"nodeType":"UserDefinedTypeName","pathNode":{"id":4143,"name":"Rounding","nameLocations":["8297:8:26"],"nodeType":"IdentifierPath","referencedDeclaration":3776,"src":"8297:8:26"},"referencedDeclaration":3776,"src":"8297:8:26","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3776","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"8285:30:26"},"returnParameters":{"id":4149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4148,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4175,"src":"8339:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4147,"name":"uint256","nodeType":"ElementaryTypeName","src":"8339:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8338:9:26"},"scope":4635,"src":"8272:237:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4306,"nodeType":"Block","src":"8694:922:26","statements":[{"assignments":[4184],"declarations":[{"constant":false,"id":4184,"mutability":"mutable","name":"result","nameLocation":"8712:6:26","nodeType":"VariableDeclaration","scope":4306,"src":"8704:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4183,"name":"uint256","nodeType":"ElementaryTypeName","src":"8704:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4186,"initialValue":{"hexValue":"30","id":4185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8721:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8704:18:26"},{"id":4303,"nodeType":"UncheckedBlock","src":"8732:855:26","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4187,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4178,"src":"8760:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":4188,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8769:3:26","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8760:12:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4190,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8775:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8760:16:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4201,"nodeType":"IfStatement","src":"8756:99:26","trueBody":{"id":4200,"nodeType":"Block","src":"8778:77:26","statements":[{"expression":{"id":4194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4192,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4178,"src":"8796:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":4193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8806:3:26","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8796:13:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4195,"nodeType":"ExpressionStatement","src":"8796:13:26"},{"expression":{"id":4198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4196,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4184,"src":"8827:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":4197,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8837:3:26","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8827:13:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4199,"nodeType":"ExpressionStatement","src":"8827:13:26"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4202,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4178,"src":"8872:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":4203,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8881:2:26","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8872:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4205,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8886:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8872:15:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4216,"nodeType":"IfStatement","src":"8868:96:26","trueBody":{"id":4215,"nodeType":"Block","src":"8889:75:26","statements":[{"expression":{"id":4209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4207,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4178,"src":"8907:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":4208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8917:2:26","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8907:12:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4210,"nodeType":"ExpressionStatement","src":"8907:12:26"},{"expression":{"id":4213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4211,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4184,"src":"8937:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":4212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8947:2:26","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8937:12:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4214,"nodeType":"ExpressionStatement","src":"8937:12:26"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4217,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4178,"src":"8981:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":4218,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8990:2:26","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"8981:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4220,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8995:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8981:15:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4231,"nodeType":"IfStatement","src":"8977:96:26","trueBody":{"id":4230,"nodeType":"Block","src":"8998:75:26","statements":[{"expression":{"id":4224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4222,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4178,"src":"9016:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":4223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9026:2:26","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"9016:12:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4225,"nodeType":"ExpressionStatement","src":"9016:12:26"},{"expression":{"id":4228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4226,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4184,"src":"9046:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":4227,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9056:2:26","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"9046:12:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4229,"nodeType":"ExpressionStatement","src":"9046:12:26"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4232,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4178,"src":"9090:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":4233,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9099:2:26","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"9090:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4235,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9104:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9090:15:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4246,"nodeType":"IfStatement","src":"9086:96:26","trueBody":{"id":4245,"nodeType":"Block","src":"9107:75:26","statements":[{"expression":{"id":4239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4237,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4178,"src":"9125:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":4238,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9135:2:26","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"9125:12:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4240,"nodeType":"ExpressionStatement","src":"9125:12:26"},{"expression":{"id":4243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4241,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4184,"src":"9155:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":4242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9165:2:26","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"9155:12:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4244,"nodeType":"ExpressionStatement","src":"9155:12:26"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4247,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4178,"src":"9199:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":4248,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9208:1:26","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9199:10:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4250,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9212:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9199:14:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4261,"nodeType":"IfStatement","src":"9195:93:26","trueBody":{"id":4260,"nodeType":"Block","src":"9215:73:26","statements":[{"expression":{"id":4254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4252,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4178,"src":"9233:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":4253,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9243:1:26","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9233:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4255,"nodeType":"ExpressionStatement","src":"9233:11:26"},{"expression":{"id":4258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4256,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4184,"src":"9262:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":4257,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9272:1:26","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9262:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4259,"nodeType":"ExpressionStatement","src":"9262:11:26"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4262,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4178,"src":"9305:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":4263,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9314:1:26","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9305:10:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9318:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9305:14:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4276,"nodeType":"IfStatement","src":"9301:93:26","trueBody":{"id":4275,"nodeType":"Block","src":"9321:73:26","statements":[{"expression":{"id":4269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4267,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4178,"src":"9339:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":4268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9349:1:26","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9339:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4270,"nodeType":"ExpressionStatement","src":"9339:11:26"},{"expression":{"id":4273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4271,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4184,"src":"9368:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":4272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9378:1:26","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9368:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4274,"nodeType":"ExpressionStatement","src":"9368:11:26"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4277,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4178,"src":"9411:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":4278,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9420:1:26","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9411:10:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4280,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9424:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9411:14:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4291,"nodeType":"IfStatement","src":"9407:93:26","trueBody":{"id":4290,"nodeType":"Block","src":"9427:73:26","statements":[{"expression":{"id":4284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4282,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4178,"src":"9445:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":4283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9455:1:26","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9445:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4285,"nodeType":"ExpressionStatement","src":"9445:11:26"},{"expression":{"id":4288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4286,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4184,"src":"9474:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":4287,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9484:1:26","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9474:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4289,"nodeType":"ExpressionStatement","src":"9474:11:26"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4292,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4178,"src":"9517:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4293,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9526:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9517:10:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4295,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9530:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9517:14:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4302,"nodeType":"IfStatement","src":"9513:64:26","trueBody":{"id":4301,"nodeType":"Block","src":"9533:44:26","statements":[{"expression":{"id":4299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4297,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4184,"src":"9551:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":4298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9561:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9551:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4300,"nodeType":"ExpressionStatement","src":"9551:11:26"}]}}]},{"expression":{"id":4304,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4184,"src":"9603:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4182,"id":4305,"nodeType":"Return","src":"9596:13:26"}]},"documentation":{"id":4176,"nodeType":"StructuredDocumentation","src":"8515:113:26","text":" @dev Return the log in base 2, rounded down, of a positive value.\n Returns 0 if given 0."},"id":4307,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"8642:4:26","nodeType":"FunctionDefinition","parameters":{"id":4179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4178,"mutability":"mutable","name":"value","nameLocation":"8655:5:26","nodeType":"VariableDeclaration","scope":4307,"src":"8647:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4177,"name":"uint256","nodeType":"ElementaryTypeName","src":"8647:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8646:15:26"},"returnParameters":{"id":4182,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4181,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4307,"src":"8685:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4180,"name":"uint256","nodeType":"ElementaryTypeName","src":"8685:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8684:9:26"},"scope":4635,"src":"8633:983:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4342,"nodeType":"Block","src":"9849:165:26","statements":[{"id":4341,"nodeType":"UncheckedBlock","src":"9859:149:26","statements":[{"assignments":[4319],"declarations":[{"constant":false,"id":4319,"mutability":"mutable","name":"result","nameLocation":"9891:6:26","nodeType":"VariableDeclaration","scope":4341,"src":"9883:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4318,"name":"uint256","nodeType":"ElementaryTypeName","src":"9883:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4323,"initialValue":{"arguments":[{"id":4321,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4310,"src":"9905:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4320,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[4307,4343],"referencedDeclaration":4307,"src":"9900:4:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":4322,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9900:11:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9883:28:26"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4324,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4319,"src":"9932:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$3776","typeString":"enum Math.Rounding"},"id":4328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4325,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4313,"src":"9942:8:26","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3776","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":4326,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3776,"src":"9954:8:26","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$3776_$","typeString":"type(enum Math.Rounding)"}},"id":4327,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9963:2:26","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":3774,"src":"9954:11:26","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3776","typeString":"enum Math.Rounding"}},"src":"9942:23:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9969:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":4330,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4319,"src":"9974:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9969:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4332,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4310,"src":"9983:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9969:19:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9942:46:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":4336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9995:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":4337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9942:54:26","trueExpression":{"hexValue":"31","id":4335,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9991:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":4338,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9941:56:26","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"9932:65:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4317,"id":4340,"nodeType":"Return","src":"9925:72:26"}]}]},"documentation":{"id":4308,"nodeType":"StructuredDocumentation","src":"9622:142:26","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":4343,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"9778:4:26","nodeType":"FunctionDefinition","parameters":{"id":4314,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4310,"mutability":"mutable","name":"value","nameLocation":"9791:5:26","nodeType":"VariableDeclaration","scope":4343,"src":"9783:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4309,"name":"uint256","nodeType":"ElementaryTypeName","src":"9783:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4313,"mutability":"mutable","name":"rounding","nameLocation":"9807:8:26","nodeType":"VariableDeclaration","scope":4343,"src":"9798:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3776","typeString":"enum Math.Rounding"},"typeName":{"id":4312,"nodeType":"UserDefinedTypeName","pathNode":{"id":4311,"name":"Rounding","nameLocations":["9798:8:26"],"nodeType":"IdentifierPath","referencedDeclaration":3776,"src":"9798:8:26"},"referencedDeclaration":3776,"src":"9798:8:26","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3776","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"9782:34:26"},"returnParameters":{"id":4317,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4316,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4343,"src":"9840:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4315,"name":"uint256","nodeType":"ElementaryTypeName","src":"9840:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9839:9:26"},"scope":4635,"src":"9769:245:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4471,"nodeType":"Block","src":"10201:854:26","statements":[{"assignments":[4352],"declarations":[{"constant":false,"id":4352,"mutability":"mutable","name":"result","nameLocation":"10219:6:26","nodeType":"VariableDeclaration","scope":4471,"src":"10211:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4351,"name":"uint256","nodeType":"ElementaryTypeName","src":"10211:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4354,"initialValue":{"hexValue":"30","id":4353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10228:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10211:18:26"},{"id":4468,"nodeType":"UncheckedBlock","src":"10239:787:26","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4355,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4346,"src":"10267:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":4358,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10276:2:26","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":4357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10282:2:26","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10276:8:26","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"10267:17:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4371,"nodeType":"IfStatement","src":"10263:103:26","trueBody":{"id":4370,"nodeType":"Block","src":"10286:80:26","statements":[{"expression":{"id":4364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4360,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4346,"src":"10304:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":4363,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10313:2:26","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":4362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10319:2:26","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10313:8:26","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"10304:17:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4365,"nodeType":"ExpressionStatement","src":"10304:17:26"},{"expression":{"id":4368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4366,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4352,"src":"10339:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":4367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10349:2:26","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10339:12:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4369,"nodeType":"ExpressionStatement","src":"10339:12:26"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4372,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4346,"src":"10383:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":4375,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4373,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10392:2:26","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":4374,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10398:2:26","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10392:8:26","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"10383:17:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4388,"nodeType":"IfStatement","src":"10379:103:26","trueBody":{"id":4387,"nodeType":"Block","src":"10402:80:26","statements":[{"expression":{"id":4381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4377,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4346,"src":"10420:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":4380,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4378,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10429:2:26","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":4379,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10435:2:26","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10429:8:26","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"10420:17:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4382,"nodeType":"ExpressionStatement","src":"10420:17:26"},{"expression":{"id":4385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4383,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4352,"src":"10455:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":4384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10465:2:26","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10455:12:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4386,"nodeType":"ExpressionStatement","src":"10455:12:26"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4389,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4346,"src":"10499:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":4392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4390,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10508:2:26","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":4391,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10514:2:26","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10508:8:26","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"10499:17:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4405,"nodeType":"IfStatement","src":"10495:103:26","trueBody":{"id":4404,"nodeType":"Block","src":"10518:80:26","statements":[{"expression":{"id":4398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4346,"src":"10536:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":4397,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10545:2:26","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":4396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10551:2:26","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10545:8:26","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"10536:17:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4399,"nodeType":"ExpressionStatement","src":"10536:17:26"},{"expression":{"id":4402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4400,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4352,"src":"10571:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":4401,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10581:2:26","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10571:12:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4403,"nodeType":"ExpressionStatement","src":"10571:12:26"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4406,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4346,"src":"10615:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":4409,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10624:2:26","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":4408,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10630:1:26","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10624:7:26","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"10615:16:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4422,"nodeType":"IfStatement","src":"10611:100:26","trueBody":{"id":4421,"nodeType":"Block","src":"10633:78:26","statements":[{"expression":{"id":4415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4411,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4346,"src":"10651:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":4414,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10660:2:26","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":4413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10666:1:26","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10660:7:26","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"10651:16:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4416,"nodeType":"ExpressionStatement","src":"10651:16:26"},{"expression":{"id":4419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4417,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4352,"src":"10685:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":4418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10695:1:26","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10685:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4420,"nodeType":"ExpressionStatement","src":"10685:11:26"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4423,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4346,"src":"10728:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":4426,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10737:2:26","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":4425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10743:1:26","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10737:7:26","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"10728:16:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4439,"nodeType":"IfStatement","src":"10724:100:26","trueBody":{"id":4438,"nodeType":"Block","src":"10746:78:26","statements":[{"expression":{"id":4432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4428,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4346,"src":"10764:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":4431,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10773:2:26","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":4430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10779:1:26","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10773:7:26","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"10764:16:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4433,"nodeType":"ExpressionStatement","src":"10764:16:26"},{"expression":{"id":4436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4434,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4352,"src":"10798:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":4435,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10808:1:26","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10798:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4437,"nodeType":"ExpressionStatement","src":"10798:11:26"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4440,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4346,"src":"10841:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":4443,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10850:2:26","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":4442,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10856:1:26","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10850:7:26","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"10841:16:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4456,"nodeType":"IfStatement","src":"10837:100:26","trueBody":{"id":4455,"nodeType":"Block","src":"10859:78:26","statements":[{"expression":{"id":4449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4445,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4346,"src":"10877:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":4448,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4446,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10886:2:26","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":4447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10892:1:26","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10886:7:26","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"10877:16:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4450,"nodeType":"ExpressionStatement","src":"10877:16:26"},{"expression":{"id":4453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4451,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4352,"src":"10911:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":4452,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10921:1:26","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10911:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4454,"nodeType":"ExpressionStatement","src":"10911:11:26"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4457,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4346,"src":"10954:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":4460,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10963:2:26","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":4459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10969:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10963:7:26","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"10954:16:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4467,"nodeType":"IfStatement","src":"10950:66:26","trueBody":{"id":4466,"nodeType":"Block","src":"10972:44:26","statements":[{"expression":{"id":4464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4462,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4352,"src":"10990:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":4463,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11000:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10990:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4465,"nodeType":"ExpressionStatement","src":"10990:11:26"}]}}]},{"expression":{"id":4469,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4352,"src":"11042:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4350,"id":4470,"nodeType":"Return","src":"11035:13:26"}]},"documentation":{"id":4344,"nodeType":"StructuredDocumentation","src":"10020:114:26","text":" @dev Return the log in base 10, rounded down, of a positive value.\n Returns 0 if given 0."},"id":4472,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"10148:5:26","nodeType":"FunctionDefinition","parameters":{"id":4347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4346,"mutability":"mutable","name":"value","nameLocation":"10162:5:26","nodeType":"VariableDeclaration","scope":4472,"src":"10154:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4345,"name":"uint256","nodeType":"ElementaryTypeName","src":"10154:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10153:15:26"},"returnParameters":{"id":4350,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4349,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4472,"src":"10192:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4348,"name":"uint256","nodeType":"ElementaryTypeName","src":"10192:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10191:9:26"},"scope":4635,"src":"10139:916:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4507,"nodeType":"Block","src":"11290:167:26","statements":[{"id":4506,"nodeType":"UncheckedBlock","src":"11300:151:26","statements":[{"assignments":[4484],"declarations":[{"constant":false,"id":4484,"mutability":"mutable","name":"result","nameLocation":"11332:6:26","nodeType":"VariableDeclaration","scope":4506,"src":"11324:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4483,"name":"uint256","nodeType":"ElementaryTypeName","src":"11324:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4488,"initialValue":{"arguments":[{"id":4486,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4475,"src":"11347:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4485,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[4472,4508],"referencedDeclaration":4472,"src":"11341:5:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":4487,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11341:12:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11324:29:26"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4489,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4484,"src":"11374:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$3776","typeString":"enum Math.Rounding"},"id":4493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4490,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4478,"src":"11384:8:26","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3776","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":4491,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3776,"src":"11396:8:26","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$3776_$","typeString":"type(enum Math.Rounding)"}},"id":4492,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11405:2:26","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":3774,"src":"11396:11:26","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3776","typeString":"enum Math.Rounding"}},"src":"11384:23:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11411:2:26","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":4495,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4484,"src":"11417:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11411:12:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4497,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4475,"src":"11426:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11411:20:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11384:47:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":4501,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11438:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":4502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11384:55:26","trueExpression":{"hexValue":"31","id":4500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11434:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":4503,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11383:57:26","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11374:66:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4482,"id":4505,"nodeType":"Return","src":"11367:73:26"}]}]},"documentation":{"id":4473,"nodeType":"StructuredDocumentation","src":"11061:143:26","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":4508,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"11218:5:26","nodeType":"FunctionDefinition","parameters":{"id":4479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4475,"mutability":"mutable","name":"value","nameLocation":"11232:5:26","nodeType":"VariableDeclaration","scope":4508,"src":"11224:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4474,"name":"uint256","nodeType":"ElementaryTypeName","src":"11224:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4478,"mutability":"mutable","name":"rounding","nameLocation":"11248:8:26","nodeType":"VariableDeclaration","scope":4508,"src":"11239:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3776","typeString":"enum Math.Rounding"},"typeName":{"id":4477,"nodeType":"UserDefinedTypeName","pathNode":{"id":4476,"name":"Rounding","nameLocations":["11239:8:26"],"nodeType":"IdentifierPath","referencedDeclaration":3776,"src":"11239:8:26"},"referencedDeclaration":3776,"src":"11239:8:26","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3776","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"11223:34:26"},"returnParameters":{"id":4482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4481,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4508,"src":"11281:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4480,"name":"uint256","nodeType":"ElementaryTypeName","src":"11281:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11280:9:26"},"scope":4635,"src":"11209:248:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4594,"nodeType":"Block","src":"11771:600:26","statements":[{"assignments":[4517],"declarations":[{"constant":false,"id":4517,"mutability":"mutable","name":"result","nameLocation":"11789:6:26","nodeType":"VariableDeclaration","scope":4594,"src":"11781:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4516,"name":"uint256","nodeType":"ElementaryTypeName","src":"11781:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4519,"initialValue":{"hexValue":"30","id":4518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11798:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11781:18:26"},{"id":4591,"nodeType":"UncheckedBlock","src":"11809:533:26","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4520,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4511,"src":"11837:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":4521,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11846:3:26","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"11837:12:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4523,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11852:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11837:16:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4534,"nodeType":"IfStatement","src":"11833:98:26","trueBody":{"id":4533,"nodeType":"Block","src":"11855:76:26","statements":[{"expression":{"id":4527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4525,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4511,"src":"11873:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":4526,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11883:3:26","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"11873:13:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4528,"nodeType":"ExpressionStatement","src":"11873:13:26"},{"expression":{"id":4531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4529,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"11904:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":4530,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11914:2:26","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11904:12:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4532,"nodeType":"ExpressionStatement","src":"11904:12:26"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4535,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4511,"src":"11948:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":4536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11957:2:26","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11948:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4538,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11962:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11948:15:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4549,"nodeType":"IfStatement","src":"11944:95:26","trueBody":{"id":4548,"nodeType":"Block","src":"11965:74:26","statements":[{"expression":{"id":4542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4540,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4511,"src":"11983:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":4541,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11993:2:26","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11983:12:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4543,"nodeType":"ExpressionStatement","src":"11983:12:26"},{"expression":{"id":4546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4544,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"12013:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":4545,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12023:1:26","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12013:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4547,"nodeType":"ExpressionStatement","src":"12013:11:26"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4550,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4511,"src":"12056:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":4551,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12065:2:26","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12056:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12070:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12056:15:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4564,"nodeType":"IfStatement","src":"12052:95:26","trueBody":{"id":4563,"nodeType":"Block","src":"12073:74:26","statements":[{"expression":{"id":4557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4555,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4511,"src":"12091:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":4556,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12101:2:26","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12091:12:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4558,"nodeType":"ExpressionStatement","src":"12091:12:26"},{"expression":{"id":4561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4559,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"12121:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":4560,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12131:1:26","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"12121:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4562,"nodeType":"ExpressionStatement","src":"12121:11:26"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4565,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4511,"src":"12164:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":4566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12173:2:26","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12164:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12178:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12164:15:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4579,"nodeType":"IfStatement","src":"12160:95:26","trueBody":{"id":4578,"nodeType":"Block","src":"12181:74:26","statements":[{"expression":{"id":4572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4570,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4511,"src":"12199:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":4571,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12209:2:26","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12199:12:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4573,"nodeType":"ExpressionStatement","src":"12199:12:26"},{"expression":{"id":4576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4574,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"12229:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":4575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12239:1:26","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"12229:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4577,"nodeType":"ExpressionStatement","src":"12229:11:26"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4580,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4511,"src":"12272:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":4581,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12281:1:26","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12272:10:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12285:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12272:14:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4590,"nodeType":"IfStatement","src":"12268:64:26","trueBody":{"id":4589,"nodeType":"Block","src":"12288:44:26","statements":[{"expression":{"id":4587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4585,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"12306:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":4586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12316:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12306:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4588,"nodeType":"ExpressionStatement","src":"12306:11:26"}]}}]},{"expression":{"id":4592,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"12358:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4515,"id":4593,"nodeType":"Return","src":"12351:13:26"}]},"documentation":{"id":4509,"nodeType":"StructuredDocumentation","src":"11463:240:26","text":" @dev Return the log in base 256, rounded down, of a positive value.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"id":4595,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"11717:6:26","nodeType":"FunctionDefinition","parameters":{"id":4512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4511,"mutability":"mutable","name":"value","nameLocation":"11732:5:26","nodeType":"VariableDeclaration","scope":4595,"src":"11724:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4510,"name":"uint256","nodeType":"ElementaryTypeName","src":"11724:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11723:15:26"},"returnParameters":{"id":4515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4514,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4595,"src":"11762:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4513,"name":"uint256","nodeType":"ElementaryTypeName","src":"11762:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11761:9:26"},"scope":4635,"src":"11708:663:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4633,"nodeType":"Block","src":"12608:174:26","statements":[{"id":4632,"nodeType":"UncheckedBlock","src":"12618:158:26","statements":[{"assignments":[4607],"declarations":[{"constant":false,"id":4607,"mutability":"mutable","name":"result","nameLocation":"12650:6:26","nodeType":"VariableDeclaration","scope":4632,"src":"12642:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4606,"name":"uint256","nodeType":"ElementaryTypeName","src":"12642:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4611,"initialValue":{"arguments":[{"id":4609,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4598,"src":"12666:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4608,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[4595,4634],"referencedDeclaration":4595,"src":"12659:6:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":4610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12659:13:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12642:30:26"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4612,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4607,"src":"12693:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$3776","typeString":"enum Math.Rounding"},"id":4616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4613,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4601,"src":"12703:8:26","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3776","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":4614,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3776,"src":"12715:8:26","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$3776_$","typeString":"type(enum Math.Rounding)"}},"id":4615,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12724:2:26","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":3774,"src":"12715:11:26","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3776","typeString":"enum Math.Rounding"}},"src":"12703:23:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4617,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12730:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4618,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4607,"src":"12736:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":4619,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12746:1:26","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"12736:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4621,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12735:13:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12730:18:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4623,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4598,"src":"12751:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12730:26:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12703:53:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":4627,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12763:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":4628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"12703:61:26","trueExpression":{"hexValue":"31","id":4626,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12759:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":4629,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12702:63:26","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"12693:72:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4605,"id":4631,"nodeType":"Return","src":"12686:79:26"}]}]},"documentation":{"id":4596,"nodeType":"StructuredDocumentation","src":"12377:144:26","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":4634,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"12535:6:26","nodeType":"FunctionDefinition","parameters":{"id":4602,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4598,"mutability":"mutable","name":"value","nameLocation":"12550:5:26","nodeType":"VariableDeclaration","scope":4634,"src":"12542:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4597,"name":"uint256","nodeType":"ElementaryTypeName","src":"12542:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4601,"mutability":"mutable","name":"rounding","nameLocation":"12566:8:26","nodeType":"VariableDeclaration","scope":4634,"src":"12557:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3776","typeString":"enum Math.Rounding"},"typeName":{"id":4600,"nodeType":"UserDefinedTypeName","pathNode":{"id":4599,"name":"Rounding","nameLocations":["12557:8:26"],"nodeType":"IdentifierPath","referencedDeclaration":3776,"src":"12557:8:26"},"referencedDeclaration":3776,"src":"12557:8:26","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3776","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"12541:34:26"},"returnParameters":{"id":4605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4604,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4634,"src":"12599:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4603,"name":"uint256","nodeType":"ElementaryTypeName","src":"12599:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12598:9:26"},"scope":4635,"src":"12526:256:26","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":4636,"src":"202:12582:26","usedErrors":[],"usedEvents":[]}],"src":"103:12682:26"},"id":26},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/SignedMath.sol","exportedSymbols":{"SignedMath":[4740]},"id":4741,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4637,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"109:23:27"},{"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":4638,"nodeType":"StructuredDocumentation","src":"134:80:27","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"id":4740,"linearizedBaseContracts":[4740],"name":"SignedMath","nameLocation":"223:10:27","nodeType":"ContractDefinition","nodes":[{"body":{"id":4655,"nodeType":"Block","src":"375:37:27","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4648,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4641,"src":"392:1:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":4649,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4643,"src":"396:1:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"392:5:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":4652,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4643,"src":"404:1:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"392:13:27","trueExpression":{"id":4651,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4641,"src":"400:1:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":4647,"id":4654,"nodeType":"Return","src":"385:20:27"}]},"documentation":{"id":4639,"nodeType":"StructuredDocumentation","src":"240:66:27","text":" @dev Returns the largest of two signed numbers."},"id":4656,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"320:3:27","nodeType":"FunctionDefinition","parameters":{"id":4644,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4641,"mutability":"mutable","name":"a","nameLocation":"331:1:27","nodeType":"VariableDeclaration","scope":4656,"src":"324:8:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4640,"name":"int256","nodeType":"ElementaryTypeName","src":"324:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":4643,"mutability":"mutable","name":"b","nameLocation":"341:1:27","nodeType":"VariableDeclaration","scope":4656,"src":"334:8:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4642,"name":"int256","nodeType":"ElementaryTypeName","src":"334:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"323:20:27"},"returnParameters":{"id":4647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4646,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4656,"src":"367:6:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4645,"name":"int256","nodeType":"ElementaryTypeName","src":"367:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"366:8:27"},"scope":4740,"src":"311:101:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4673,"nodeType":"Block","src":"554:37:27","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4666,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4659,"src":"571:1:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4667,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4661,"src":"575:1:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"571:5:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":4670,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4661,"src":"583:1:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"571:13:27","trueExpression":{"id":4669,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4659,"src":"579:1:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":4665,"id":4672,"nodeType":"Return","src":"564:20:27"}]},"documentation":{"id":4657,"nodeType":"StructuredDocumentation","src":"418:67:27","text":" @dev Returns the smallest of two signed numbers."},"id":4674,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"499:3:27","nodeType":"FunctionDefinition","parameters":{"id":4662,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4659,"mutability":"mutable","name":"a","nameLocation":"510:1:27","nodeType":"VariableDeclaration","scope":4674,"src":"503:8:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4658,"name":"int256","nodeType":"ElementaryTypeName","src":"503:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":4661,"mutability":"mutable","name":"b","nameLocation":"520:1:27","nodeType":"VariableDeclaration","scope":4674,"src":"513:8:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4660,"name":"int256","nodeType":"ElementaryTypeName","src":"513:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"502:20:27"},"returnParameters":{"id":4665,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4664,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4674,"src":"546:6:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4663,"name":"int256","nodeType":"ElementaryTypeName","src":"546:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"545:8:27"},"scope":4740,"src":"490:101:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4717,"nodeType":"Block","src":"796:162:27","statements":[{"assignments":[4685],"declarations":[{"constant":false,"id":4685,"mutability":"mutable","name":"x","nameLocation":"865:1:27","nodeType":"VariableDeclaration","scope":4717,"src":"858:8:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4684,"name":"int256","nodeType":"ElementaryTypeName","src":"858:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4698,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4686,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4677,"src":"870:1:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":4687,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4679,"src":"874:1:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"870:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4689,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"869:7:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4690,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4677,"src":"881:1:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":4691,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4679,"src":"885:1:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"881:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4693,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"880:7:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4694,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"891:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"880:12:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4696,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"879:14:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"869:24:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"858:35:27"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4699,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4685,"src":"910:1:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4704,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4685,"src":"930:1:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4703,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"922:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4702,"name":"uint256","nodeType":"ElementaryTypeName","src":"922:7:27","typeDescriptions":{}}},"id":4705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"922:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":4706,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"936:3:27","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"922:17:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4701,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"915:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":4700,"name":"int256","nodeType":"ElementaryTypeName","src":"915:6:27","typeDescriptions":{}}},"id":4708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"915:25:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4709,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4677,"src":"944:1:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":4710,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4679,"src":"948:1:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"944:5:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4712,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"943:7:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"915:35:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4714,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"914:37:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"910:41:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":4683,"id":4716,"nodeType":"Return","src":"903:48:27"}]},"documentation":{"id":4675,"nodeType":"StructuredDocumentation","src":"597:126:27","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"id":4718,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"737:7:27","nodeType":"FunctionDefinition","parameters":{"id":4680,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4677,"mutability":"mutable","name":"a","nameLocation":"752:1:27","nodeType":"VariableDeclaration","scope":4718,"src":"745:8:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4676,"name":"int256","nodeType":"ElementaryTypeName","src":"745:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":4679,"mutability":"mutable","name":"b","nameLocation":"762:1:27","nodeType":"VariableDeclaration","scope":4718,"src":"755:8:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4678,"name":"int256","nodeType":"ElementaryTypeName","src":"755:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"744:20:27"},"returnParameters":{"id":4683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4682,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4718,"src":"788:6:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4681,"name":"int256","nodeType":"ElementaryTypeName","src":"788:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"787:8:27"},"scope":4740,"src":"728:230:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4738,"nodeType":"Block","src":"1102:158:27","statements":[{"id":4737,"nodeType":"UncheckedBlock","src":"1112:142:27","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4728,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4721,"src":"1227:1:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":4729,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1232:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1227:6:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":4733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"1240:2:27","subExpression":{"id":4732,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4721,"src":"1241:1:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1227:15:27","trueExpression":{"id":4731,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4721,"src":"1236:1:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4727,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1219:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4726,"name":"uint256","nodeType":"ElementaryTypeName","src":"1219:7:27","typeDescriptions":{}}},"id":4735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1219:24:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4725,"id":4736,"nodeType":"Return","src":"1212:31:27"}]}]},"documentation":{"id":4719,"nodeType":"StructuredDocumentation","src":"964:78:27","text":" @dev Returns the absolute unsigned value of a signed value."},"id":4739,"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"1056:3:27","nodeType":"FunctionDefinition","parameters":{"id":4722,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4721,"mutability":"mutable","name":"n","nameLocation":"1067:1:27","nodeType":"VariableDeclaration","scope":4739,"src":"1060:8:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4720,"name":"int256","nodeType":"ElementaryTypeName","src":"1060:6:27","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1059:10:27"},"returnParameters":{"id":4725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4724,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4739,"src":"1093:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4723,"name":"uint256","nodeType":"ElementaryTypeName","src":"1093:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1092:9:27"},"scope":4740,"src":"1047:213:27","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":4741,"src":"215:1047:27","usedErrors":[],"usedEvents":[]}],"src":"109:1154:27"},"id":27},"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol":{"ast":{"absolutePath":"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol","exportedSymbols":{"IAccessControl":[1483],"IAccessControlManagerV8":[4785]},"id":4786,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":4742,"literals":["solidity","^","0.8",".25"],"nodeType":"PragmaDirective","src":"41:24:28"},{"absolutePath":"@openzeppelin/contracts/access/IAccessControl.sol","file":"@openzeppelin/contracts/access/IAccessControl.sol","id":4743,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4786,"sourceUnit":1484,"src":"67:59:28","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":4745,"name":"IAccessControl","nameLocations":["299:14:28"],"nodeType":"IdentifierPath","referencedDeclaration":1483,"src":"299:14:28"},"id":4746,"nodeType":"InheritanceSpecifier","src":"299:14:28"}],"canonicalName":"IAccessControlManagerV8","contractDependencies":[],"contractKind":"interface","documentation":{"id":4744,"nodeType":"StructuredDocumentation","src":"128:133:28","text":" @title IAccessControlManagerV8\n @author Venus\n @notice Interface implemented by the `AccessControlManagerV8` contract."},"fullyImplemented":false,"id":4785,"linearizedBaseContracts":[4785,1483],"name":"IAccessControlManagerV8","nameLocation":"272:23:28","nodeType":"ContractDefinition","nodes":[{"functionSelector":"584f6b60","id":4755,"implemented":false,"kind":"function","modifiers":[],"name":"giveCallPermission","nameLocation":"329:18:28","nodeType":"FunctionDefinition","parameters":{"id":4753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4748,"mutability":"mutable","name":"contractAddress","nameLocation":"356:15:28","nodeType":"VariableDeclaration","scope":4755,"src":"348:23:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4747,"name":"address","nodeType":"ElementaryTypeName","src":"348:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4750,"mutability":"mutable","name":"functionSig","nameLocation":"389:11:28","nodeType":"VariableDeclaration","scope":4755,"src":"373:27:28","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":4749,"name":"string","nodeType":"ElementaryTypeName","src":"373:6:28","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":4752,"mutability":"mutable","name":"accountToPermit","nameLocation":"410:15:28","nodeType":"VariableDeclaration","scope":4755,"src":"402:23:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4751,"name":"address","nodeType":"ElementaryTypeName","src":"402:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"347:79:28"},"returnParameters":{"id":4754,"nodeType":"ParameterList","parameters":[],"src":"435:0:28"},"scope":4785,"src":"320:116:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"545f7a32","id":4764,"implemented":false,"kind":"function","modifiers":[],"name":"revokeCallPermission","nameLocation":"451:20:28","nodeType":"FunctionDefinition","parameters":{"id":4762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4757,"mutability":"mutable","name":"contractAddress","nameLocation":"489:15:28","nodeType":"VariableDeclaration","scope":4764,"src":"481:23:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4756,"name":"address","nodeType":"ElementaryTypeName","src":"481:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4759,"mutability":"mutable","name":"functionSig","nameLocation":"530:11:28","nodeType":"VariableDeclaration","scope":4764,"src":"514:27:28","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":4758,"name":"string","nodeType":"ElementaryTypeName","src":"514:6:28","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":4761,"mutability":"mutable","name":"accountToRevoke","nameLocation":"559:15:28","nodeType":"VariableDeclaration","scope":4764,"src":"551:23:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4760,"name":"address","nodeType":"ElementaryTypeName","src":"551:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"471:109:28"},"returnParameters":{"id":4763,"nodeType":"ParameterList","parameters":[],"src":"589:0:28"},"scope":4785,"src":"442:148:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"18c5e8ab","id":4773,"implemented":false,"kind":"function","modifiers":[],"name":"isAllowedToCall","nameLocation":"605:15:28","nodeType":"FunctionDefinition","parameters":{"id":4769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4766,"mutability":"mutable","name":"account","nameLocation":"629:7:28","nodeType":"VariableDeclaration","scope":4773,"src":"621:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4765,"name":"address","nodeType":"ElementaryTypeName","src":"621:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4768,"mutability":"mutable","name":"functionSig","nameLocation":"654:11:28","nodeType":"VariableDeclaration","scope":4773,"src":"638:27:28","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":4767,"name":"string","nodeType":"ElementaryTypeName","src":"638:6:28","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"620:46:28"},"returnParameters":{"id":4772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4771,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4773,"src":"690:4:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4770,"name":"bool","nodeType":"ElementaryTypeName","src":"690:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"689:6:28"},"scope":4785,"src":"596:100:28","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"82bfd0f0","id":4784,"implemented":false,"kind":"function","modifiers":[],"name":"hasPermission","nameLocation":"711:13:28","nodeType":"FunctionDefinition","parameters":{"id":4780,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4775,"mutability":"mutable","name":"account","nameLocation":"742:7:28","nodeType":"VariableDeclaration","scope":4784,"src":"734:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4774,"name":"address","nodeType":"ElementaryTypeName","src":"734:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4777,"mutability":"mutable","name":"contractAddress","nameLocation":"767:15:28","nodeType":"VariableDeclaration","scope":4784,"src":"759:23:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4776,"name":"address","nodeType":"ElementaryTypeName","src":"759:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4779,"mutability":"mutable","name":"functionSig","nameLocation":"808:11:28","nodeType":"VariableDeclaration","scope":4784,"src":"792:27:28","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":4778,"name":"string","nodeType":"ElementaryTypeName","src":"792:6:28","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"724:101:28"},"returnParameters":{"id":4783,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4782,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4784,"src":"849:4:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4781,"name":"bool","nodeType":"ElementaryTypeName","src":"849:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"848:6:28"},"scope":4785,"src":"702:153:28","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4786,"src":"262:595:28","usedErrors":[],"usedEvents":[1422,1431,1440]}],"src":"41:817:28"},"id":28},"@venusprotocol/oracle/contracts/interfaces/FeedRegistryInterface.sol":{"ast":{"absolutePath":"@venusprotocol/oracle/contracts/interfaces/FeedRegistryInterface.sol","exportedSymbols":{"FeedRegistryInterface":[4814]},"id":4815,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":4787,"literals":["solidity","^","0.8",".25"],"nodeType":"PragmaDirective","src":"41:24:29"},{"abstract":false,"baseContracts":[],"canonicalName":"FeedRegistryInterface","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":4814,"linearizedBaseContracts":[4814],"name":"FeedRegistryInterface","nameLocation":"77:21:29","nodeType":"ContractDefinition","nodes":[{"functionSelector":"bfda5e71","id":4804,"implemented":false,"kind":"function","modifiers":[],"name":"latestRoundDataByName","nameLocation":"114:21:29","nodeType":"FunctionDefinition","parameters":{"id":4792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4789,"mutability":"mutable","name":"base","nameLocation":"159:4:29","nodeType":"VariableDeclaration","scope":4804,"src":"145:18:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4788,"name":"string","nodeType":"ElementaryTypeName","src":"145:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":4791,"mutability":"mutable","name":"quote","nameLocation":"187:5:29","nodeType":"VariableDeclaration","scope":4804,"src":"173:19:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4790,"name":"string","nodeType":"ElementaryTypeName","src":"173:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"135:63:29"},"returnParameters":{"id":4803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4794,"mutability":"mutable","name":"roundId","nameLocation":"253:7:29","nodeType":"VariableDeclaration","scope":4804,"src":"246:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":4793,"name":"uint80","nodeType":"ElementaryTypeName","src":"246:6:29","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"},{"constant":false,"id":4796,"mutability":"mutable","name":"answer","nameLocation":"269:6:29","nodeType":"VariableDeclaration","scope":4804,"src":"262:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4795,"name":"int256","nodeType":"ElementaryTypeName","src":"262:6:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":4798,"mutability":"mutable","name":"startedAt","nameLocation":"285:9:29","nodeType":"VariableDeclaration","scope":4804,"src":"277:17:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4797,"name":"uint256","nodeType":"ElementaryTypeName","src":"277:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4800,"mutability":"mutable","name":"updatedAt","nameLocation":"304:9:29","nodeType":"VariableDeclaration","scope":4804,"src":"296:17:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4799,"name":"uint256","nodeType":"ElementaryTypeName","src":"296:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4802,"mutability":"mutable","name":"answeredInRound","nameLocation":"322:15:29","nodeType":"VariableDeclaration","scope":4804,"src":"315:22:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":4801,"name":"uint80","nodeType":"ElementaryTypeName","src":"315:6:29","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"}],"src":"245:93:29"},"scope":4814,"src":"105:234:29","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"6e91995a","id":4813,"implemented":false,"kind":"function","modifiers":[],"name":"decimalsByName","nameLocation":"354:14:29","nodeType":"FunctionDefinition","parameters":{"id":4809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4806,"mutability":"mutable","name":"base","nameLocation":"383:4:29","nodeType":"VariableDeclaration","scope":4813,"src":"369:18:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4805,"name":"string","nodeType":"ElementaryTypeName","src":"369:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":4808,"mutability":"mutable","name":"quote","nameLocation":"403:5:29","nodeType":"VariableDeclaration","scope":4813,"src":"389:19:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4807,"name":"string","nodeType":"ElementaryTypeName","src":"389:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"368:41:29"},"returnParameters":{"id":4812,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4811,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4813,"src":"433:5:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4810,"name":"uint8","nodeType":"ElementaryTypeName","src":"433:5:29","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"432:7:29"},"scope":4814,"src":"345:95:29","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4815,"src":"67:375:29","usedErrors":[],"usedEvents":[]}],"src":"41:402:29"},"id":29},"@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol":{"ast":{"absolutePath":"@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol","exportedSymbols":{"BoundValidatorInterface":[4856],"OracleInterface":[4824],"ResilientOracleInterface":[4844]},"id":4857,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":4816,"literals":["solidity","^","0.8",".25"],"nodeType":"PragmaDirective","src":"41:24:30"},{"abstract":false,"baseContracts":[],"canonicalName":"OracleInterface","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":4824,"linearizedBaseContracts":[4824],"name":"OracleInterface","nameLocation":"77:15:30","nodeType":"ContractDefinition","nodes":[{"functionSelector":"41976e09","id":4823,"implemented":false,"kind":"function","modifiers":[],"name":"getPrice","nameLocation":"108:8:30","nodeType":"FunctionDefinition","parameters":{"id":4819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4818,"mutability":"mutable","name":"asset","nameLocation":"125:5:30","nodeType":"VariableDeclaration","scope":4823,"src":"117:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4817,"name":"address","nodeType":"ElementaryTypeName","src":"117:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"116:15:30"},"returnParameters":{"id":4822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4821,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4823,"src":"155:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4820,"name":"uint256","nodeType":"ElementaryTypeName","src":"155:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"154:9:30"},"scope":4824,"src":"99:65:30","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4857,"src":"67:99:30","usedErrors":[],"usedEvents":[]},{"abstract":false,"baseContracts":[{"baseName":{"id":4825,"name":"OracleInterface","nameLocations":["206:15:30"],"nodeType":"IdentifierPath","referencedDeclaration":4824,"src":"206:15:30"},"id":4826,"nodeType":"InheritanceSpecifier","src":"206:15:30"}],"canonicalName":"ResilientOracleInterface","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":4844,"linearizedBaseContracts":[4844,4824],"name":"ResilientOracleInterface","nameLocation":"178:24:30","nodeType":"ContractDefinition","nodes":[{"functionSelector":"96e85ced","id":4831,"implemented":false,"kind":"function","modifiers":[],"name":"updatePrice","nameLocation":"237:11:30","nodeType":"FunctionDefinition","parameters":{"id":4829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4828,"mutability":"mutable","name":"vToken","nameLocation":"257:6:30","nodeType":"VariableDeclaration","scope":4831,"src":"249:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4827,"name":"address","nodeType":"ElementaryTypeName","src":"249:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"248:16:30"},"returnParameters":{"id":4830,"nodeType":"ParameterList","parameters":[],"src":"273:0:30"},"scope":4844,"src":"228:46:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"b62cad69","id":4836,"implemented":false,"kind":"function","modifiers":[],"name":"updateAssetPrice","nameLocation":"289:16:30","nodeType":"FunctionDefinition","parameters":{"id":4834,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4833,"mutability":"mutable","name":"asset","nameLocation":"314:5:30","nodeType":"VariableDeclaration","scope":4836,"src":"306:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4832,"name":"address","nodeType":"ElementaryTypeName","src":"306:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"305:15:30"},"returnParameters":{"id":4835,"nodeType":"ParameterList","parameters":[],"src":"329:0:30"},"scope":4844,"src":"280:50:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"fc57d4df","id":4843,"implemented":false,"kind":"function","modifiers":[],"name":"getUnderlyingPrice","nameLocation":"345:18:30","nodeType":"FunctionDefinition","parameters":{"id":4839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4838,"mutability":"mutable","name":"vToken","nameLocation":"372:6:30","nodeType":"VariableDeclaration","scope":4843,"src":"364:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4837,"name":"address","nodeType":"ElementaryTypeName","src":"364:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"363:16:30"},"returnParameters":{"id":4842,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4841,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4843,"src":"403:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4840,"name":"uint256","nodeType":"ElementaryTypeName","src":"403:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"402:9:30"},"scope":4844,"src":"336:76:30","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4857,"src":"168:246:30","usedErrors":[],"usedEvents":[]},{"abstract":false,"baseContracts":[],"canonicalName":"BoundValidatorInterface","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":4856,"linearizedBaseContracts":[4856],"name":"BoundValidatorInterface","nameLocation":"426:23:30","nodeType":"ContractDefinition","nodes":[{"functionSelector":"97c7033e","id":4855,"implemented":false,"kind":"function","modifiers":[],"name":"validatePriceWithAnchorPrice","nameLocation":"465:28:30","nodeType":"FunctionDefinition","parameters":{"id":4851,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4846,"mutability":"mutable","name":"asset","nameLocation":"511:5:30","nodeType":"VariableDeclaration","scope":4855,"src":"503:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4845,"name":"address","nodeType":"ElementaryTypeName","src":"503:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4848,"mutability":"mutable","name":"reporterPrice","nameLocation":"534:13:30","nodeType":"VariableDeclaration","scope":4855,"src":"526:21:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4847,"name":"uint256","nodeType":"ElementaryTypeName","src":"526:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4850,"mutability":"mutable","name":"anchorPrice","nameLocation":"565:11:30","nodeType":"VariableDeclaration","scope":4855,"src":"557:19:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4849,"name":"uint256","nodeType":"ElementaryTypeName","src":"557:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"493:89:30"},"returnParameters":{"id":4854,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4853,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4855,"src":"606:4:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4852,"name":"bool","nodeType":"ElementaryTypeName","src":"606:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"605:6:30"},"scope":4856,"src":"456:156:30","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4857,"src":"416:198:30","usedErrors":[],"usedEvents":[]}],"src":"41:574:30"},"id":30},"@venusprotocol/oracle/contracts/interfaces/PublicResolverInterface.sol":{"ast":{"absolutePath":"@venusprotocol/oracle/contracts/interfaces/PublicResolverInterface.sol","exportedSymbols":{"PublicResolverInterface":[4866]},"id":4867,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":4858,"literals":["solidity","^","0.8",".25"],"nodeType":"PragmaDirective","src":"79:24:31"},{"abstract":false,"baseContracts":[],"canonicalName":"PublicResolverInterface","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":4866,"linearizedBaseContracts":[4866],"name":"PublicResolverInterface","nameLocation":"115:23:31","nodeType":"ContractDefinition","nodes":[{"functionSelector":"3b3b57de","id":4865,"implemented":false,"kind":"function","modifiers":[],"name":"addr","nameLocation":"154:4:31","nodeType":"FunctionDefinition","parameters":{"id":4861,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4860,"mutability":"mutable","name":"node","nameLocation":"167:4:31","nodeType":"VariableDeclaration","scope":4865,"src":"159:12:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4859,"name":"bytes32","nodeType":"ElementaryTypeName","src":"159:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"158:14:31"},"returnParameters":{"id":4864,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4863,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4865,"src":"196:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":4862,"name":"address","nodeType":"ElementaryTypeName","src":"196:15:31","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"src":"195:17:31"},"scope":4866,"src":"145:68:31","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4867,"src":"105:110:31","usedErrors":[],"usedEvents":[]}],"src":"79:137:31"},"id":31},"@venusprotocol/oracle/contracts/interfaces/SIDRegistryInterface.sol":{"ast":{"absolutePath":"@venusprotocol/oracle/contracts/interfaces/SIDRegistryInterface.sol","exportedSymbols":{"SIDRegistryInterface":[4876]},"id":4877,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":4868,"literals":["solidity","^","0.8",".25"],"nodeType":"PragmaDirective","src":"79:24:32"},{"abstract":false,"baseContracts":[],"canonicalName":"SIDRegistryInterface","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":4876,"linearizedBaseContracts":[4876],"name":"SIDRegistryInterface","nameLocation":"115:20:32","nodeType":"ContractDefinition","nodes":[{"functionSelector":"0178b8bf","id":4875,"implemented":false,"kind":"function","modifiers":[],"name":"resolver","nameLocation":"151:8:32","nodeType":"FunctionDefinition","parameters":{"id":4871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4870,"mutability":"mutable","name":"node","nameLocation":"168:4:32","nodeType":"VariableDeclaration","scope":4875,"src":"160:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4869,"name":"bytes32","nodeType":"ElementaryTypeName","src":"160:7:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"159:14:32"},"returnParameters":{"id":4874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4873,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4875,"src":"197:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4872,"name":"address","nodeType":"ElementaryTypeName","src":"197:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"196:9:32"},"scope":4876,"src":"142:64:32","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4877,"src":"105:103:32","usedErrors":[],"usedEvents":[]}],"src":"79:130:32"},"id":32},"@venusprotocol/oracle/contracts/interfaces/VBep20Interface.sol":{"ast":{"absolutePath":"@venusprotocol/oracle/contracts/interfaces/VBep20Interface.sol","exportedSymbols":{"IERC20":[1847],"IERC20Metadata":[1872],"VBep20Interface":[4888]},"id":4889,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":4878,"literals":["solidity","^","0.8",".25"],"nodeType":"PragmaDirective","src":"41:24:33"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","id":4879,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4889,"sourceUnit":1873,"src":"67:75:33","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":4880,"name":"IERC20Metadata","nameLocations":["173:14:33"],"nodeType":"IdentifierPath","referencedDeclaration":1872,"src":"173:14:33"},"id":4881,"nodeType":"InheritanceSpecifier","src":"173:14:33"}],"canonicalName":"VBep20Interface","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":4888,"linearizedBaseContracts":[4888,1872,1847],"name":"VBep20Interface","nameLocation":"154:15:33","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":4882,"nodeType":"StructuredDocumentation","src":"194:59:33","text":" @notice Underlying asset for this VToken"},"functionSelector":"6f307dc3","id":4887,"implemented":false,"kind":"function","modifiers":[],"name":"underlying","nameLocation":"267:10:33","nodeType":"FunctionDefinition","parameters":{"id":4883,"nodeType":"ParameterList","parameters":[],"src":"277:2:33"},"returnParameters":{"id":4886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4885,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4887,"src":"303:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4884,"name":"address","nodeType":"ElementaryTypeName","src":"303:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"302:9:33"},"scope":4888,"src":"258:54:33","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4889,"src":"144:170:33","usedErrors":[],"usedEvents":[1781,1790]}],"src":"41:274:33"},"id":33},"@venusprotocol/solidity-utilities/contracts/constants.sol":{"ast":{"absolutePath":"@venusprotocol/solidity-utilities/contracts/constants.sol","exportedSymbols":{"EXP_SCALE":[4894],"MANTISSA_ONE":[4898],"SECONDS_PER_YEAR":[4902]},"id":4903,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":4890,"literals":["solidity","^","0.8",".25"],"nodeType":"PragmaDirective","src":"41:24:34"},{"constant":true,"id":4894,"mutability":"constant","name":"EXP_SCALE","nameLocation":"174:9:34","nodeType":"VariableDeclaration","scope":4903,"src":"157:33:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4892,"name":"uint256","nodeType":"ElementaryTypeName","src":"157:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653138","id":4893,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"186:4:34","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"visibility":"internal"},{"constant":true,"id":4898,"mutability":"constant","name":"MANTISSA_ONE","nameLocation":"293:12:34","nodeType":"VariableDeclaration","scope":4903,"src":"276:41:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4896,"name":"uint256","nodeType":"ElementaryTypeName","src":"276:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"id":4897,"name":"EXP_SCALE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4894,"src":"308:9:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":true,"id":4902,"mutability":"constant","name":"SECONDS_PER_YEAR","nameLocation":"389:16:34","nodeType":"VariableDeclaration","scope":4903,"src":"372:46:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4900,"name":"uint256","nodeType":"ElementaryTypeName","src":"372:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"33315f3533365f303030","id":4901,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"408:10:34","typeDescriptions":{"typeIdentifier":"t_rational_31536000_by_1","typeString":"int_const 31536000"},"value":"31_536_000"},"visibility":"internal"}],"src":"41:379:34"},"id":34},"@venusprotocol/venus-protocol/contracts/Utils/ReentrancyGuardTransient.sol":{"ast":{"absolutePath":"@venusprotocol/venus-protocol/contracts/Utils/ReentrancyGuardTransient.sol","exportedSymbols":{"ReentrancyGuardTransient":[4971],"TransientSlot":[5170]},"id":4972,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4904,"literals":["solidity","^","0.8",".25"],"nodeType":"PragmaDirective","src":"232:24:35"},{"absolutePath":"@venusprotocol/venus-protocol/contracts/Utils/TransientSlot.sol","file":"./TransientSlot.sol","id":4906,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4972,"sourceUnit":5171,"src":"258:52:35","symbolAliases":[{"foreign":{"id":4905,"name":"TransientSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5170,"src":"267:13:35","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[],"canonicalName":"ReentrancyGuardTransient","contractDependencies":[],"contractKind":"contract","documentation":{"id":4907,"nodeType":"StructuredDocumentation","src":"312:180:35","text":" @dev Variant of {ReentrancyGuard} that uses transient storage.\n NOTE: This variant only works on networks where EIP-1153 is available.\n _Available since v5.1._"},"fullyImplemented":true,"id":4971,"linearizedBaseContracts":[4971],"name":"ReentrancyGuardTransient","nameLocation":"511:24:35","nodeType":"ContractDefinition","nodes":[{"global":false,"id":4909,"libraryName":{"id":4908,"name":"TransientSlot","nameLocations":["548:13:35"],"nodeType":"IdentifierPath","referencedDeclaration":5170,"src":"548:13:35"},"nodeType":"UsingForDirective","src":"542:26:35"},{"constant":true,"id":4912,"mutability":"constant","name":"REENTRANCY_GUARD_STORAGE","nameLocation":"718:24:35","nodeType":"VariableDeclaration","scope":4971,"src":"693:126:35","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4910,"name":"bytes32","nodeType":"ElementaryTypeName","src":"693:7:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307839623737396231373432326430646639323232333031386233326234643166613436653037313732336436383137653234383664303033626563633535663030","id":4911,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"753:66:35","typeDescriptions":{"typeIdentifier":"t_rational_70319816728846589445362000750570655803700195216363692647688146666176345628416_by_1","typeString":"int_const 7031...(69 digits omitted)...8416"},"value":"0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00"},"visibility":"private"},{"documentation":{"id":4913,"nodeType":"StructuredDocumentation","src":"826:52:35","text":" @dev Unauthorized reentrant call."},"errorSelector":"3ee5aeb5","id":4915,"name":"ReentrancyGuardReentrantCall","nameLocation":"889:28:35","nodeType":"ErrorDefinition","parameters":{"id":4914,"nodeType":"ParameterList","parameters":[],"src":"917:2:35"},"src":"883:37:35"},{"body":{"id":4925,"nodeType":"Block","src":"1321:79:35","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4918,"name":"_nonReentrantBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4958,"src":"1331:19:35","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":4919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1331:21:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4920,"nodeType":"ExpressionStatement","src":"1331:21:35"},{"id":4921,"nodeType":"PlaceholderStatement","src":"1362:1:35"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4922,"name":"_nonReentrantAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4970,"src":"1373:18:35","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":4923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1373:20:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4924,"nodeType":"ExpressionStatement","src":"1373:20:35"}]},"documentation":{"id":4916,"nodeType":"StructuredDocumentation","src":"926:366:35","text":" @dev Prevents a contract from calling itself, directly or indirectly.\n Calling a `nonReentrant` function from another `nonReentrant`\n function is not supported. It is possible to prevent this from happening\n by making the `nonReentrant` function external, and making it call a\n `private` function that does the actual work."},"id":4926,"name":"nonReentrant","nameLocation":"1306:12:35","nodeType":"ModifierDefinition","parameters":{"id":4917,"nodeType":"ParameterList","parameters":[],"src":"1318:2:35"},"src":"1297:103:35","virtual":false,"visibility":"internal"},{"body":{"id":4938,"nodeType":"Block","src":"1643:68:35","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4932,"name":"REENTRANCY_GUARD_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4912,"src":"1660:24:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":4933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1685:9:35","memberName":"asBoolean","nodeType":"MemberAccess","referencedDeclaration":5008,"src":"1660:34:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_userDefinedValueType$_BooleanSlot_$4993_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (TransientSlot.BooleanSlot)"}},"id":4934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1660:36:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlot_$4993","typeString":"TransientSlot.BooleanSlot"}},"id":4935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1697:5:35","memberName":"tload","nodeType":"MemberAccess","referencedDeclaration":5092,"src":"1660:42:35","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_BooleanSlot_$4993_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_BooleanSlot_$4993_$","typeString":"function (TransientSlot.BooleanSlot) view returns (bool)"}},"id":4936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1660:44:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4931,"id":4937,"nodeType":"Return","src":"1653:51:35"}]},"documentation":{"id":4927,"nodeType":"StructuredDocumentation","src":"1406:168:35","text":" @dev Returns true if the reentrancy guard is currently set to \"entered\", which indicates there is a\n `nonReentrant` function in the call stack."},"id":4939,"implemented":true,"kind":"function","modifiers":[],"name":"_reentrancyGuardEntered","nameLocation":"1588:23:35","nodeType":"FunctionDefinition","parameters":{"id":4928,"nodeType":"ParameterList","parameters":[],"src":"1611:2:35"},"returnParameters":{"id":4931,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4930,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4939,"src":"1637:4:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4929,"name":"bool","nodeType":"ElementaryTypeName","src":"1637:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1636:6:35"},"scope":4971,"src":"1579:132:35","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":4957,"nodeType":"Block","src":"1756:307:35","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"id":4942,"name":"_reentrancyGuardEntered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4939,"src":"1844:23:35","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":4943,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1844:25:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4948,"nodeType":"IfStatement","src":"1840:93:35","trueBody":{"id":4947,"nodeType":"Block","src":"1871:62:35","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4944,"name":"ReentrancyGuardReentrantCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4915,"src":"1892:28:35","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1892:30:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4946,"nodeType":"RevertStatement","src":"1885:37:35"}]}},{"expression":{"arguments":[{"hexValue":"74727565","id":4954,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2051:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4949,"name":"REENTRANCY_GUARD_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4912,"src":"2007:24:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":4951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2032:9:35","memberName":"asBoolean","nodeType":"MemberAccess","referencedDeclaration":5008,"src":"2007:34:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_userDefinedValueType$_BooleanSlot_$4993_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (TransientSlot.BooleanSlot)"}},"id":4952,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2007:36:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlot_$4993","typeString":"TransientSlot.BooleanSlot"}},"id":4953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2044:6:35","memberName":"tstore","nodeType":"MemberAccess","referencedDeclaration":5103,"src":"2007:43:35","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_BooleanSlot_$4993_$_t_bool_$returns$__$attached_to$_t_userDefinedValueType$_BooleanSlot_$4993_$","typeString":"function (TransientSlot.BooleanSlot,bool)"}},"id":4955,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2007:49:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4956,"nodeType":"ExpressionStatement","src":"2007:49:35"}]},"id":4958,"implemented":true,"kind":"function","modifiers":[],"name":"_nonReentrantBefore","nameLocation":"1726:19:35","nodeType":"FunctionDefinition","parameters":{"id":4940,"nodeType":"ParameterList","parameters":[],"src":"1745:2:35"},"returnParameters":{"id":4941,"nodeType":"ParameterList","parameters":[],"src":"1756:0:35"},"scope":4971,"src":"1717:346:35","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":4969,"nodeType":"Block","src":"2107:67:35","statements":[{"expression":{"arguments":[{"hexValue":"66616c7365","id":4966,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2161:5:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4961,"name":"REENTRANCY_GUARD_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4912,"src":"2117:24:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":4963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2142:9:35","memberName":"asBoolean","nodeType":"MemberAccess","referencedDeclaration":5008,"src":"2117:34:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_userDefinedValueType$_BooleanSlot_$4993_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (TransientSlot.BooleanSlot)"}},"id":4964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2117:36:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlot_$4993","typeString":"TransientSlot.BooleanSlot"}},"id":4965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2154:6:35","memberName":"tstore","nodeType":"MemberAccess","referencedDeclaration":5103,"src":"2117:43:35","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_BooleanSlot_$4993_$_t_bool_$returns$__$attached_to$_t_userDefinedValueType$_BooleanSlot_$4993_$","typeString":"function (TransientSlot.BooleanSlot,bool)"}},"id":4967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2117:50:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4968,"nodeType":"ExpressionStatement","src":"2117:50:35"}]},"id":4970,"implemented":true,"kind":"function","modifiers":[],"name":"_nonReentrantAfter","nameLocation":"2078:18:35","nodeType":"FunctionDefinition","parameters":{"id":4959,"nodeType":"ParameterList","parameters":[],"src":"2096:2:35"},"returnParameters":{"id":4960,"nodeType":"ParameterList","parameters":[],"src":"2107:0:35"},"scope":4971,"src":"2069:105:35","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":4972,"src":"493:1683:35","usedErrors":[4915],"usedEvents":[]}],"src":"232:1945:35"},"id":35},"@venusprotocol/venus-protocol/contracts/Utils/TransientSlot.sol":{"ast":{"absolutePath":"@venusprotocol/venus-protocol/contracts/Utils/TransientSlot.sol","exportedSymbols":{"TransientSlot":[5170]},"id":5171,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4973,"literals":["solidity","^","0.8",".25"],"nodeType":"PragmaDirective","src":"300:24:36"},{"abstract":false,"baseContracts":[],"canonicalName":"TransientSlot","contractDependencies":[],"contractKind":"library","documentation":{"id":4974,"nodeType":"StructuredDocumentation","src":"326:939:36","text":" @dev Library for reading and writing value-types to specific transient storage slots.\n Transient slots are often used to store temporary values that are removed after the current transaction.\n This library helps with reading and writing to such slots without the need for inline assembly.\n  * Example reading and writing values using transient storage:\n ```solidity\n contract Lock {\n     using TransientSlot for *;\n     // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\n     bytes32 internal constant _LOCK_SLOT = 0xf4678858b2b588224636b8522b729e7722d32fc491da849ed75b3fdf3c84f542;\n     modifier locked() {\n         require(!_LOCK_SLOT.asBoolean().tload());\n         _LOCK_SLOT.asBoolean().tstore(true);\n         _;\n         _LOCK_SLOT.asBoolean().tstore(false);\n     }\n }\n ```\n TIP: Consider using this library along with {SlotDerivation}."},"fullyImplemented":true,"id":5170,"linearizedBaseContracts":[5170],"name":"TransientSlot","nameLocation":"1274:13:36","nodeType":"ContractDefinition","nodes":[{"canonicalName":"TransientSlot.AddressSlot","id":4976,"name":"AddressSlot","nameLocation":"1373:11:36","nodeType":"UserDefinedValueTypeDefinition","src":"1368:28:36","underlyingType":{"id":4975,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1388:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"body":{"id":4990,"nodeType":"Block","src":"1540:46:36","statements":[{"expression":{"arguments":[{"id":4987,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4979,"src":"1574:4:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":4985,"name":"AddressSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4976,"src":"1557:11:36","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_AddressSlot_$4976_$","typeString":"type(TransientSlot.AddressSlot)"}},"id":4986,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1569:4:36","memberName":"wrap","nodeType":"MemberAccess","src":"1557:16:36","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_AddressSlot_$4976_$","typeString":"function (bytes32) pure returns (TransientSlot.AddressSlot)"}},"id":4988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1557:22:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressSlot_$4976","typeString":"TransientSlot.AddressSlot"}},"functionReturnParameters":4984,"id":4989,"nodeType":"Return","src":"1550:29:36"}]},"documentation":{"id":4977,"nodeType":"StructuredDocumentation","src":"1402:64:36","text":" @dev Cast an arbitrary slot to a AddressSlot."},"id":4991,"implemented":true,"kind":"function","modifiers":[],"name":"asAddress","nameLocation":"1480:9:36","nodeType":"FunctionDefinition","parameters":{"id":4980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4979,"mutability":"mutable","name":"slot","nameLocation":"1498:4:36","nodeType":"VariableDeclaration","scope":4991,"src":"1490:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4978,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1490:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1489:14:36"},"returnParameters":{"id":4984,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4983,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4991,"src":"1527:11:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressSlot_$4976","typeString":"TransientSlot.AddressSlot"},"typeName":{"id":4982,"nodeType":"UserDefinedTypeName","pathNode":{"id":4981,"name":"AddressSlot","nameLocations":["1527:11:36"],"nodeType":"IdentifierPath","referencedDeclaration":4976,"src":"1527:11:36"},"referencedDeclaration":4976,"src":"1527:11:36","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressSlot_$4976","typeString":"TransientSlot.AddressSlot"}},"visibility":"internal"}],"src":"1526:13:36"},"scope":5170,"src":"1471:115:36","stateMutability":"pure","virtual":false,"visibility":"internal"},{"canonicalName":"TransientSlot.BooleanSlot","id":4993,"name":"BooleanSlot","nameLocation":"1668:11:36","nodeType":"UserDefinedValueTypeDefinition","src":"1663:28:36","underlyingType":{"id":4992,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1683:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"body":{"id":5007,"nodeType":"Block","src":"1835:46:36","statements":[{"expression":{"arguments":[{"id":5004,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4996,"src":"1869:4:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":5002,"name":"BooleanSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4993,"src":"1852:11:36","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_BooleanSlot_$4993_$","typeString":"type(TransientSlot.BooleanSlot)"}},"id":5003,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1864:4:36","memberName":"wrap","nodeType":"MemberAccess","src":"1852:16:36","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_BooleanSlot_$4993_$","typeString":"function (bytes32) pure returns (TransientSlot.BooleanSlot)"}},"id":5005,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1852:22:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlot_$4993","typeString":"TransientSlot.BooleanSlot"}},"functionReturnParameters":5001,"id":5006,"nodeType":"Return","src":"1845:29:36"}]},"documentation":{"id":4994,"nodeType":"StructuredDocumentation","src":"1697:64:36","text":" @dev Cast an arbitrary slot to a BooleanSlot."},"id":5008,"implemented":true,"kind":"function","modifiers":[],"name":"asBoolean","nameLocation":"1775:9:36","nodeType":"FunctionDefinition","parameters":{"id":4997,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4996,"mutability":"mutable","name":"slot","nameLocation":"1793:4:36","nodeType":"VariableDeclaration","scope":5008,"src":"1785:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4995,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1785:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1784:14:36"},"returnParameters":{"id":5001,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5000,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5008,"src":"1822:11:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlot_$4993","typeString":"TransientSlot.BooleanSlot"},"typeName":{"id":4999,"nodeType":"UserDefinedTypeName","pathNode":{"id":4998,"name":"BooleanSlot","nameLocations":["1822:11:36"],"nodeType":"IdentifierPath","referencedDeclaration":4993,"src":"1822:11:36"},"referencedDeclaration":4993,"src":"1822:11:36","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlot_$4993","typeString":"TransientSlot.BooleanSlot"}},"visibility":"internal"}],"src":"1821:13:36"},"scope":5170,"src":"1766:115:36","stateMutability":"pure","virtual":false,"visibility":"internal"},{"canonicalName":"TransientSlot.Bytes32Slot","id":5010,"name":"Bytes32Slot","nameLocation":"1966:11:36","nodeType":"UserDefinedValueTypeDefinition","src":"1961:28:36","underlyingType":{"id":5009,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1981:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"body":{"id":5024,"nodeType":"Block","src":"2133:46:36","statements":[{"expression":{"arguments":[{"id":5021,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5013,"src":"2167:4:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":5019,"name":"Bytes32Slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5010,"src":"2150:11:36","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Bytes32Slot_$5010_$","typeString":"type(TransientSlot.Bytes32Slot)"}},"id":5020,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2162:4:36","memberName":"wrap","nodeType":"MemberAccess","src":"2150:16:36","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_Bytes32Slot_$5010_$","typeString":"function (bytes32) pure returns (TransientSlot.Bytes32Slot)"}},"id":5022,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2150:22:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Bytes32Slot_$5010","typeString":"TransientSlot.Bytes32Slot"}},"functionReturnParameters":5018,"id":5023,"nodeType":"Return","src":"2143:29:36"}]},"documentation":{"id":5011,"nodeType":"StructuredDocumentation","src":"1995:64:36","text":" @dev Cast an arbitrary slot to a Bytes32Slot."},"id":5025,"implemented":true,"kind":"function","modifiers":[],"name":"asBytes32","nameLocation":"2073:9:36","nodeType":"FunctionDefinition","parameters":{"id":5014,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5013,"mutability":"mutable","name":"slot","nameLocation":"2091:4:36","nodeType":"VariableDeclaration","scope":5025,"src":"2083:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5012,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2083:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2082:14:36"},"returnParameters":{"id":5018,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5017,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5025,"src":"2120:11:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Bytes32Slot_$5010","typeString":"TransientSlot.Bytes32Slot"},"typeName":{"id":5016,"nodeType":"UserDefinedTypeName","pathNode":{"id":5015,"name":"Bytes32Slot","nameLocations":["2120:11:36"],"nodeType":"IdentifierPath","referencedDeclaration":5010,"src":"2120:11:36"},"referencedDeclaration":5010,"src":"2120:11:36","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Bytes32Slot_$5010","typeString":"TransientSlot.Bytes32Slot"}},"visibility":"internal"}],"src":"2119:13:36"},"scope":5170,"src":"2064:115:36","stateMutability":"pure","virtual":false,"visibility":"internal"},{"canonicalName":"TransientSlot.Uint256Slot","id":5027,"name":"Uint256Slot","nameLocation":"2264:11:36","nodeType":"UserDefinedValueTypeDefinition","src":"2259:28:36","underlyingType":{"id":5026,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2279:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"body":{"id":5041,"nodeType":"Block","src":"2431:46:36","statements":[{"expression":{"arguments":[{"id":5038,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5030,"src":"2465:4:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":5036,"name":"Uint256Slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5027,"src":"2448:11:36","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Uint256Slot_$5027_$","typeString":"type(TransientSlot.Uint256Slot)"}},"id":5037,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2460:4:36","memberName":"wrap","nodeType":"MemberAccess","src":"2448:16:36","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_Uint256Slot_$5027_$","typeString":"function (bytes32) pure returns (TransientSlot.Uint256Slot)"}},"id":5039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2448:22:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256Slot_$5027","typeString":"TransientSlot.Uint256Slot"}},"functionReturnParameters":5035,"id":5040,"nodeType":"Return","src":"2441:29:36"}]},"documentation":{"id":5028,"nodeType":"StructuredDocumentation","src":"2293:64:36","text":" @dev Cast an arbitrary slot to a Uint256Slot."},"id":5042,"implemented":true,"kind":"function","modifiers":[],"name":"asUint256","nameLocation":"2371:9:36","nodeType":"FunctionDefinition","parameters":{"id":5031,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5030,"mutability":"mutable","name":"slot","nameLocation":"2389:4:36","nodeType":"VariableDeclaration","scope":5042,"src":"2381:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5029,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2381:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2380:14:36"},"returnParameters":{"id":5035,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5034,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5042,"src":"2418:11:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256Slot_$5027","typeString":"TransientSlot.Uint256Slot"},"typeName":{"id":5033,"nodeType":"UserDefinedTypeName","pathNode":{"id":5032,"name":"Uint256Slot","nameLocations":["2418:11:36"],"nodeType":"IdentifierPath","referencedDeclaration":5027,"src":"2418:11:36"},"referencedDeclaration":5027,"src":"2418:11:36","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256Slot_$5027","typeString":"TransientSlot.Uint256Slot"}},"visibility":"internal"}],"src":"2417:13:36"},"scope":5170,"src":"2362:115:36","stateMutability":"pure","virtual":false,"visibility":"internal"},{"canonicalName":"TransientSlot.Int256Slot","id":5044,"name":"Int256Slot","nameLocation":"2561:10:36","nodeType":"UserDefinedValueTypeDefinition","src":"2556:27:36","underlyingType":{"id":5043,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2575:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"body":{"id":5058,"nodeType":"Block","src":"2724:45:36","statements":[{"expression":{"arguments":[{"id":5055,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5047,"src":"2757:4:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":5053,"name":"Int256Slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5044,"src":"2741:10:36","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Int256Slot_$5044_$","typeString":"type(TransientSlot.Int256Slot)"}},"id":5054,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2752:4:36","memberName":"wrap","nodeType":"MemberAccess","src":"2741:15:36","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_Int256Slot_$5044_$","typeString":"function (bytes32) pure returns (TransientSlot.Int256Slot)"}},"id":5056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2741:21:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Int256Slot_$5044","typeString":"TransientSlot.Int256Slot"}},"functionReturnParameters":5052,"id":5057,"nodeType":"Return","src":"2734:28:36"}]},"documentation":{"id":5045,"nodeType":"StructuredDocumentation","src":"2589:63:36","text":" @dev Cast an arbitrary slot to a Int256Slot."},"id":5059,"implemented":true,"kind":"function","modifiers":[],"name":"asInt256","nameLocation":"2666:8:36","nodeType":"FunctionDefinition","parameters":{"id":5048,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5047,"mutability":"mutable","name":"slot","nameLocation":"2683:4:36","nodeType":"VariableDeclaration","scope":5059,"src":"2675:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5046,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2675:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2674:14:36"},"returnParameters":{"id":5052,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5051,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5059,"src":"2712:10:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Int256Slot_$5044","typeString":"TransientSlot.Int256Slot"},"typeName":{"id":5050,"nodeType":"UserDefinedTypeName","pathNode":{"id":5049,"name":"Int256Slot","nameLocations":["2712:10:36"],"nodeType":"IdentifierPath","referencedDeclaration":5044,"src":"2712:10:36"},"referencedDeclaration":5044,"src":"2712:10:36","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Int256Slot_$5044","typeString":"TransientSlot.Int256Slot"}},"visibility":"internal"}],"src":"2711:12:36"},"scope":5170,"src":"2657:112:36","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5069,"nodeType":"Block","src":"2935:85:36","statements":[{"AST":{"nativeSrc":"2970:44:36","nodeType":"YulBlock","src":"2970:44:36","statements":[{"nativeSrc":"2984:20:36","nodeType":"YulAssignment","src":"2984:20:36","value":{"arguments":[{"name":"slot","nativeSrc":"2999:4:36","nodeType":"YulIdentifier","src":"2999:4:36"}],"functionName":{"name":"tload","nativeSrc":"2993:5:36","nodeType":"YulIdentifier","src":"2993:5:36"},"nativeSrc":"2993:11:36","nodeType":"YulFunctionCall","src":"2993:11:36"},"variableNames":[{"name":"value","nativeSrc":"2984:5:36","nodeType":"YulIdentifier","src":"2984:5:36"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":5063,"isOffset":false,"isSlot":false,"src":"2999:4:36","valueSize":1},{"declaration":5066,"isOffset":false,"isSlot":false,"src":"2984:5:36","valueSize":1}],"flags":["memory-safe"],"id":5068,"nodeType":"InlineAssembly","src":"2945:69:36"}]},"documentation":{"id":5060,"nodeType":"StructuredDocumentation","src":"2775:84:36","text":" @dev Load the value held at location `slot` in transient storage."},"id":5070,"implemented":true,"kind":"function","modifiers":[],"name":"tload","nameLocation":"2873:5:36","nodeType":"FunctionDefinition","parameters":{"id":5064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5063,"mutability":"mutable","name":"slot","nameLocation":"2891:4:36","nodeType":"VariableDeclaration","scope":5070,"src":"2879:16:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressSlot_$4976","typeString":"TransientSlot.AddressSlot"},"typeName":{"id":5062,"nodeType":"UserDefinedTypeName","pathNode":{"id":5061,"name":"AddressSlot","nameLocations":["2879:11:36"],"nodeType":"IdentifierPath","referencedDeclaration":4976,"src":"2879:11:36"},"referencedDeclaration":4976,"src":"2879:11:36","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressSlot_$4976","typeString":"TransientSlot.AddressSlot"}},"visibility":"internal"}],"src":"2878:18:36"},"returnParameters":{"id":5067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5066,"mutability":"mutable","name":"value","nameLocation":"2928:5:36","nodeType":"VariableDeclaration","scope":5070,"src":"2920:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5065,"name":"address","nodeType":"ElementaryTypeName","src":"2920:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2919:15:36"},"scope":5170,"src":"2864:156:36","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5080,"nodeType":"Block","src":"3167:84:36","statements":[{"AST":{"nativeSrc":"3202:43:36","nodeType":"YulBlock","src":"3202:43:36","statements":[{"expression":{"arguments":[{"name":"slot","nativeSrc":"3223:4:36","nodeType":"YulIdentifier","src":"3223:4:36"},{"name":"value","nativeSrc":"3229:5:36","nodeType":"YulIdentifier","src":"3229:5:36"}],"functionName":{"name":"tstore","nativeSrc":"3216:6:36","nodeType":"YulIdentifier","src":"3216:6:36"},"nativeSrc":"3216:19:36","nodeType":"YulFunctionCall","src":"3216:19:36"},"nativeSrc":"3216:19:36","nodeType":"YulExpressionStatement","src":"3216:19:36"}]},"evmVersion":"cancun","externalReferences":[{"declaration":5074,"isOffset":false,"isSlot":false,"src":"3223:4:36","valueSize":1},{"declaration":5076,"isOffset":false,"isSlot":false,"src":"3229:5:36","valueSize":1}],"flags":["memory-safe"],"id":5079,"nodeType":"InlineAssembly","src":"3177:68:36"}]},"documentation":{"id":5071,"nodeType":"StructuredDocumentation","src":"3026:78:36","text":" @dev Store `value` at location `slot` in transient storage."},"id":5081,"implemented":true,"kind":"function","modifiers":[],"name":"tstore","nameLocation":"3118:6:36","nodeType":"FunctionDefinition","parameters":{"id":5077,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5074,"mutability":"mutable","name":"slot","nameLocation":"3137:4:36","nodeType":"VariableDeclaration","scope":5081,"src":"3125:16:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressSlot_$4976","typeString":"TransientSlot.AddressSlot"},"typeName":{"id":5073,"nodeType":"UserDefinedTypeName","pathNode":{"id":5072,"name":"AddressSlot","nameLocations":["3125:11:36"],"nodeType":"IdentifierPath","referencedDeclaration":4976,"src":"3125:11:36"},"referencedDeclaration":4976,"src":"3125:11:36","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressSlot_$4976","typeString":"TransientSlot.AddressSlot"}},"visibility":"internal"},{"constant":false,"id":5076,"mutability":"mutable","name":"value","nameLocation":"3151:5:36","nodeType":"VariableDeclaration","scope":5081,"src":"3143:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5075,"name":"address","nodeType":"ElementaryTypeName","src":"3143:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3124:33:36"},"returnParameters":{"id":5078,"nodeType":"ParameterList","parameters":[],"src":"3167:0:36"},"scope":5170,"src":"3109:142:36","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5091,"nodeType":"Block","src":"3414:85:36","statements":[{"AST":{"nativeSrc":"3449:44:36","nodeType":"YulBlock","src":"3449:44:36","statements":[{"nativeSrc":"3463:20:36","nodeType":"YulAssignment","src":"3463:20:36","value":{"arguments":[{"name":"slot","nativeSrc":"3478:4:36","nodeType":"YulIdentifier","src":"3478:4:36"}],"functionName":{"name":"tload","nativeSrc":"3472:5:36","nodeType":"YulIdentifier","src":"3472:5:36"},"nativeSrc":"3472:11:36","nodeType":"YulFunctionCall","src":"3472:11:36"},"variableNames":[{"name":"value","nativeSrc":"3463:5:36","nodeType":"YulIdentifier","src":"3463:5:36"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":5085,"isOffset":false,"isSlot":false,"src":"3478:4:36","valueSize":1},{"declaration":5088,"isOffset":false,"isSlot":false,"src":"3463:5:36","valueSize":1}],"flags":["memory-safe"],"id":5090,"nodeType":"InlineAssembly","src":"3424:69:36"}]},"documentation":{"id":5082,"nodeType":"StructuredDocumentation","src":"3257:84:36","text":" @dev Load the value held at location `slot` in transient storage."},"id":5092,"implemented":true,"kind":"function","modifiers":[],"name":"tload","nameLocation":"3355:5:36","nodeType":"FunctionDefinition","parameters":{"id":5086,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5085,"mutability":"mutable","name":"slot","nameLocation":"3373:4:36","nodeType":"VariableDeclaration","scope":5092,"src":"3361:16:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlot_$4993","typeString":"TransientSlot.BooleanSlot"},"typeName":{"id":5084,"nodeType":"UserDefinedTypeName","pathNode":{"id":5083,"name":"BooleanSlot","nameLocations":["3361:11:36"],"nodeType":"IdentifierPath","referencedDeclaration":4993,"src":"3361:11:36"},"referencedDeclaration":4993,"src":"3361:11:36","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlot_$4993","typeString":"TransientSlot.BooleanSlot"}},"visibility":"internal"}],"src":"3360:18:36"},"returnParameters":{"id":5089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5088,"mutability":"mutable","name":"value","nameLocation":"3407:5:36","nodeType":"VariableDeclaration","scope":5092,"src":"3402:10:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5087,"name":"bool","nodeType":"ElementaryTypeName","src":"3402:4:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3401:12:36"},"scope":5170,"src":"3346:153:36","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5102,"nodeType":"Block","src":"3643:84:36","statements":[{"AST":{"nativeSrc":"3678:43:36","nodeType":"YulBlock","src":"3678:43:36","statements":[{"expression":{"arguments":[{"name":"slot","nativeSrc":"3699:4:36","nodeType":"YulIdentifier","src":"3699:4:36"},{"name":"value","nativeSrc":"3705:5:36","nodeType":"YulIdentifier","src":"3705:5:36"}],"functionName":{"name":"tstore","nativeSrc":"3692:6:36","nodeType":"YulIdentifier","src":"3692:6:36"},"nativeSrc":"3692:19:36","nodeType":"YulFunctionCall","src":"3692:19:36"},"nativeSrc":"3692:19:36","nodeType":"YulExpressionStatement","src":"3692:19:36"}]},"evmVersion":"cancun","externalReferences":[{"declaration":5096,"isOffset":false,"isSlot":false,"src":"3699:4:36","valueSize":1},{"declaration":5098,"isOffset":false,"isSlot":false,"src":"3705:5:36","valueSize":1}],"flags":["memory-safe"],"id":5101,"nodeType":"InlineAssembly","src":"3653:68:36"}]},"documentation":{"id":5093,"nodeType":"StructuredDocumentation","src":"3505:78:36","text":" @dev Store `value` at location `slot` in transient storage."},"id":5103,"implemented":true,"kind":"function","modifiers":[],"name":"tstore","nameLocation":"3597:6:36","nodeType":"FunctionDefinition","parameters":{"id":5099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5096,"mutability":"mutable","name":"slot","nameLocation":"3616:4:36","nodeType":"VariableDeclaration","scope":5103,"src":"3604:16:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlot_$4993","typeString":"TransientSlot.BooleanSlot"},"typeName":{"id":5095,"nodeType":"UserDefinedTypeName","pathNode":{"id":5094,"name":"BooleanSlot","nameLocations":["3604:11:36"],"nodeType":"IdentifierPath","referencedDeclaration":4993,"src":"3604:11:36"},"referencedDeclaration":4993,"src":"3604:11:36","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlot_$4993","typeString":"TransientSlot.BooleanSlot"}},"visibility":"internal"},{"constant":false,"id":5098,"mutability":"mutable","name":"value","nameLocation":"3627:5:36","nodeType":"VariableDeclaration","scope":5103,"src":"3622:10:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5097,"name":"bool","nodeType":"ElementaryTypeName","src":"3622:4:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3603:30:36"},"returnParameters":{"id":5100,"nodeType":"ParameterList","parameters":[],"src":"3643:0:36"},"scope":5170,"src":"3588:139:36","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5113,"nodeType":"Block","src":"3893:85:36","statements":[{"AST":{"nativeSrc":"3928:44:36","nodeType":"YulBlock","src":"3928:44:36","statements":[{"nativeSrc":"3942:20:36","nodeType":"YulAssignment","src":"3942:20:36","value":{"arguments":[{"name":"slot","nativeSrc":"3957:4:36","nodeType":"YulIdentifier","src":"3957:4:36"}],"functionName":{"name":"tload","nativeSrc":"3951:5:36","nodeType":"YulIdentifier","src":"3951:5:36"},"nativeSrc":"3951:11:36","nodeType":"YulFunctionCall","src":"3951:11:36"},"variableNames":[{"name":"value","nativeSrc":"3942:5:36","nodeType":"YulIdentifier","src":"3942:5:36"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":5107,"isOffset":false,"isSlot":false,"src":"3957:4:36","valueSize":1},{"declaration":5110,"isOffset":false,"isSlot":false,"src":"3942:5:36","valueSize":1}],"flags":["memory-safe"],"id":5112,"nodeType":"InlineAssembly","src":"3903:69:36"}]},"documentation":{"id":5104,"nodeType":"StructuredDocumentation","src":"3733:84:36","text":" @dev Load the value held at location `slot` in transient storage."},"id":5114,"implemented":true,"kind":"function","modifiers":[],"name":"tload","nameLocation":"3831:5:36","nodeType":"FunctionDefinition","parameters":{"id":5108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5107,"mutability":"mutable","name":"slot","nameLocation":"3849:4:36","nodeType":"VariableDeclaration","scope":5114,"src":"3837:16:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Bytes32Slot_$5010","typeString":"TransientSlot.Bytes32Slot"},"typeName":{"id":5106,"nodeType":"UserDefinedTypeName","pathNode":{"id":5105,"name":"Bytes32Slot","nameLocations":["3837:11:36"],"nodeType":"IdentifierPath","referencedDeclaration":5010,"src":"3837:11:36"},"referencedDeclaration":5010,"src":"3837:11:36","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Bytes32Slot_$5010","typeString":"TransientSlot.Bytes32Slot"}},"visibility":"internal"}],"src":"3836:18:36"},"returnParameters":{"id":5111,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5110,"mutability":"mutable","name":"value","nameLocation":"3886:5:36","nodeType":"VariableDeclaration","scope":5114,"src":"3878:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5109,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3878:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3877:15:36"},"scope":5170,"src":"3822:156:36","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5124,"nodeType":"Block","src":"4125:84:36","statements":[{"AST":{"nativeSrc":"4160:43:36","nodeType":"YulBlock","src":"4160:43:36","statements":[{"expression":{"arguments":[{"name":"slot","nativeSrc":"4181:4:36","nodeType":"YulIdentifier","src":"4181:4:36"},{"name":"value","nativeSrc":"4187:5:36","nodeType":"YulIdentifier","src":"4187:5:36"}],"functionName":{"name":"tstore","nativeSrc":"4174:6:36","nodeType":"YulIdentifier","src":"4174:6:36"},"nativeSrc":"4174:19:36","nodeType":"YulFunctionCall","src":"4174:19:36"},"nativeSrc":"4174:19:36","nodeType":"YulExpressionStatement","src":"4174:19:36"}]},"evmVersion":"cancun","externalReferences":[{"declaration":5118,"isOffset":false,"isSlot":false,"src":"4181:4:36","valueSize":1},{"declaration":5120,"isOffset":false,"isSlot":false,"src":"4187:5:36","valueSize":1}],"flags":["memory-safe"],"id":5123,"nodeType":"InlineAssembly","src":"4135:68:36"}]},"documentation":{"id":5115,"nodeType":"StructuredDocumentation","src":"3984:78:36","text":" @dev Store `value` at location `slot` in transient storage."},"id":5125,"implemented":true,"kind":"function","modifiers":[],"name":"tstore","nameLocation":"4076:6:36","nodeType":"FunctionDefinition","parameters":{"id":5121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5118,"mutability":"mutable","name":"slot","nameLocation":"4095:4:36","nodeType":"VariableDeclaration","scope":5125,"src":"4083:16:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Bytes32Slot_$5010","typeString":"TransientSlot.Bytes32Slot"},"typeName":{"id":5117,"nodeType":"UserDefinedTypeName","pathNode":{"id":5116,"name":"Bytes32Slot","nameLocations":["4083:11:36"],"nodeType":"IdentifierPath","referencedDeclaration":5010,"src":"4083:11:36"},"referencedDeclaration":5010,"src":"4083:11:36","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Bytes32Slot_$5010","typeString":"TransientSlot.Bytes32Slot"}},"visibility":"internal"},{"constant":false,"id":5120,"mutability":"mutable","name":"value","nameLocation":"4109:5:36","nodeType":"VariableDeclaration","scope":5125,"src":"4101:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5119,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4101:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4082:33:36"},"returnParameters":{"id":5122,"nodeType":"ParameterList","parameters":[],"src":"4125:0:36"},"scope":5170,"src":"4067:142:36","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5135,"nodeType":"Block","src":"4375:85:36","statements":[{"AST":{"nativeSrc":"4410:44:36","nodeType":"YulBlock","src":"4410:44:36","statements":[{"nativeSrc":"4424:20:36","nodeType":"YulAssignment","src":"4424:20:36","value":{"arguments":[{"name":"slot","nativeSrc":"4439:4:36","nodeType":"YulIdentifier","src":"4439:4:36"}],"functionName":{"name":"tload","nativeSrc":"4433:5:36","nodeType":"YulIdentifier","src":"4433:5:36"},"nativeSrc":"4433:11:36","nodeType":"YulFunctionCall","src":"4433:11:36"},"variableNames":[{"name":"value","nativeSrc":"4424:5:36","nodeType":"YulIdentifier","src":"4424:5:36"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":5129,"isOffset":false,"isSlot":false,"src":"4439:4:36","valueSize":1},{"declaration":5132,"isOffset":false,"isSlot":false,"src":"4424:5:36","valueSize":1}],"flags":["memory-safe"],"id":5134,"nodeType":"InlineAssembly","src":"4385:69:36"}]},"documentation":{"id":5126,"nodeType":"StructuredDocumentation","src":"4215:84:36","text":" @dev Load the value held at location `slot` in transient storage."},"id":5136,"implemented":true,"kind":"function","modifiers":[],"name":"tload","nameLocation":"4313:5:36","nodeType":"FunctionDefinition","parameters":{"id":5130,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5129,"mutability":"mutable","name":"slot","nameLocation":"4331:4:36","nodeType":"VariableDeclaration","scope":5136,"src":"4319:16:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256Slot_$5027","typeString":"TransientSlot.Uint256Slot"},"typeName":{"id":5128,"nodeType":"UserDefinedTypeName","pathNode":{"id":5127,"name":"Uint256Slot","nameLocations":["4319:11:36"],"nodeType":"IdentifierPath","referencedDeclaration":5027,"src":"4319:11:36"},"referencedDeclaration":5027,"src":"4319:11:36","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256Slot_$5027","typeString":"TransientSlot.Uint256Slot"}},"visibility":"internal"}],"src":"4318:18:36"},"returnParameters":{"id":5133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5132,"mutability":"mutable","name":"value","nameLocation":"4368:5:36","nodeType":"VariableDeclaration","scope":5136,"src":"4360:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5131,"name":"uint256","nodeType":"ElementaryTypeName","src":"4360:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4359:15:36"},"scope":5170,"src":"4304:156:36","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5146,"nodeType":"Block","src":"4607:84:36","statements":[{"AST":{"nativeSrc":"4642:43:36","nodeType":"YulBlock","src":"4642:43:36","statements":[{"expression":{"arguments":[{"name":"slot","nativeSrc":"4663:4:36","nodeType":"YulIdentifier","src":"4663:4:36"},{"name":"value","nativeSrc":"4669:5:36","nodeType":"YulIdentifier","src":"4669:5:36"}],"functionName":{"name":"tstore","nativeSrc":"4656:6:36","nodeType":"YulIdentifier","src":"4656:6:36"},"nativeSrc":"4656:19:36","nodeType":"YulFunctionCall","src":"4656:19:36"},"nativeSrc":"4656:19:36","nodeType":"YulExpressionStatement","src":"4656:19:36"}]},"evmVersion":"cancun","externalReferences":[{"declaration":5140,"isOffset":false,"isSlot":false,"src":"4663:4:36","valueSize":1},{"declaration":5142,"isOffset":false,"isSlot":false,"src":"4669:5:36","valueSize":1}],"flags":["memory-safe"],"id":5145,"nodeType":"InlineAssembly","src":"4617:68:36"}]},"documentation":{"id":5137,"nodeType":"StructuredDocumentation","src":"4466:78:36","text":" @dev Store `value` at location `slot` in transient storage."},"id":5147,"implemented":true,"kind":"function","modifiers":[],"name":"tstore","nameLocation":"4558:6:36","nodeType":"FunctionDefinition","parameters":{"id":5143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5140,"mutability":"mutable","name":"slot","nameLocation":"4577:4:36","nodeType":"VariableDeclaration","scope":5147,"src":"4565:16:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256Slot_$5027","typeString":"TransientSlot.Uint256Slot"},"typeName":{"id":5139,"nodeType":"UserDefinedTypeName","pathNode":{"id":5138,"name":"Uint256Slot","nameLocations":["4565:11:36"],"nodeType":"IdentifierPath","referencedDeclaration":5027,"src":"4565:11:36"},"referencedDeclaration":5027,"src":"4565:11:36","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256Slot_$5027","typeString":"TransientSlot.Uint256Slot"}},"visibility":"internal"},{"constant":false,"id":5142,"mutability":"mutable","name":"value","nameLocation":"4591:5:36","nodeType":"VariableDeclaration","scope":5147,"src":"4583:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5141,"name":"uint256","nodeType":"ElementaryTypeName","src":"4583:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4564:33:36"},"returnParameters":{"id":5144,"nodeType":"ParameterList","parameters":[],"src":"4607:0:36"},"scope":5170,"src":"4549:142:36","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5157,"nodeType":"Block","src":"4855:85:36","statements":[{"AST":{"nativeSrc":"4890:44:36","nodeType":"YulBlock","src":"4890:44:36","statements":[{"nativeSrc":"4904:20:36","nodeType":"YulAssignment","src":"4904:20:36","value":{"arguments":[{"name":"slot","nativeSrc":"4919:4:36","nodeType":"YulIdentifier","src":"4919:4:36"}],"functionName":{"name":"tload","nativeSrc":"4913:5:36","nodeType":"YulIdentifier","src":"4913:5:36"},"nativeSrc":"4913:11:36","nodeType":"YulFunctionCall","src":"4913:11:36"},"variableNames":[{"name":"value","nativeSrc":"4904:5:36","nodeType":"YulIdentifier","src":"4904:5:36"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":5151,"isOffset":false,"isSlot":false,"src":"4919:4:36","valueSize":1},{"declaration":5154,"isOffset":false,"isSlot":false,"src":"4904:5:36","valueSize":1}],"flags":["memory-safe"],"id":5156,"nodeType":"InlineAssembly","src":"4865:69:36"}]},"documentation":{"id":5148,"nodeType":"StructuredDocumentation","src":"4697:84:36","text":" @dev Load the value held at location `slot` in transient storage."},"id":5158,"implemented":true,"kind":"function","modifiers":[],"name":"tload","nameLocation":"4795:5:36","nodeType":"FunctionDefinition","parameters":{"id":5152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5151,"mutability":"mutable","name":"slot","nameLocation":"4812:4:36","nodeType":"VariableDeclaration","scope":5158,"src":"4801:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Int256Slot_$5044","typeString":"TransientSlot.Int256Slot"},"typeName":{"id":5150,"nodeType":"UserDefinedTypeName","pathNode":{"id":5149,"name":"Int256Slot","nameLocations":["4801:10:36"],"nodeType":"IdentifierPath","referencedDeclaration":5044,"src":"4801:10:36"},"referencedDeclaration":5044,"src":"4801:10:36","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Int256Slot_$5044","typeString":"TransientSlot.Int256Slot"}},"visibility":"internal"}],"src":"4800:17:36"},"returnParameters":{"id":5155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5154,"mutability":"mutable","name":"value","nameLocation":"4848:5:36","nodeType":"VariableDeclaration","scope":5158,"src":"4841:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5153,"name":"int256","nodeType":"ElementaryTypeName","src":"4841:6:36","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"4840:14:36"},"scope":5170,"src":"4786:154:36","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5168,"nodeType":"Block","src":"5085:84:36","statements":[{"AST":{"nativeSrc":"5120:43:36","nodeType":"YulBlock","src":"5120:43:36","statements":[{"expression":{"arguments":[{"name":"slot","nativeSrc":"5141:4:36","nodeType":"YulIdentifier","src":"5141:4:36"},{"name":"value","nativeSrc":"5147:5:36","nodeType":"YulIdentifier","src":"5147:5:36"}],"functionName":{"name":"tstore","nativeSrc":"5134:6:36","nodeType":"YulIdentifier","src":"5134:6:36"},"nativeSrc":"5134:19:36","nodeType":"YulFunctionCall","src":"5134:19:36"},"nativeSrc":"5134:19:36","nodeType":"YulExpressionStatement","src":"5134:19:36"}]},"evmVersion":"cancun","externalReferences":[{"declaration":5162,"isOffset":false,"isSlot":false,"src":"5141:4:36","valueSize":1},{"declaration":5164,"isOffset":false,"isSlot":false,"src":"5147:5:36","valueSize":1}],"flags":["memory-safe"],"id":5167,"nodeType":"InlineAssembly","src":"5095:68:36"}]},"documentation":{"id":5159,"nodeType":"StructuredDocumentation","src":"4946:78:36","text":" @dev Store `value` at location `slot` in transient storage."},"id":5169,"implemented":true,"kind":"function","modifiers":[],"name":"tstore","nameLocation":"5038:6:36","nodeType":"FunctionDefinition","parameters":{"id":5165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5162,"mutability":"mutable","name":"slot","nameLocation":"5056:4:36","nodeType":"VariableDeclaration","scope":5169,"src":"5045:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Int256Slot_$5044","typeString":"TransientSlot.Int256Slot"},"typeName":{"id":5161,"nodeType":"UserDefinedTypeName","pathNode":{"id":5160,"name":"Int256Slot","nameLocations":["5045:10:36"],"nodeType":"IdentifierPath","referencedDeclaration":5044,"src":"5045:10:36"},"referencedDeclaration":5044,"src":"5045:10:36","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Int256Slot_$5044","typeString":"TransientSlot.Int256Slot"}},"visibility":"internal"},{"constant":false,"id":5164,"mutability":"mutable","name":"value","nameLocation":"5069:5:36","nodeType":"VariableDeclaration","scope":5169,"src":"5062:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5163,"name":"int256","nodeType":"ElementaryTypeName","src":"5062:6:36","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"5044:31:36"},"returnParameters":{"id":5166,"nodeType":"ParameterList","parameters":[],"src":"5085:0:36"},"scope":5170,"src":"5029:140:36","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":5171,"src":"1266:3905:36","usedErrors":[],"usedEvents":[]}],"src":"300:4872:36"},"id":36},"contracts/Interfaces.sol":{"ast":{"absolutePath":"contracts/Interfaces.sol","exportedSymbols":{"IComptroller":[5454],"IERC20Upgradeable":[617],"IFlashLoanReceiver":[5480],"IProtocolShareReserve":[5507],"IVBNB":[5293],"IVToken":[5277],"IWBNB":[5491],"ResilientOracleInterface":[4844]},"id":5508,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":5172,"literals":["solidity","^","0.8",".25"],"nodeType":"PragmaDirective","src":"41:24:37"},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol","id":5174,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5508,"sourceUnit":618,"src":"67:106:37","symbolAliases":[{"foreign":{"id":5173,"name":"IERC20Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"76:17:37","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol","file":"@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol","id":5176,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5508,"sourceUnit":4857,"src":"174:106:37","symbolAliases":[{"foreign":{"id":5175,"name":"ResilientOracleInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4844,"src":"183:24:37","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":5177,"name":"IERC20Upgradeable","nameLocations":["303:17:37"],"nodeType":"IdentifierPath","referencedDeclaration":617,"src":"303:17:37"},"id":5178,"nodeType":"InheritanceSpecifier","src":"303:17:37"}],"canonicalName":"IVToken","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":5277,"linearizedBaseContracts":[5277,617],"name":"IVToken","nameLocation":"292:7:37","nodeType":"ContractDefinition","nodes":[{"functionSelector":"a6afed95","id":5183,"implemented":false,"kind":"function","modifiers":[],"name":"accrueInterest","nameLocation":"336:14:37","nodeType":"FunctionDefinition","parameters":{"id":5179,"nodeType":"ParameterList","parameters":[],"src":"350:2:37"},"returnParameters":{"id":5182,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5181,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5183,"src":"371:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5180,"name":"uint256","nodeType":"ElementaryTypeName","src":"371:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"370:9:37"},"scope":5277,"src":"327:53:37","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"db006a75","id":5190,"implemented":false,"kind":"function","modifiers":[],"name":"redeem","nameLocation":"395:6:37","nodeType":"FunctionDefinition","parameters":{"id":5186,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5185,"mutability":"mutable","name":"redeemTokens","nameLocation":"410:12:37","nodeType":"VariableDeclaration","scope":5190,"src":"402:20:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5184,"name":"uint256","nodeType":"ElementaryTypeName","src":"402:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"401:22:37"},"returnParameters":{"id":5189,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5188,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5190,"src":"442:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5187,"name":"uint256","nodeType":"ElementaryTypeName","src":"442:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"441:9:37"},"scope":5277,"src":"386:65:37","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"852a12e3","id":5197,"implemented":false,"kind":"function","modifiers":[],"name":"redeemUnderlying","nameLocation":"466:16:37","nodeType":"FunctionDefinition","parameters":{"id":5193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5192,"mutability":"mutable","name":"redeemAmount","nameLocation":"491:12:37","nodeType":"VariableDeclaration","scope":5197,"src":"483:20:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5191,"name":"uint256","nodeType":"ElementaryTypeName","src":"483:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"482:22:37"},"returnParameters":{"id":5196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5195,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5197,"src":"523:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5194,"name":"uint256","nodeType":"ElementaryTypeName","src":"523:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"522:9:37"},"scope":5277,"src":"457:75:37","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"17bfdfbc","id":5204,"implemented":false,"kind":"function","modifiers":[],"name":"borrowBalanceCurrent","nameLocation":"547:20:37","nodeType":"FunctionDefinition","parameters":{"id":5200,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5199,"mutability":"mutable","name":"borrower","nameLocation":"576:8:37","nodeType":"VariableDeclaration","scope":5204,"src":"568:16:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5198,"name":"address","nodeType":"ElementaryTypeName","src":"568:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"567:18:37"},"returnParameters":{"id":5203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5202,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5204,"src":"604:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5201,"name":"uint256","nodeType":"ElementaryTypeName","src":"604:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"603:9:37"},"scope":5277,"src":"538:75:37","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"3af9e669","id":5211,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOfUnderlying","nameLocation":"628:19:37","nodeType":"FunctionDefinition","parameters":{"id":5207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5206,"mutability":"mutable","name":"owner","nameLocation":"656:5:37","nodeType":"VariableDeclaration","scope":5211,"src":"648:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5205,"name":"address","nodeType":"ElementaryTypeName","src":"648:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"647:15:37"},"returnParameters":{"id":5210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5209,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5211,"src":"681:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5208,"name":"uint256","nodeType":"ElementaryTypeName","src":"681:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"680:9:37"},"scope":5277,"src":"619:71:37","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"b2a02ff1","id":5222,"implemented":false,"kind":"function","modifiers":[],"name":"seize","nameLocation":"705:5:37","nodeType":"FunctionDefinition","parameters":{"id":5218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5213,"mutability":"mutable","name":"liquidator","nameLocation":"719:10:37","nodeType":"VariableDeclaration","scope":5222,"src":"711:18:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5212,"name":"address","nodeType":"ElementaryTypeName","src":"711:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5215,"mutability":"mutable","name":"borrower","nameLocation":"739:8:37","nodeType":"VariableDeclaration","scope":5222,"src":"731:16:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5214,"name":"address","nodeType":"ElementaryTypeName","src":"731:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5217,"mutability":"mutable","name":"seizeTokens","nameLocation":"754:11:37","nodeType":"VariableDeclaration","scope":5222,"src":"749:16:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5216,"name":"uint","nodeType":"ElementaryTypeName","src":"749:4:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"710:56:37"},"returnParameters":{"id":5221,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5220,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5222,"src":"785:4:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5219,"name":"uint","nodeType":"ElementaryTypeName","src":"785:4:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"784:6:37"},"scope":5277,"src":"696:95:37","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"23323e03","id":5231,"implemented":false,"kind":"function","modifiers":[],"name":"mintBehalf","nameLocation":"806:10:37","nodeType":"FunctionDefinition","parameters":{"id":5227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5224,"mutability":"mutable","name":"receiver","nameLocation":"825:8:37","nodeType":"VariableDeclaration","scope":5231,"src":"817:16:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5223,"name":"address","nodeType":"ElementaryTypeName","src":"817:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5226,"mutability":"mutable","name":"mintAmount","nameLocation":"840:10:37","nodeType":"VariableDeclaration","scope":5231,"src":"835:15:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5225,"name":"uint","nodeType":"ElementaryTypeName","src":"835:4:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"816:35:37"},"returnParameters":{"id":5230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5229,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5231,"src":"870:4:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5228,"name":"uint","nodeType":"ElementaryTypeName","src":"870:4:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"869:6:37"},"scope":5277,"src":"797:79:37","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"856e5bb3","id":5240,"implemented":false,"kind":"function","modifiers":[],"name":"borrowBehalf","nameLocation":"891:12:37","nodeType":"FunctionDefinition","parameters":{"id":5236,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5233,"mutability":"mutable","name":"borrower","nameLocation":"912:8:37","nodeType":"VariableDeclaration","scope":5240,"src":"904:16:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5232,"name":"address","nodeType":"ElementaryTypeName","src":"904:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5235,"mutability":"mutable","name":"borrowAmount","nameLocation":"927:12:37","nodeType":"VariableDeclaration","scope":5240,"src":"922:17:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5234,"name":"uint","nodeType":"ElementaryTypeName","src":"922:4:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"903:37:37"},"returnParameters":{"id":5239,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5238,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5240,"src":"959:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5237,"name":"uint256","nodeType":"ElementaryTypeName","src":"959:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"958:9:37"},"scope":5277,"src":"882:86:37","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"2608f818","id":5249,"implemented":false,"kind":"function","modifiers":[],"name":"repayBorrowBehalf","nameLocation":"983:17:37","nodeType":"FunctionDefinition","parameters":{"id":5245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5242,"mutability":"mutable","name":"borrower","nameLocation":"1009:8:37","nodeType":"VariableDeclaration","scope":5249,"src":"1001:16:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5241,"name":"address","nodeType":"ElementaryTypeName","src":"1001:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5244,"mutability":"mutable","name":"repayAmount","nameLocation":"1024:11:37","nodeType":"VariableDeclaration","scope":5249,"src":"1019:16:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5243,"name":"uint","nodeType":"ElementaryTypeName","src":"1019:4:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1000:36:37"},"returnParameters":{"id":5248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5247,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5249,"src":"1055:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5246,"name":"uint256","nodeType":"ElementaryTypeName","src":"1055:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1054:9:37"},"scope":5277,"src":"974:90:37","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"df3a516e","id":5258,"implemented":false,"kind":"function","modifiers":[],"name":"redeemUnderlyingBehalf","nameLocation":"1079:22:37","nodeType":"FunctionDefinition","parameters":{"id":5254,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5251,"mutability":"mutable","name":"redeemer","nameLocation":"1110:8:37","nodeType":"VariableDeclaration","scope":5258,"src":"1102:16:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5250,"name":"address","nodeType":"ElementaryTypeName","src":"1102:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5253,"mutability":"mutable","name":"redeemAmount","nameLocation":"1125:12:37","nodeType":"VariableDeclaration","scope":5258,"src":"1120:17:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5252,"name":"uint","nodeType":"ElementaryTypeName","src":"1120:4:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1101:37:37"},"returnParameters":{"id":5257,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5256,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5258,"src":"1157:4:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5255,"name":"uint","nodeType":"ElementaryTypeName","src":"1157:4:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1156:6:37"},"scope":5277,"src":"1070:93:37","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"5fe3b567","id":5264,"implemented":false,"kind":"function","modifiers":[],"name":"comptroller","nameLocation":"1178:11:37","nodeType":"FunctionDefinition","parameters":{"id":5259,"nodeType":"ParameterList","parameters":[],"src":"1189:2:37"},"returnParameters":{"id":5263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5262,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5264,"src":"1215:12:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IComptroller_$5454","typeString":"contract IComptroller"},"typeName":{"id":5261,"nodeType":"UserDefinedTypeName","pathNode":{"id":5260,"name":"IComptroller","nameLocations":["1215:12:37"],"nodeType":"IdentifierPath","referencedDeclaration":5454,"src":"1215:12:37"},"referencedDeclaration":5454,"src":"1215:12:37","typeDescriptions":{"typeIdentifier":"t_contract$_IComptroller_$5454","typeString":"contract IComptroller"}},"visibility":"internal"}],"src":"1214:14:37"},"scope":5277,"src":"1169:60:37","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"95dd9193","id":5271,"implemented":false,"kind":"function","modifiers":[],"name":"borrowBalanceStored","nameLocation":"1244:19:37","nodeType":"FunctionDefinition","parameters":{"id":5267,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5266,"mutability":"mutable","name":"account","nameLocation":"1272:7:37","nodeType":"VariableDeclaration","scope":5271,"src":"1264:15:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5265,"name":"address","nodeType":"ElementaryTypeName","src":"1264:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1263:17:37"},"returnParameters":{"id":5270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5269,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5271,"src":"1304:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5268,"name":"uint256","nodeType":"ElementaryTypeName","src":"1304:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1303:9:37"},"scope":5277,"src":"1235:78:37","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"6f307dc3","id":5276,"implemented":false,"kind":"function","modifiers":[],"name":"underlying","nameLocation":"1328:10:37","nodeType":"FunctionDefinition","parameters":{"id":5272,"nodeType":"ParameterList","parameters":[],"src":"1338:2:37"},"returnParameters":{"id":5275,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5274,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5276,"src":"1364:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5273,"name":"address","nodeType":"ElementaryTypeName","src":"1364:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1363:9:37"},"scope":5277,"src":"1319:54:37","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":5508,"src":"282:1093:37","usedErrors":[],"usedEvents":[551,560]},{"abstract":false,"baseContracts":[{"baseName":{"id":5278,"name":"IVToken","nameLocations":["1396:7:37"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"1396:7:37"},"id":5279,"nodeType":"InheritanceSpecifier","src":"1396:7:37"}],"canonicalName":"IVBNB","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":5293,"linearizedBaseContracts":[5293,5277,617],"name":"IVBNB","nameLocation":"1387:5:37","nodeType":"ContractDefinition","nodes":[{"functionSelector":"e5974619","id":5284,"implemented":false,"kind":"function","modifiers":[],"name":"repayBorrowBehalf","nameLocation":"1419:17:37","nodeType":"FunctionDefinition","parameters":{"id":5282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5281,"mutability":"mutable","name":"borrower","nameLocation":"1445:8:37","nodeType":"VariableDeclaration","scope":5284,"src":"1437:16:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5280,"name":"address","nodeType":"ElementaryTypeName","src":"1437:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1436:18:37"},"returnParameters":{"id":5283,"nodeType":"ParameterList","parameters":[],"src":"1471:0:37"},"scope":5293,"src":"1410:62:37","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"aae40a2a","id":5292,"implemented":false,"kind":"function","modifiers":[],"name":"liquidateBorrow","nameLocation":"1487:15:37","nodeType":"FunctionDefinition","parameters":{"id":5290,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5286,"mutability":"mutable","name":"borrower","nameLocation":"1511:8:37","nodeType":"VariableDeclaration","scope":5292,"src":"1503:16:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5285,"name":"address","nodeType":"ElementaryTypeName","src":"1503:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5289,"mutability":"mutable","name":"vTokenCollateral","nameLocation":"1529:16:37","nodeType":"VariableDeclaration","scope":5292,"src":"1521:24:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":5288,"nodeType":"UserDefinedTypeName","pathNode":{"id":5287,"name":"IVToken","nameLocations":["1521:7:37"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"1521:7:37"},"referencedDeclaration":5277,"src":"1521:7:37","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"}],"src":"1502:44:37"},"returnParameters":{"id":5291,"nodeType":"ParameterList","parameters":[],"src":"1563:0:37"},"scope":5293,"src":"1478:86:37","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":5508,"src":"1377:189:37","usedErrors":[],"usedEvents":[551,560]},{"abstract":false,"baseContracts":[],"canonicalName":"IComptroller","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":5454,"linearizedBaseContracts":[5454],"name":"IComptroller","nameLocation":"1578:12:37","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IComptroller.Action","id":5303,"members":[{"id":5294,"name":"MINT","nameLocation":"1619:4:37","nodeType":"EnumValue","src":"1619:4:37"},{"id":5295,"name":"REDEEM","nameLocation":"1633:6:37","nodeType":"EnumValue","src":"1633:6:37"},{"id":5296,"name":"BORROW","nameLocation":"1649:6:37","nodeType":"EnumValue","src":"1649:6:37"},{"id":5297,"name":"REPAY","nameLocation":"1665:5:37","nodeType":"EnumValue","src":"1665:5:37"},{"id":5298,"name":"SEIZE","nameLocation":"1680:5:37","nodeType":"EnumValue","src":"1680:5:37"},{"id":5299,"name":"LIQUIDATE","nameLocation":"1695:9:37","nodeType":"EnumValue","src":"1695:9:37"},{"id":5300,"name":"TRANSFER","nameLocation":"1714:8:37","nodeType":"EnumValue","src":"1714:8:37"},{"id":5301,"name":"ENTER_MARKET","nameLocation":"1732:12:37","nodeType":"EnumValue","src":"1732:12:37"},{"id":5302,"name":"EXIT_MARKET","nameLocation":"1754:11:37","nodeType":"EnumValue","src":"1754:11:37"}],"name":"Action","nameLocation":"1602:6:37","nodeType":"EnumDefinition","src":"1597:174:37"},{"functionSelector":"2b5d790c","id":5315,"implemented":false,"kind":"function","modifiers":[],"name":"_setActionsPaused","nameLocation":"1786:17:37","nodeType":"FunctionDefinition","parameters":{"id":5313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5306,"mutability":"mutable","name":"markets_","nameLocation":"1823:8:37","nodeType":"VariableDeclaration","scope":5315,"src":"1804:27:37","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":5304,"name":"address","nodeType":"ElementaryTypeName","src":"1804:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5305,"nodeType":"ArrayTypeName","src":"1804:9:37","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":5310,"mutability":"mutable","name":"actions_","nameLocation":"1851:8:37","nodeType":"VariableDeclaration","scope":5315,"src":"1833:26:37","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_Action_$5303_$dyn_calldata_ptr","typeString":"enum IComptroller.Action[]"},"typeName":{"baseType":{"id":5308,"nodeType":"UserDefinedTypeName","pathNode":{"id":5307,"name":"Action","nameLocations":["1833:6:37"],"nodeType":"IdentifierPath","referencedDeclaration":5303,"src":"1833:6:37"},"referencedDeclaration":5303,"src":"1833:6:37","typeDescriptions":{"typeIdentifier":"t_enum$_Action_$5303","typeString":"enum IComptroller.Action"}},"id":5309,"nodeType":"ArrayTypeName","src":"1833:8:37","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_Action_$5303_$dyn_storage_ptr","typeString":"enum IComptroller.Action[]"}},"visibility":"internal"},{"constant":false,"id":5312,"mutability":"mutable","name":"paused_","nameLocation":"1866:7:37","nodeType":"VariableDeclaration","scope":5315,"src":"1861:12:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5311,"name":"bool","nodeType":"ElementaryTypeName","src":"1861:4:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1803:71:37"},"returnParameters":{"id":5314,"nodeType":"ParameterList","parameters":[],"src":"1883:0:37"},"scope":5454,"src":"1777:107:37","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"c2998238","id":5324,"implemented":false,"kind":"function","modifiers":[],"name":"enterMarkets","nameLocation":"1899:12:37","nodeType":"FunctionDefinition","parameters":{"id":5319,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5318,"mutability":"mutable","name":"vTokens","nameLocation":"1931:7:37","nodeType":"VariableDeclaration","scope":5324,"src":"1912:26:37","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":5316,"name":"address","nodeType":"ElementaryTypeName","src":"1912:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5317,"nodeType":"ArrayTypeName","src":"1912:9:37","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1911:28:37"},"returnParameters":{"id":5323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5322,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5324,"src":"1958:16:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":5320,"name":"uint256","nodeType":"ElementaryTypeName","src":"1958:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5321,"nodeType":"ArrayTypeName","src":"1958:9:37","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"1957:18:37"},"scope":5454,"src":"1890:86:37","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"d585c3c6","id":5333,"implemented":false,"kind":"function","modifiers":[],"name":"enterMarketBehalf","nameLocation":"1991:17:37","nodeType":"FunctionDefinition","parameters":{"id":5329,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5326,"mutability":"mutable","name":"onBehalf","nameLocation":"2017:8:37","nodeType":"VariableDeclaration","scope":5333,"src":"2009:16:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5325,"name":"address","nodeType":"ElementaryTypeName","src":"2009:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5328,"mutability":"mutable","name":"vToken","nameLocation":"2035:6:37","nodeType":"VariableDeclaration","scope":5333,"src":"2027:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5327,"name":"address","nodeType":"ElementaryTypeName","src":"2027:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2008:34:37"},"returnParameters":{"id":5332,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5331,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5333,"src":"2061:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5330,"name":"uint256","nodeType":"ElementaryTypeName","src":"2061:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2060:9:37"},"scope":5454,"src":"1982:88:37","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"24991d66","id":5342,"implemented":false,"kind":"function","modifiers":[],"name":"enterMarket","nameLocation":"2085:11:37","nodeType":"FunctionDefinition","parameters":{"id":5338,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5335,"mutability":"mutable","name":"user","nameLocation":"2105:4:37","nodeType":"VariableDeclaration","scope":5342,"src":"2097:12:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5334,"name":"address","nodeType":"ElementaryTypeName","src":"2097:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5337,"mutability":"mutable","name":"vToken","nameLocation":"2119:6:37","nodeType":"VariableDeclaration","scope":5342,"src":"2111:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5336,"name":"address","nodeType":"ElementaryTypeName","src":"2111:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2096:30:37"},"returnParameters":{"id":5341,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5340,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5342,"src":"2145:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5339,"name":"uint256","nodeType":"ElementaryTypeName","src":"2145:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2144:9:37"},"scope":5454,"src":"2076:78:37","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"4ada90af","id":5347,"implemented":false,"kind":"function","modifiers":[],"name":"liquidationIncentiveMantissa","nameLocation":"2169:28:37","nodeType":"FunctionDefinition","parameters":{"id":5343,"nodeType":"ParameterList","parameters":[],"src":"2197:2:37"},"returnParameters":{"id":5346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5345,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5347,"src":"2223:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5344,"name":"uint256","nodeType":"ElementaryTypeName","src":"2223:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2222:9:37"},"scope":5454,"src":"2160:72:37","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"9254f5e5","id":5352,"implemented":false,"kind":"function","modifiers":[],"name":"vaiController","nameLocation":"2247:13:37","nodeType":"FunctionDefinition","parameters":{"id":5348,"nodeType":"ParameterList","parameters":[],"src":"2260:2:37"},"returnParameters":{"id":5351,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5350,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5352,"src":"2286:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5349,"name":"address","nodeType":"ElementaryTypeName","src":"2286:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2285:9:37"},"scope":5454,"src":"2238:57:37","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"9bb27d62","id":5357,"implemented":false,"kind":"function","modifiers":[],"name":"liquidatorContract","nameLocation":"2310:18:37","nodeType":"FunctionDefinition","parameters":{"id":5353,"nodeType":"ParameterList","parameters":[],"src":"2328:2:37"},"returnParameters":{"id":5356,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5355,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5357,"src":"2354:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5354,"name":"address","nodeType":"ElementaryTypeName","src":"2354:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2353:9:37"},"scope":5454,"src":"2301:62:37","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"7dc0d1d0","id":5363,"implemented":false,"kind":"function","modifiers":[],"name":"oracle","nameLocation":"2378:6:37","nodeType":"FunctionDefinition","parameters":{"id":5358,"nodeType":"ParameterList","parameters":[],"src":"2384:2:37"},"returnParameters":{"id":5362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5361,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5363,"src":"2410:24:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ResilientOracleInterface_$4844","typeString":"contract ResilientOracleInterface"},"typeName":{"id":5360,"nodeType":"UserDefinedTypeName","pathNode":{"id":5359,"name":"ResilientOracleInterface","nameLocations":["2410:24:37"],"nodeType":"IdentifierPath","referencedDeclaration":4844,"src":"2410:24:37"},"referencedDeclaration":4844,"src":"2410:24:37","typeDescriptions":{"typeIdentifier":"t_contract$_ResilientOracleInterface_$4844","typeString":"contract ResilientOracleInterface"}},"visibility":"internal"}],"src":"2409:26:37"},"scope":5454,"src":"2369:67:37","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"e85a2960","id":5373,"implemented":false,"kind":"function","modifiers":[],"name":"actionPaused","nameLocation":"2451:12:37","nodeType":"FunctionDefinition","parameters":{"id":5369,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5365,"mutability":"mutable","name":"market","nameLocation":"2472:6:37","nodeType":"VariableDeclaration","scope":5373,"src":"2464:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5364,"name":"address","nodeType":"ElementaryTypeName","src":"2464:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5368,"mutability":"mutable","name":"action","nameLocation":"2487:6:37","nodeType":"VariableDeclaration","scope":5373,"src":"2480:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Action_$5303","typeString":"enum IComptroller.Action"},"typeName":{"id":5367,"nodeType":"UserDefinedTypeName","pathNode":{"id":5366,"name":"Action","nameLocations":["2480:6:37"],"nodeType":"IdentifierPath","referencedDeclaration":5303,"src":"2480:6:37"},"referencedDeclaration":5303,"src":"2480:6:37","typeDescriptions":{"typeIdentifier":"t_enum$_Action_$5303","typeString":"enum IComptroller.Action"}},"visibility":"internal"}],"src":"2463:31:37"},"returnParameters":{"id":5372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5371,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5373,"src":"2518:4:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5370,"name":"bool","nodeType":"ElementaryTypeName","src":"2518:4:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2517:6:37"},"scope":5454,"src":"2442:82:37","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"8e8f294b","id":5384,"implemented":false,"kind":"function","modifiers":[],"name":"markets","nameLocation":"2539:7:37","nodeType":"FunctionDefinition","parameters":{"id":5376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5375,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5384,"src":"2547:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5374,"name":"address","nodeType":"ElementaryTypeName","src":"2547:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2546:9:37"},"returnParameters":{"id":5383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5378,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5384,"src":"2579:4:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5377,"name":"bool","nodeType":"ElementaryTypeName","src":"2579:4:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5380,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5384,"src":"2585:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5379,"name":"uint256","nodeType":"ElementaryTypeName","src":"2585:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5382,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5384,"src":"2594:4:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5381,"name":"bool","nodeType":"ElementaryTypeName","src":"2594:4:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2578:21:37"},"scope":5454,"src":"2530:70:37","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"8c1ac18a","id":5391,"implemented":false,"kind":"function","modifiers":[],"name":"isForcedLiquidationEnabled","nameLocation":"2615:26:37","nodeType":"FunctionDefinition","parameters":{"id":5387,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5386,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5391,"src":"2642:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5385,"name":"address","nodeType":"ElementaryTypeName","src":"2642:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2641:9:37"},"returnParameters":{"id":5390,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5389,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5391,"src":"2674:4:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5388,"name":"bool","nodeType":"ElementaryTypeName","src":"2674:4:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2673:6:37"},"scope":5454,"src":"2606:74:37","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"10b98338","id":5400,"implemented":false,"kind":"function","modifiers":[],"name":"approvedDelegates","nameLocation":"2695:17:37","nodeType":"FunctionDefinition","parameters":{"id":5396,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5393,"mutability":"mutable","name":"borrower","nameLocation":"2721:8:37","nodeType":"VariableDeclaration","scope":5400,"src":"2713:16:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5392,"name":"address","nodeType":"ElementaryTypeName","src":"2713:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5395,"mutability":"mutable","name":"delegate","nameLocation":"2739:8:37","nodeType":"VariableDeclaration","scope":5400,"src":"2731:16:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5394,"name":"address","nodeType":"ElementaryTypeName","src":"2731:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2712:36:37"},"returnParameters":{"id":5399,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5398,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5400,"src":"2772:4:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5397,"name":"bool","nodeType":"ElementaryTypeName","src":"2772:4:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2771:6:37"},"scope":5454,"src":"2686:92:37","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"5ec88c79","id":5411,"implemented":false,"kind":"function","modifiers":[],"name":"getAccountLiquidity","nameLocation":"2793:19:37","nodeType":"FunctionDefinition","parameters":{"id":5403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5402,"mutability":"mutable","name":"account","nameLocation":"2821:7:37","nodeType":"VariableDeclaration","scope":5411,"src":"2813:15:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5401,"name":"address","nodeType":"ElementaryTypeName","src":"2813:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2812:17:37"},"returnParameters":{"id":5410,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5405,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5411,"src":"2853:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5404,"name":"uint256","nodeType":"ElementaryTypeName","src":"2853:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5407,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5411,"src":"2862:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5406,"name":"uint256","nodeType":"ElementaryTypeName","src":"2862:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5409,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5411,"src":"2871:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5408,"name":"uint256","nodeType":"ElementaryTypeName","src":"2871:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2852:27:37"},"scope":5454,"src":"2784:96:37","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"929fe9a1","id":5421,"implemented":false,"kind":"function","modifiers":[],"name":"checkMembership","nameLocation":"2895:15:37","nodeType":"FunctionDefinition","parameters":{"id":5417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5413,"mutability":"mutable","name":"account","nameLocation":"2919:7:37","nodeType":"VariableDeclaration","scope":5421,"src":"2911:15:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5412,"name":"address","nodeType":"ElementaryTypeName","src":"2911:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5416,"mutability":"mutable","name":"vToken","nameLocation":"2936:6:37","nodeType":"VariableDeclaration","scope":5421,"src":"2928:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":5415,"nodeType":"UserDefinedTypeName","pathNode":{"id":5414,"name":"IVToken","nameLocations":["2928:7:37"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"2928:7:37"},"referencedDeclaration":5277,"src":"2928:7:37","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"}],"src":"2910:33:37"},"returnParameters":{"id":5420,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5419,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5421,"src":"2967:4:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5418,"name":"bool","nodeType":"ElementaryTypeName","src":"2967:4:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2966:6:37"},"scope":5454,"src":"2886:87:37","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"528a174c","id":5432,"implemented":false,"kind":"function","modifiers":[],"name":"getBorrowingPower","nameLocation":"2988:17:37","nodeType":"FunctionDefinition","parameters":{"id":5424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5423,"mutability":"mutable","name":"account","nameLocation":"3023:7:37","nodeType":"VariableDeclaration","scope":5432,"src":"3015:15:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5422,"name":"address","nodeType":"ElementaryTypeName","src":"3015:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3005:31:37"},"returnParameters":{"id":5431,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5426,"mutability":"mutable","name":"error","nameLocation":"3068:5:37","nodeType":"VariableDeclaration","scope":5432,"src":"3060:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5425,"name":"uint256","nodeType":"ElementaryTypeName","src":"3060:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5428,"mutability":"mutable","name":"liquidity","nameLocation":"3083:9:37","nodeType":"VariableDeclaration","scope":5432,"src":"3075:17:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5427,"name":"uint256","nodeType":"ElementaryTypeName","src":"3075:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5430,"mutability":"mutable","name":"shortfall","nameLocation":"3102:9:37","nodeType":"VariableDeclaration","scope":5432,"src":"3094:17:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5429,"name":"uint256","nodeType":"ElementaryTypeName","src":"3094:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3059:53:37"},"scope":5454,"src":"2979:134:37","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"04ef9d58","id":5437,"implemented":false,"kind":"function","modifiers":[],"name":"treasuryPercent","nameLocation":"3128:15:37","nodeType":"FunctionDefinition","parameters":{"id":5433,"nodeType":"ParameterList","parameters":[],"src":"3143:2:37"},"returnParameters":{"id":5436,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5435,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5437,"src":"3169:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5434,"name":"uint256","nodeType":"ElementaryTypeName","src":"3169:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3168:9:37"},"scope":5454,"src":"3119:59:37","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"5544ed9c","id":5453,"implemented":false,"kind":"function","modifiers":[],"name":"executeFlashLoan","nameLocation":"3193:16:37","nodeType":"FunctionDefinition","parameters":{"id":5451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5439,"mutability":"mutable","name":"onBehalf","nameLocation":"3235:8:37","nodeType":"VariableDeclaration","scope":5453,"src":"3219:24:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":5438,"name":"address","nodeType":"ElementaryTypeName","src":"3219:15:37","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":5441,"mutability":"mutable","name":"receiver","nameLocation":"3269:8:37","nodeType":"VariableDeclaration","scope":5453,"src":"3253:24:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":5440,"name":"address","nodeType":"ElementaryTypeName","src":"3253:15:37","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":5445,"mutability":"mutable","name":"vTokens","nameLocation":"3304:7:37","nodeType":"VariableDeclaration","scope":5453,"src":"3287:24:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr","typeString":"contract IVToken[]"},"typeName":{"baseType":{"id":5443,"nodeType":"UserDefinedTypeName","pathNode":{"id":5442,"name":"IVToken","nameLocations":["3287:7:37"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"3287:7:37"},"referencedDeclaration":5277,"src":"3287:7:37","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":5444,"nodeType":"ArrayTypeName","src":"3287:9:37","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_storage_ptr","typeString":"contract IVToken[]"}},"visibility":"internal"},{"constant":false,"id":5448,"mutability":"mutable","name":"underlyingAmounts","nameLocation":"3338:17:37","nodeType":"VariableDeclaration","scope":5453,"src":"3321:34:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":5446,"name":"uint256","nodeType":"ElementaryTypeName","src":"3321:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5447,"nodeType":"ArrayTypeName","src":"3321:9:37","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":5450,"mutability":"mutable","name":"param","nameLocation":"3378:5:37","nodeType":"VariableDeclaration","scope":5453,"src":"3365:18:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5449,"name":"bytes","nodeType":"ElementaryTypeName","src":"3365:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3209:180:37"},"returnParameters":{"id":5452,"nodeType":"ParameterList","parameters":[],"src":"3398:0:37"},"scope":5454,"src":"3184:215:37","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":5508,"src":"1568:1833:37","usedErrors":[],"usedEvents":[]},{"abstract":false,"baseContracts":[],"canonicalName":"IFlashLoanReceiver","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":5480,"linearizedBaseContracts":[5480],"name":"IFlashLoanReceiver","nameLocation":"3413:18:37","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":5455,"nodeType":"StructuredDocumentation","src":"3438:1259:37","text":" @notice Executes an operation after receiving the flash-borrowed assets.\n @dev Implementation of this function must ensure at least the premium (fee) is repaid within the same transaction.\n      Any unpaid balance (principal + premium - repaid amount) will be added to the onBehalf address's borrow balance.\n @param vTokens The vToken contracts corresponding to the flash-borrowed underlying assets.\n @param amounts The amounts of each underlying asset that were flash-borrowed.\n @param premiums The premiums (fees) associated with each flash-borrowed asset.\n @param initiator The address that initiated the flash loan.\n @param onBehalf The address of the user whose debt position will be used for any unpaid flash loan balance.\n @param param Additional parameters encoded as bytes. These can be used to pass custom data to the receiver contract.\n @return success True if the operation succeeds (regardless of repayment amount), false if the operation fails.\n @return repayAmounts Array of uint256 representing the amounts to be repaid for each asset. The receiver contract\n         must approve these amounts to the respective vToken contracts before this function returns."},"functionSelector":"fc08f9f6","id":5479,"implemented":false,"kind":"function","modifiers":[],"name":"executeOperation","nameLocation":"4711:16:37","nodeType":"FunctionDefinition","parameters":{"id":5472,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5459,"mutability":"mutable","name":"vTokens","nameLocation":"4756:7:37","nodeType":"VariableDeclaration","scope":5479,"src":"4737:26:37","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_calldata_ptr","typeString":"contract IVToken[]"},"typeName":{"baseType":{"id":5457,"nodeType":"UserDefinedTypeName","pathNode":{"id":5456,"name":"IVToken","nameLocations":["4737:7:37"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"4737:7:37"},"referencedDeclaration":5277,"src":"4737:7:37","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":5458,"nodeType":"ArrayTypeName","src":"4737:9:37","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_storage_ptr","typeString":"contract IVToken[]"}},"visibility":"internal"},{"constant":false,"id":5462,"mutability":"mutable","name":"amounts","nameLocation":"4792:7:37","nodeType":"VariableDeclaration","scope":5479,"src":"4773:26:37","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":5460,"name":"uint256","nodeType":"ElementaryTypeName","src":"4773:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5461,"nodeType":"ArrayTypeName","src":"4773:9:37","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":5465,"mutability":"mutable","name":"premiums","nameLocation":"4828:8:37","nodeType":"VariableDeclaration","scope":5479,"src":"4809:27:37","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":5463,"name":"uint256","nodeType":"ElementaryTypeName","src":"4809:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5464,"nodeType":"ArrayTypeName","src":"4809:9:37","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":5467,"mutability":"mutable","name":"initiator","nameLocation":"4854:9:37","nodeType":"VariableDeclaration","scope":5479,"src":"4846:17:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5466,"name":"address","nodeType":"ElementaryTypeName","src":"4846:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5469,"mutability":"mutable","name":"onBehalf","nameLocation":"4881:8:37","nodeType":"VariableDeclaration","scope":5479,"src":"4873:16:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5468,"name":"address","nodeType":"ElementaryTypeName","src":"4873:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5471,"mutability":"mutable","name":"param","nameLocation":"4914:5:37","nodeType":"VariableDeclaration","scope":5479,"src":"4899:20:37","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5470,"name":"bytes","nodeType":"ElementaryTypeName","src":"4899:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4727:198:37"},"returnParameters":{"id":5478,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5474,"mutability":"mutable","name":"success","nameLocation":"4949:7:37","nodeType":"VariableDeclaration","scope":5479,"src":"4944:12:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5473,"name":"bool","nodeType":"ElementaryTypeName","src":"4944:4:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5477,"mutability":"mutable","name":"repayAmounts","nameLocation":"4975:12:37","nodeType":"VariableDeclaration","scope":5479,"src":"4958:29:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":5475,"name":"uint256","nodeType":"ElementaryTypeName","src":"4958:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5476,"nodeType":"ArrayTypeName","src":"4958:9:37","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"4943:45:37"},"scope":5480,"src":"4702:287:37","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":5508,"src":"3403:1588:37","usedErrors":[],"usedEvents":[]},{"abstract":false,"baseContracts":[{"baseName":{"id":5481,"name":"IERC20Upgradeable","nameLocations":["5012:17:37"],"nodeType":"IdentifierPath","referencedDeclaration":617,"src":"5012:17:37"},"id":5482,"nodeType":"InheritanceSpecifier","src":"5012:17:37"}],"canonicalName":"IWBNB","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":5491,"linearizedBaseContracts":[5491,617],"name":"IWBNB","nameLocation":"5003:5:37","nodeType":"ContractDefinition","nodes":[{"functionSelector":"d0e30db0","id":5485,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nameLocation":"5045:7:37","nodeType":"FunctionDefinition","parameters":{"id":5483,"nodeType":"ParameterList","parameters":[],"src":"5052:2:37"},"returnParameters":{"id":5484,"nodeType":"ParameterList","parameters":[],"src":"5071:0:37"},"scope":5491,"src":"5036:36:37","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"2e1a7d4d","id":5490,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"5087:8:37","nodeType":"FunctionDefinition","parameters":{"id":5488,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5487,"mutability":"mutable","name":"amount","nameLocation":"5104:6:37","nodeType":"VariableDeclaration","scope":5490,"src":"5096:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5486,"name":"uint256","nodeType":"ElementaryTypeName","src":"5096:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5095:16:37"},"returnParameters":{"id":5489,"nodeType":"ParameterList","parameters":[],"src":"5120:0:37"},"scope":5491,"src":"5078:43:37","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":5508,"src":"4993:130:37","usedErrors":[],"usedEvents":[551,560]},{"abstract":false,"baseContracts":[],"canonicalName":"IProtocolShareReserve","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":5507,"linearizedBaseContracts":[5507],"name":"IProtocolShareReserve","nameLocation":"5135:21:37","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IProtocolShareReserve.IncomeType","id":5496,"members":[{"id":5492,"name":"SPREAD","nameLocation":"5189:6:37","nodeType":"EnumValue","src":"5189:6:37"},{"id":5493,"name":"LIQUIDATION","nameLocation":"5205:11:37","nodeType":"EnumValue","src":"5205:11:37"},{"id":5494,"name":"ERC4626_WRAPPER_REWARDS","nameLocation":"5226:23:37","nodeType":"EnumValue","src":"5226:23:37"},{"id":5495,"name":"FLASHLOAN","nameLocation":"5259:9:37","nodeType":"EnumValue","src":"5259:9:37"}],"name":"IncomeType","nameLocation":"5168:10:37","nodeType":"EnumDefinition","src":"5163:111:37"},{"functionSelector":"16faecec","id":5506,"implemented":false,"kind":"function","modifiers":[],"name":"updateAssetsState","nameLocation":"5289:17:37","nodeType":"FunctionDefinition","parameters":{"id":5504,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5498,"mutability":"mutable","name":"comptroller","nameLocation":"5315:11:37","nodeType":"VariableDeclaration","scope":5506,"src":"5307:19:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5497,"name":"address","nodeType":"ElementaryTypeName","src":"5307:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5500,"mutability":"mutable","name":"asset","nameLocation":"5336:5:37","nodeType":"VariableDeclaration","scope":5506,"src":"5328:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5499,"name":"address","nodeType":"ElementaryTypeName","src":"5328:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5503,"mutability":"mutable","name":"incomeType","nameLocation":"5354:10:37","nodeType":"VariableDeclaration","scope":5506,"src":"5343:21:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_IncomeType_$5496","typeString":"enum IProtocolShareReserve.IncomeType"},"typeName":{"id":5502,"nodeType":"UserDefinedTypeName","pathNode":{"id":5501,"name":"IncomeType","nameLocations":["5343:10:37"],"nodeType":"IdentifierPath","referencedDeclaration":5496,"src":"5343:10:37"},"referencedDeclaration":5496,"src":"5343:10:37","typeDescriptions":{"typeIdentifier":"t_enum$_IncomeType_$5496","typeString":"enum IProtocolShareReserve.IncomeType"}},"visibility":"internal"}],"src":"5306:59:37"},"returnParameters":{"id":5505,"nodeType":"ParameterList","parameters":[],"src":"5374:0:37"},"scope":5507,"src":"5280:95:37","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":5508,"src":"5125:252:37","usedErrors":[],"usedEvents":[]}],"src":"41:5337:37"},"id":37},"contracts/LeverageManager/ILeverageStrategiesManager.sol":{"ast":{"absolutePath":"contracts/LeverageManager/ILeverageStrategiesManager.sol","exportedSymbols":{"ILeverageStrategiesManager":[5750],"IVToken":[5277]},"id":5751,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":5509,"literals":["solidity","0.8",".28"],"nodeType":"PragmaDirective","src":"41:23:38"},{"absolutePath":"contracts/Interfaces.sol","file":"../Interfaces.sol","id":5511,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5751,"sourceUnit":5508,"src":"66:44:38","symbolAliases":[{"foreign":{"id":5510,"name":"IVToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5277,"src":"75:7:38","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ILeverageStrategiesManager","contractDependencies":[],"contractKind":"interface","documentation":{"id":5512,"nodeType":"StructuredDocumentation","src":"112:426:38","text":" @title ILeverageStrategiesManager\n @author Venus Protocol\n @notice Interface for the Leverage Strategies Manager contract\n @dev This interface defines the functionality for entering and exiting leveraged positions\n      using flash loans and token swaps. The contract allows users to amplify their exposure\n      to specific assets by borrowing against their collateral and reinvesting the borrowed funds."},"fullyImplemented":false,"id":5750,"linearizedBaseContracts":[5750],"name":"ILeverageStrategiesManager","nameLocation":"549:26:38","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":5513,"nodeType":"StructuredDocumentation","src":"582:95:38","text":"@custom:error MintBehalfFailed mintBehalf on a vToken market returned a non-zero error code"},"errorSelector":"7cc94c74","id":5517,"name":"MintBehalfFailed","nameLocation":"688:16:38","nodeType":"ErrorDefinition","parameters":{"id":5516,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5515,"mutability":"mutable","name":"errorCode","nameLocation":"713:9:38","nodeType":"VariableDeclaration","scope":5517,"src":"705:17:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5514,"name":"uint256","nodeType":"ElementaryTypeName","src":"705:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"704:19:38"},"src":"682:42:38"},{"documentation":{"id":5518,"nodeType":"StructuredDocumentation","src":"730:99:38","text":"@custom:error BorrowBehalfFailed borrowBehalf on a vToken market returned a non-zero error code"},"errorSelector":"87e21d3a","id":5522,"name":"BorrowBehalfFailed","nameLocation":"840:18:38","nodeType":"ErrorDefinition","parameters":{"id":5521,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5520,"mutability":"mutable","name":"errorCode","nameLocation":"867:9:38","nodeType":"VariableDeclaration","scope":5522,"src":"859:17:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5519,"name":"uint256","nodeType":"ElementaryTypeName","src":"859:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"858:19:38"},"src":"834:44:38"},{"documentation":{"id":5523,"nodeType":"StructuredDocumentation","src":"884:97:38","text":"@custom:error RepayBehalfFailed repayBehalf on a vToken market returned a non-zero error code"},"errorSelector":"014e9bb3","id":5527,"name":"RepayBehalfFailed","nameLocation":"992:17:38","nodeType":"ErrorDefinition","parameters":{"id":5526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5525,"mutability":"mutable","name":"errorCode","nameLocation":"1018:9:38","nodeType":"VariableDeclaration","scope":5527,"src":"1010:17:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5524,"name":"uint256","nodeType":"ElementaryTypeName","src":"1010:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1009:19:38"},"src":"986:43:38"},{"documentation":{"id":5528,"nodeType":"StructuredDocumentation","src":"1035:99:38","text":"@custom:error RedeemBehalfFailed redeemBehalf on a vToken market returned a non-zero error code"},"errorSelector":"6083d269","id":5532,"name":"RedeemBehalfFailed","nameLocation":"1145:18:38","nodeType":"ErrorDefinition","parameters":{"id":5531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5530,"mutability":"mutable","name":"errorCode","nameLocation":"1172:9:38","nodeType":"VariableDeclaration","scope":5532,"src":"1164:17:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5529,"name":"uint256","nodeType":"ElementaryTypeName","src":"1164:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1163:19:38"},"src":"1139:44:38"},{"documentation":{"id":5533,"nodeType":"StructuredDocumentation","src":"1189:159:38","text":"@custom:error OperationCausesLiquidation Operation would put the account at risk (undercollateralized) returns a non-zero error code from getBorrowingPower"},"errorSelector":"47749fcb","id":5537,"name":"OperationCausesLiquidation","nameLocation":"1359:26:38","nodeType":"ErrorDefinition","parameters":{"id":5536,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5535,"mutability":"mutable","name":"errorCode","nameLocation":"1394:9:38","nodeType":"VariableDeclaration","scope":5537,"src":"1386:17:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5534,"name":"uint256","nodeType":"ElementaryTypeName","src":"1386:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1385:19:38"},"src":"1353:52:38"},{"documentation":{"id":5538,"nodeType":"StructuredDocumentation","src":"1411:81:38","text":"@custom:error TokenSwapCallFailed Swap helper call reverted or returned false"},"errorSelector":"428c0cc7","id":5540,"name":"TokenSwapCallFailed","nameLocation":"1503:19:38","nodeType":"ErrorDefinition","parameters":{"id":5539,"nodeType":"ParameterList","parameters":[],"src":"1522:2:38"},"src":"1497:28:38"},{"documentation":{"id":5541,"nodeType":"StructuredDocumentation","src":"1531:96:38","text":"@custom:error FlashLoanAssetOrAmountMismatch Invalid flash loan arrays length or >1 elements"},"errorSelector":"9efb1f7a","id":5543,"name":"FlashLoanAssetOrAmountMismatch","nameLocation":"1638:30:38","nodeType":"ErrorDefinition","parameters":{"id":5542,"nodeType":"ParameterList","parameters":[],"src":"1668:2:38"},"src":"1632:39:38"},{"documentation":{"id":5544,"nodeType":"StructuredDocumentation","src":"1677:77:38","text":"@custom:error UnauthorizedExecutor Caller is not the expected Comptroller"},"errorSelector":"83906042","id":5546,"name":"UnauthorizedExecutor","nameLocation":"1765:20:38","nodeType":"ErrorDefinition","parameters":{"id":5545,"nodeType":"ParameterList","parameters":[],"src":"1785:2:38"},"src":"1759:29:38"},{"documentation":{"id":5547,"nodeType":"StructuredDocumentation","src":"1794:87:38","text":"@custom:error InvalidExecuteOperation Unknown operation type in flash loan callback"},"errorSelector":"9c3c9567","id":5549,"name":"InvalidExecuteOperation","nameLocation":"1892:23:38","nodeType":"ErrorDefinition","parameters":{"id":5548,"nodeType":"ParameterList","parameters":[],"src":"1915:2:38"},"src":"1886:32:38"},{"documentation":{"id":5550,"nodeType":"StructuredDocumentation","src":"1924:74:38","text":"@custom:error SlippageExceeded Swap output lower than required minimum"},"errorSelector":"8199f5f3","id":5552,"name":"SlippageExceeded","nameLocation":"2009:16:38","nodeType":"ErrorDefinition","parameters":{"id":5551,"nodeType":"ParameterList","parameters":[],"src":"2025:2:38"},"src":"2003:25:38"},{"documentation":{"id":5553,"nodeType":"StructuredDocumentation","src":"2034:101:38","text":"@custom:error InsufficientFundsToRepayFlashloan Not enough proceeds to repay flash loan plus fees"},"errorSelector":"3c6c577c","id":5555,"name":"InsufficientFundsToRepayFlashloan","nameLocation":"2146:33:38","nodeType":"ErrorDefinition","parameters":{"id":5554,"nodeType":"ParameterList","parameters":[],"src":"2179:2:38"},"src":"2140:42:38"},{"documentation":{"id":5556,"nodeType":"StructuredDocumentation","src":"2188:84:38","text":"@custom:error InitiatorMismatch Invalid initiator address in flash loan callback"},"errorSelector":"04db910d","id":5558,"name":"InitiatorMismatch","nameLocation":"2283:17:38","nodeType":"ErrorDefinition","parameters":{"id":5557,"nodeType":"ParameterList","parameters":[],"src":"2300:2:38"},"src":"2277:26:38"},{"documentation":{"id":5559,"nodeType":"StructuredDocumentation","src":"2309:82:38","text":"@custom:error OnBehalfMismatch Invalid onBehalf address in flash loan callback"},"errorSelector":"2a057c43","id":5561,"name":"OnBehalfMismatch","nameLocation":"2402:16:38","nodeType":"ErrorDefinition","parameters":{"id":5560,"nodeType":"ParameterList","parameters":[],"src":"2418:2:38"},"src":"2396:25:38"},{"documentation":{"id":5562,"nodeType":"StructuredDocumentation","src":"2427:96:38","text":"@custom:error EnterMarketFailed Comptroller.enterMarketBehalf returned a non-zero error code"},"errorSelector":"cabe8828","id":5566,"name":"EnterMarketFailed","nameLocation":"2534:17:38","nodeType":"ErrorDefinition","parameters":{"id":5565,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5564,"mutability":"mutable","name":"err","nameLocation":"2560:3:38","nodeType":"VariableDeclaration","scope":5566,"src":"2552:11:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5563,"name":"uint256","nodeType":"ElementaryTypeName","src":"2552:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2551:13:38"},"src":"2528:37:38"},{"documentation":{"id":5567,"nodeType":"StructuredDocumentation","src":"2571:85:38","text":"@custom:error MarketNotListed Provided vToken market is not listed in Comptroller"},"errorSelector":"b5343d72","id":5571,"name":"MarketNotListed","nameLocation":"2667:15:38","nodeType":"ErrorDefinition","parameters":{"id":5570,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5569,"mutability":"mutable","name":"market","nameLocation":"2691:6:38","nodeType":"VariableDeclaration","scope":5571,"src":"2683:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5568,"name":"address","nodeType":"ElementaryTypeName","src":"2683:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2682:16:38"},"src":"2661:38:38"},{"documentation":{"id":5572,"nodeType":"StructuredDocumentation","src":"2705:87:38","text":"@custom:error VBNBNotSupported vBNB market is not supported for leverage operations"},"errorSelector":"baeccefd","id":5574,"name":"VBNBNotSupported","nameLocation":"2803:16:38","nodeType":"ErrorDefinition","parameters":{"id":5573,"nodeType":"ParameterList","parameters":[],"src":"2819:2:38"},"src":"2797:25:38"},{"documentation":{"id":5575,"nodeType":"StructuredDocumentation","src":"2828:67:38","text":"@custom:error ZeroAddress One of the required addresses is zero"},"errorSelector":"d92e233d","id":5577,"name":"ZeroAddress","nameLocation":"2906:11:38","nodeType":"ErrorDefinition","parameters":{"id":5576,"nodeType":"ParameterList","parameters":[],"src":"2917:2:38"},"src":"2900:20:38"},{"documentation":{"id":5578,"nodeType":"StructuredDocumentation","src":"2926:89:38","text":"@custom:error NotAnApprovedDelegate User has not approved this contract as a delegate"},"errorSelector":"37248ad9","id":5580,"name":"NotAnApprovedDelegate","nameLocation":"3026:21:38","nodeType":"ErrorDefinition","parameters":{"id":5579,"nodeType":"ParameterList","parameters":[],"src":"3047:2:38"},"src":"3020:30:38"},{"documentation":{"id":5581,"nodeType":"StructuredDocumentation","src":"3056:70:38","text":"@custom:error ZeroFlashLoanAmount Flash loan amount cannot be zero"},"errorSelector":"62ec8de7","id":5583,"name":"ZeroFlashLoanAmount","nameLocation":"3137:19:38","nodeType":"ErrorDefinition","parameters":{"id":5582,"nodeType":"ParameterList","parameters":[],"src":"3156:2:38"},"src":"3131:28:38"},{"documentation":{"id":5584,"nodeType":"StructuredDocumentation","src":"3165:103:38","text":"@custom:error AccrueInterestFailed accrueInterest on a vToken market returned a non-zero error code"},"errorSelector":"57f1b2fc","id":5588,"name":"AccrueInterestFailed","nameLocation":"3279:20:38","nodeType":"ErrorDefinition","parameters":{"id":5587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5586,"mutability":"mutable","name":"errorCode","nameLocation":"3308:9:38","nodeType":"VariableDeclaration","scope":5588,"src":"3300:17:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5585,"name":"uint256","nodeType":"ElementaryTypeName","src":"3300:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3299:19:38"},"src":"3273:46:38"},{"documentation":{"id":5589,"nodeType":"StructuredDocumentation","src":"3325:83:38","text":"@custom:error IdenticalMarkets Collateral and borrow markets cannot be the same"},"errorSelector":"e47381b6","id":5591,"name":"IdenticalMarkets","nameLocation":"3419:16:38","nodeType":"ErrorDefinition","parameters":{"id":5590,"nodeType":"ParameterList","parameters":[],"src":"3435:2:38"},"src":"3413:25:38"},{"anonymous":false,"documentation":{"id":5592,"nodeType":"StructuredDocumentation","src":"3444:272:38","text":"@notice Emitted when dust amounts are transferred after a leverage operation\n @param recipient The address receiving the dust (user or protocol share reserve)\n @param token The underlying token address\n @param amount The amount of dust transferred"},"eventSelector":"e8f38899ee6a4204a1a5ae0757b409b58be63978bc756134d464cfbaadc28931","id":5600,"name":"DustTransferred","nameLocation":"3727:15:38","nodeType":"EventDefinition","parameters":{"id":5599,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5594,"indexed":true,"mutability":"mutable","name":"recipient","nameLocation":"3759:9:38","nodeType":"VariableDeclaration","scope":5600,"src":"3743:25:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5593,"name":"address","nodeType":"ElementaryTypeName","src":"3743:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5596,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"3786:5:38","nodeType":"VariableDeclaration","scope":5600,"src":"3770:21:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5595,"name":"address","nodeType":"ElementaryTypeName","src":"3770:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5598,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"3801:6:38","nodeType":"VariableDeclaration","scope":5600,"src":"3793:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5597,"name":"uint256","nodeType":"ElementaryTypeName","src":"3793:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3742:66:38"},"src":"3721:88:38"},{"anonymous":false,"documentation":{"id":5601,"nodeType":"StructuredDocumentation","src":"3815:383:38","text":"@notice Emitted when a user enters a leveraged position with single collateral asset\n @param user The address of the user entering the position\n @param collateralMarket The vToken market used as collateral\n @param collateralAmountSeed The initial collateral amount provided by the user\n @param collateralAmountToFlashLoan The amount being flash loaned"},"eventSelector":"49cef9d2c3f3f5785b1ad7facb0837a43e60a785a0141101e658f5565664cd89","id":5612,"name":"SingleAssetLeverageEntered","nameLocation":"4209:26:38","nodeType":"EventDefinition","parameters":{"id":5611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5603,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"4261:4:38","nodeType":"VariableDeclaration","scope":5612,"src":"4245:20:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5602,"name":"address","nodeType":"ElementaryTypeName","src":"4245:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5606,"indexed":true,"mutability":"mutable","name":"collateralMarket","nameLocation":"4291:16:38","nodeType":"VariableDeclaration","scope":5612,"src":"4275:32:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":5605,"nodeType":"UserDefinedTypeName","pathNode":{"id":5604,"name":"IVToken","nameLocations":["4275:7:38"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"4275:7:38"},"referencedDeclaration":5277,"src":"4275:7:38","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"},{"constant":false,"id":5608,"indexed":false,"mutability":"mutable","name":"collateralAmountSeed","nameLocation":"4325:20:38","nodeType":"VariableDeclaration","scope":5612,"src":"4317:28:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5607,"name":"uint256","nodeType":"ElementaryTypeName","src":"4317:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5610,"indexed":false,"mutability":"mutable","name":"collateralAmountToFlashLoan","nameLocation":"4363:27:38","nodeType":"VariableDeclaration","scope":5612,"src":"4355:35:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5609,"name":"uint256","nodeType":"ElementaryTypeName","src":"4355:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4235:161:38"},"src":"4203:194:38"},{"anonymous":false,"documentation":{"id":5613,"nodeType":"StructuredDocumentation","src":"4403:441:38","text":"@notice Emitted when a user enters a leveraged position with collateral seed\n @param user The address of the user entering the position\n @param collateralMarket The vToken market used as collateral\n @param collateralAmountSeed The initial collateral amount provided by the user\n @param borrowedMarket The vToken market being borrowed from\n @param borrowedAmountToFlashLoan The amount being flash loaned"},"eventSelector":"2535d675850d7c542dc54c7aa081f27a11d1b0df3f3db67275ce0a9d05627434","id":5627,"name":"LeverageEntered","nameLocation":"4855:15:38","nodeType":"EventDefinition","parameters":{"id":5626,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5615,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"4896:4:38","nodeType":"VariableDeclaration","scope":5627,"src":"4880:20:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5614,"name":"address","nodeType":"ElementaryTypeName","src":"4880:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5618,"indexed":true,"mutability":"mutable","name":"collateralMarket","nameLocation":"4926:16:38","nodeType":"VariableDeclaration","scope":5627,"src":"4910:32:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":5617,"nodeType":"UserDefinedTypeName","pathNode":{"id":5616,"name":"IVToken","nameLocations":["4910:7:38"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"4910:7:38"},"referencedDeclaration":5277,"src":"4910:7:38","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"},{"constant":false,"id":5620,"indexed":false,"mutability":"mutable","name":"collateralAmountSeed","nameLocation":"4960:20:38","nodeType":"VariableDeclaration","scope":5627,"src":"4952:28:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5619,"name":"uint256","nodeType":"ElementaryTypeName","src":"4952:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5623,"indexed":true,"mutability":"mutable","name":"borrowedMarket","nameLocation":"5006:14:38","nodeType":"VariableDeclaration","scope":5627,"src":"4990:30:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":5622,"nodeType":"UserDefinedTypeName","pathNode":{"id":5621,"name":"IVToken","nameLocations":["4990:7:38"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"4990:7:38"},"referencedDeclaration":5277,"src":"4990:7:38","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"},{"constant":false,"id":5625,"indexed":false,"mutability":"mutable","name":"borrowedAmountToFlashLoan","nameLocation":"5038:25:38","nodeType":"VariableDeclaration","scope":5627,"src":"5030:33:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5624,"name":"uint256","nodeType":"ElementaryTypeName","src":"5030:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4870:199:38"},"src":"4849:221:38"},{"anonymous":false,"documentation":{"id":5628,"nodeType":"StructuredDocumentation","src":"5076:447:38","text":"@notice Emitted when a user enters a leveraged position with borrowed asset seed\n @param user The address of the user entering the position\n @param collateralMarket The vToken market used as collateral\n @param borrowedMarket The vToken market being borrowed from\n @param borrowedAmountSeed The initial borrowed asset amount provided by the user\n @param borrowedAmountToFlashLoan The amount being flash loaned"},"eventSelector":"4bdf2f6f97b9e53fbb880300a2b1e8f12110f6cbcc3279602053bcf6f5e05103","id":5642,"name":"LeverageEnteredFromBorrow","nameLocation":"5534:25:38","nodeType":"EventDefinition","parameters":{"id":5641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5630,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"5585:4:38","nodeType":"VariableDeclaration","scope":5642,"src":"5569:20:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5629,"name":"address","nodeType":"ElementaryTypeName","src":"5569:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5633,"indexed":true,"mutability":"mutable","name":"collateralMarket","nameLocation":"5615:16:38","nodeType":"VariableDeclaration","scope":5642,"src":"5599:32:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":5632,"nodeType":"UserDefinedTypeName","pathNode":{"id":5631,"name":"IVToken","nameLocations":["5599:7:38"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"5599:7:38"},"referencedDeclaration":5277,"src":"5599:7:38","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"},{"constant":false,"id":5636,"indexed":true,"mutability":"mutable","name":"borrowedMarket","nameLocation":"5657:14:38","nodeType":"VariableDeclaration","scope":5642,"src":"5641:30:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":5635,"nodeType":"UserDefinedTypeName","pathNode":{"id":5634,"name":"IVToken","nameLocations":["5641:7:38"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"5641:7:38"},"referencedDeclaration":5277,"src":"5641:7:38","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"},{"constant":false,"id":5638,"indexed":false,"mutability":"mutable","name":"borrowedAmountSeed","nameLocation":"5689:18:38","nodeType":"VariableDeclaration","scope":5642,"src":"5681:26:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5637,"name":"uint256","nodeType":"ElementaryTypeName","src":"5681:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5640,"indexed":false,"mutability":"mutable","name":"borrowedAmountToFlashLoan","nameLocation":"5725:25:38","nodeType":"VariableDeclaration","scope":5642,"src":"5717:33:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5639,"name":"uint256","nodeType":"ElementaryTypeName","src":"5717:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5559:197:38"},"src":"5528:229:38"},{"anonymous":false,"documentation":{"id":5643,"nodeType":"StructuredDocumentation","src":"5763:416:38","text":"@notice Emitted when a user exits a leveraged position\n @param user The address of the user exiting the position\n @param collateralMarket The vToken market being redeemed\n @param collateralAmountToRedeemForSwap The amount of collateral being redeemed for swap\n @param borrowedMarket The vToken market being repaid\n @param borrowedAmountToFlashLoan The amount being flash loaned"},"eventSelector":"c40371cee960c145e7af5e62a37dfd2f97089c030c2427ad853ae214e815ebed","id":5657,"name":"LeverageExited","nameLocation":"6190:14:38","nodeType":"EventDefinition","parameters":{"id":5656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5645,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"6230:4:38","nodeType":"VariableDeclaration","scope":5657,"src":"6214:20:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5644,"name":"address","nodeType":"ElementaryTypeName","src":"6214:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5648,"indexed":true,"mutability":"mutable","name":"collateralMarket","nameLocation":"6260:16:38","nodeType":"VariableDeclaration","scope":5657,"src":"6244:32:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":5647,"nodeType":"UserDefinedTypeName","pathNode":{"id":5646,"name":"IVToken","nameLocations":["6244:7:38"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"6244:7:38"},"referencedDeclaration":5277,"src":"6244:7:38","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"},{"constant":false,"id":5650,"indexed":false,"mutability":"mutable","name":"collateralAmountToRedeemForSwap","nameLocation":"6294:31:38","nodeType":"VariableDeclaration","scope":5657,"src":"6286:39:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5649,"name":"uint256","nodeType":"ElementaryTypeName","src":"6286:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5653,"indexed":true,"mutability":"mutable","name":"borrowedMarket","nameLocation":"6351:14:38","nodeType":"VariableDeclaration","scope":5657,"src":"6335:30:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":5652,"nodeType":"UserDefinedTypeName","pathNode":{"id":5651,"name":"IVToken","nameLocations":["6335:7:38"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"6335:7:38"},"referencedDeclaration":5277,"src":"6335:7:38","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"},{"constant":false,"id":5655,"indexed":false,"mutability":"mutable","name":"borrowedAmountToFlashLoan","nameLocation":"6383:25:38","nodeType":"VariableDeclaration","scope":5657,"src":"6375:33:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5654,"name":"uint256","nodeType":"ElementaryTypeName","src":"6375:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6204:210:38"},"src":"6184:231:38"},{"anonymous":false,"documentation":{"id":5658,"nodeType":"StructuredDocumentation","src":"6421:319:38","text":"@notice Emitted when a user exits a leveraged position with single collateral asset\n @param user The address of the user exiting the position\n @param collateralMarket The vToken market used for both collateral and borrowed asset\n @param collateralAmountToFlashLoan The amount being flash loaned"},"eventSelector":"9858e3a66fd738b1f0f73208c9090ca5a20ee504df594271e464d4bb4cda0e6f","id":5667,"name":"SingleAssetLeverageExited","nameLocation":"6751:25:38","nodeType":"EventDefinition","parameters":{"id":5666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5660,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"6802:4:38","nodeType":"VariableDeclaration","scope":5667,"src":"6786:20:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5659,"name":"address","nodeType":"ElementaryTypeName","src":"6786:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5663,"indexed":true,"mutability":"mutable","name":"collateralMarket","nameLocation":"6832:16:38","nodeType":"VariableDeclaration","scope":5667,"src":"6816:32:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":5662,"nodeType":"UserDefinedTypeName","pathNode":{"id":5661,"name":"IVToken","nameLocations":["6816:7:38"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"6816:7:38"},"referencedDeclaration":5277,"src":"6816:7:38","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"},{"constant":false,"id":5665,"indexed":false,"mutability":"mutable","name":"collateralAmountToFlashLoan","nameLocation":"6866:27:38","nodeType":"VariableDeclaration","scope":5667,"src":"6858:35:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5664,"name":"uint256","nodeType":"ElementaryTypeName","src":"6858:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6776:123:38"},"src":"6745:155:38"},{"canonicalName":"ILeverageStrategiesManager.OperationType","documentation":{"id":5668,"nodeType":"StructuredDocumentation","src":"6906:628:38","text":" @notice Enumeration of operation types for flash loan callbacks\n @param NONE Default value indicating no operation set\n @param ENTER_SINGLE_ASSET Operation for entering a leveraged position using single asset (no swap)\n @param ENTER_COLLATERAL Operation for entering a leveraged position with collateral seed\n @param ENTER_BORROW Operation for entering a leveraged position with borrowed asset seed\n @param EXIT_COLLATERAL Operation for exiting a leveraged position with swap\n @param EXIT_SINGLE_ASSET Operation for exiting a leveraged position using single asset (no swap)"},"id":5675,"members":[{"id":5669,"name":"NONE","nameLocation":"7568:4:38","nodeType":"EnumValue","src":"7568:4:38"},{"id":5670,"name":"ENTER_SINGLE_ASSET","nameLocation":"7582:18:38","nodeType":"EnumValue","src":"7582:18:38"},{"id":5671,"name":"ENTER_COLLATERAL","nameLocation":"7610:16:38","nodeType":"EnumValue","src":"7610:16:38"},{"id":5672,"name":"ENTER_BORROW","nameLocation":"7636:12:38","nodeType":"EnumValue","src":"7636:12:38"},{"id":5673,"name":"EXIT_COLLATERAL","nameLocation":"7658:15:38","nodeType":"EnumValue","src":"7658:15:38"},{"id":5674,"name":"EXIT_SINGLE_ASSET","nameLocation":"7683:17:38","nodeType":"EnumValue","src":"7683:17:38"}],"name":"OperationType","nameLocation":"7544:13:38","nodeType":"EnumDefinition","src":"7539:167:38"},{"documentation":{"id":5676,"nodeType":"StructuredDocumentation","src":"7712:1387:38","text":" @notice Enters a leveraged position using only collateral provided by the user\n @dev This function flash loans additional collateral assets, amplifying the user's supplied collateral\n      in the Venus protocol. The user must have delegated permission to this contract via the comptroller.\n      Any remaining collateral dust after the operation is returned to the user.\n @param collateralMarket The vToken market where collateral will be supplied (must not be vBNB)\n @param collateralAmountSeed The initial amount of collateral the user provides (can be 0)\n @param collateralAmountToFlashLoan The amount to borrow via flash loan for leverage\n @custom:emits SingleAssetLeverageEntered\n @custom:error NotAnApprovedDelegate if caller has not delegated to this contract\n @custom:error AccrueInterestFailed if interest accrual fails on the collateral market\n @custom:error MarketNotListed if the market is not listed in Comptroller\n @custom:error VBNBNotSupported if the market is vBNB\n @custom:error OperationCausesLiquidation if the operation would make the account unsafe\n @custom:error TransferFromUserFailed if seed amount transfer from user fails\n @custom:error MintBehalfFailed if mint behalf operation fails\n @custom:error BorrowBehalfFailed if borrow behalf operation fails"},"functionSelector":"3c3a2c21","id":5686,"implemented":false,"kind":"function","modifiers":[],"name":"enterSingleAssetLeverage","nameLocation":"9113:24:38","nodeType":"FunctionDefinition","parameters":{"id":5684,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5679,"mutability":"mutable","name":"collateralMarket","nameLocation":"9155:16:38","nodeType":"VariableDeclaration","scope":5686,"src":"9147:24:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":5678,"nodeType":"UserDefinedTypeName","pathNode":{"id":5677,"name":"IVToken","nameLocations":["9147:7:38"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"9147:7:38"},"referencedDeclaration":5277,"src":"9147:7:38","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"},{"constant":false,"id":5681,"mutability":"mutable","name":"collateralAmountSeed","nameLocation":"9189:20:38","nodeType":"VariableDeclaration","scope":5686,"src":"9181:28:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5680,"name":"uint256","nodeType":"ElementaryTypeName","src":"9181:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5683,"mutability":"mutable","name":"collateralAmountToFlashLoan","nameLocation":"9227:27:38","nodeType":"VariableDeclaration","scope":5686,"src":"9219:35:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5682,"name":"uint256","nodeType":"ElementaryTypeName","src":"9219:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9137:123:38"},"returnParameters":{"id":5685,"nodeType":"ParameterList","parameters":[],"src":"9269:0:38"},"scope":5750,"src":"9104:166:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":5687,"nodeType":"StructuredDocumentation","src":"9276:2051:38","text":" @notice Enters a leveraged position by borrowing assets and converting them to collateral\n @dev This function uses flash loans to borrow assets, swaps them for collateral tokens,\n      and supplies the collateral to the Venus protocol to amplify the user's position.\n      The user must have delegated permission to this contract via the comptroller.\n      Any remaining dust (both collateral and borrowed assets) after the operation is returned to the user.\n @param collateralMarket The vToken market where collateral will be supplied (must not be vBNB)\n @param collateralAmountSeed The initial amount of collateral the user provides (can be 0)\n @param borrowedMarket The vToken market from which assets will be borrowed via flash loan (must not be vBNB)\n @param borrowedAmountToFlashLoan The amount to borrow via flash loan for leverage\n @param minAmountOutAfterSwap The minimum amount of collateral expected after swap (for slippage protection)\n @param swapData Bytes containing swap instructions for converting borrowed assets to collateral\n @custom:emits LeverageEntered\n @custom:error IdenticalMarkets if collateral and borrow markets are the same\n @custom:error NotAnApprovedDelegate if caller has not delegated to this contract\n @custom:error AccrueInterestFailed if interest accrual fails on any market\n @custom:error MarketNotListed if any market is not listed in Comptroller\n @custom:error VBNBNotSupported if collateral or borrow market is vBNB\n @custom:error OperationCausesLiquidation if the operation would make the account unsafe\n @custom:error TransferFromUserFailed if seed amount transfer from user fails\n @custom:error MintBehalfFailed if mint behalf operation fails\n @custom:error BorrowBehalfFailed if borrow behalf operation fails\n @custom:error TokenSwapCallFailed if token swap execution fails\n @custom:error SlippageExceeded if collateral balance after swap is below minimum"},"functionSelector":"3a8f8c43","id":5704,"implemented":false,"kind":"function","modifiers":[],"name":"enterLeverage","nameLocation":"11341:13:38","nodeType":"FunctionDefinition","parameters":{"id":5702,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5690,"mutability":"mutable","name":"collateralMarket","nameLocation":"11372:16:38","nodeType":"VariableDeclaration","scope":5704,"src":"11364:24:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":5689,"nodeType":"UserDefinedTypeName","pathNode":{"id":5688,"name":"IVToken","nameLocations":["11364:7:38"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"11364:7:38"},"referencedDeclaration":5277,"src":"11364:7:38","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"},{"constant":false,"id":5692,"mutability":"mutable","name":"collateralAmountSeed","nameLocation":"11406:20:38","nodeType":"VariableDeclaration","scope":5704,"src":"11398:28:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5691,"name":"uint256","nodeType":"ElementaryTypeName","src":"11398:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5695,"mutability":"mutable","name":"borrowedMarket","nameLocation":"11444:14:38","nodeType":"VariableDeclaration","scope":5704,"src":"11436:22:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":5694,"nodeType":"UserDefinedTypeName","pathNode":{"id":5693,"name":"IVToken","nameLocations":["11436:7:38"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"11436:7:38"},"referencedDeclaration":5277,"src":"11436:7:38","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"},{"constant":false,"id":5697,"mutability":"mutable","name":"borrowedAmountToFlashLoan","nameLocation":"11476:25:38","nodeType":"VariableDeclaration","scope":5704,"src":"11468:33:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5696,"name":"uint256","nodeType":"ElementaryTypeName","src":"11468:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5699,"mutability":"mutable","name":"minAmountOutAfterSwap","nameLocation":"11519:21:38","nodeType":"VariableDeclaration","scope":5704,"src":"11511:29:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5698,"name":"uint256","nodeType":"ElementaryTypeName","src":"11511:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5701,"mutability":"mutable","name":"swapData","nameLocation":"11565:8:38","nodeType":"VariableDeclaration","scope":5704,"src":"11550:23:38","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5700,"name":"bytes","nodeType":"ElementaryTypeName","src":"11550:5:38","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11354:225:38"},"returnParameters":{"id":5703,"nodeType":"ParameterList","parameters":[],"src":"11588:0:38"},"scope":5750,"src":"11332:257:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":5705,"nodeType":"StructuredDocumentation","src":"11595:2121:38","text":" @notice Enters a leveraged position by using existing borrowed assets and converting them to collateral\n @dev This function uses flash loans to borrow additional assets, swaps the total borrowed amount\n      for collateral tokens, and supplies the collateral to the Venus protocol to amplify the user's position.\n      The user must have delegated permission to this contract via the comptroller.\n      Any remaining dust (both collateral and borrowed assets) after the operation is returned to the user.\n @param collateralMarket The vToken market where collateral will be supplied (must not be vBNB)\n @param borrowedMarket The vToken market from which assets will be borrowed via flash loan (must not be vBNB)\n @param borrowedAmountSeed The initial amount of borrowed assets the user provides (can be 0)\n @param borrowedAmountToFlashLoan The additional amount to borrow via flash loan for leverage\n @param minAmountOutAfterSwap The minimum amount of collateral expected after swap (for slippage protection)\n @param swapData Bytes containing swap instructions for converting borrowed assets to collateral\n @custom:emits LeverageEnteredFromBorrow\n @custom:error IdenticalMarkets if collateral and borrow markets are the same\n @custom:error NotAnApprovedDelegate if caller has not delegated to this contract\n @custom:error AccrueInterestFailed if interest accrual fails on any market\n @custom:error MarketNotListed if any market is not listed in Comptroller\n @custom:error VBNBNotSupported if collateral or borrow market is vBNB\n @custom:error OperationCausesLiquidation if the operation would make the account unsafe\n @custom:error TransferFromUserFailed if seed amount transfer from user fails\n @custom:error MintBehalfFailed if mint behalf operation fails\n @custom:error BorrowBehalfFailed if borrow behalf operation fails\n @custom:error TokenSwapCallFailed if token swap execution fails\n @custom:error SlippageExceeded if collateral balance after swap is below minimum"},"functionSelector":"13424801","id":5722,"implemented":false,"kind":"function","modifiers":[],"name":"enterLeverageFromBorrow","nameLocation":"13730:23:38","nodeType":"FunctionDefinition","parameters":{"id":5720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5708,"mutability":"mutable","name":"collateralMarket","nameLocation":"13771:16:38","nodeType":"VariableDeclaration","scope":5722,"src":"13763:24:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":5707,"nodeType":"UserDefinedTypeName","pathNode":{"id":5706,"name":"IVToken","nameLocations":["13763:7:38"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"13763:7:38"},"referencedDeclaration":5277,"src":"13763:7:38","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"},{"constant":false,"id":5711,"mutability":"mutable","name":"borrowedMarket","nameLocation":"13805:14:38","nodeType":"VariableDeclaration","scope":5722,"src":"13797:22:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":5710,"nodeType":"UserDefinedTypeName","pathNode":{"id":5709,"name":"IVToken","nameLocations":["13797:7:38"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"13797:7:38"},"referencedDeclaration":5277,"src":"13797:7:38","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"},{"constant":false,"id":5713,"mutability":"mutable","name":"borrowedAmountSeed","nameLocation":"13837:18:38","nodeType":"VariableDeclaration","scope":5722,"src":"13829:26:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5712,"name":"uint256","nodeType":"ElementaryTypeName","src":"13829:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5715,"mutability":"mutable","name":"borrowedAmountToFlashLoan","nameLocation":"13873:25:38","nodeType":"VariableDeclaration","scope":5722,"src":"13865:33:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5714,"name":"uint256","nodeType":"ElementaryTypeName","src":"13865:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5717,"mutability":"mutable","name":"minAmountOutAfterSwap","nameLocation":"13916:21:38","nodeType":"VariableDeclaration","scope":5722,"src":"13908:29:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5716,"name":"uint256","nodeType":"ElementaryTypeName","src":"13908:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5719,"mutability":"mutable","name":"swapData","nameLocation":"13962:8:38","nodeType":"VariableDeclaration","scope":5722,"src":"13947:23:38","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5718,"name":"bytes","nodeType":"ElementaryTypeName","src":"13947:5:38","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"13753:223:38"},"returnParameters":{"id":5721,"nodeType":"ParameterList","parameters":[],"src":"13985:0:38"},"scope":5750,"src":"13721:265:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":5723,"nodeType":"StructuredDocumentation","src":"13992:2905:38","text":" @notice Exits a leveraged position by redeeming collateral and repaying borrowed assets\n @dev This function uses flash loans to temporarily repay debt, redeems collateral,\n      swaps collateral for borrowed assets, and repays the flash loan. Any remaining\n      dust (both collateral and borrowed assets) is returned to the user. This ensures\n      users who swap more than required as protection against price volatility receive\n      their excess tokens back.\n      The flash loan amount can exceed actual debt to account for interest accrual\n      between transaction creation and mining. The contract caps repayment to actual\n      debt and uses leftover funds toward flash loan repayment.\n      NOTE: No pre-operation safety check is performed because exiting leverage reduces\n      debt exposure, which can only improve account health. Post-operation safety is\n      still validated to ensure the final position is healthy.\n      IMPORTANT: If treasuryPercent() is nonzero, the user must provide a\n      collateralAmountToRedeemForSwap that accounts for the treasury fee. Only\n      (1 - treasuryPercent/1e18) of the redeemed amount is transferred to this contract.\n      Required gross amount = netAmountNeeded * 1e18 / (1e18 - treasuryPercent)\n @param collateralMarket The vToken market from which collateral will be redeemed (must not be vBNB)\n @param collateralAmountToRedeemForSwap The gross amount of collateral to redeem (must account for treasury fee if nonzero)\n @param borrowedMarket The vToken market where debt will be repaid via flash loan (must not be vBNB)\n @param borrowedAmountToFlashLoan The amount to borrow via flash loan for debt repayment (can exceed actual debt)\n @param minAmountOutAfterSwap The minimum amount of borrowed asset expected after swap (for slippage protection)\n @param swapData Bytes containing swap instructions for converting collateral to borrowed assets\n @custom:emits LeverageExited\n @custom:error IdenticalMarkets if collateral and borrow markets are the same\n @custom:error NotAnApprovedDelegate if caller has not delegated to this contract\n @custom:error MarketNotListed if any market is not listed in Comptroller\n @custom:error VBNBNotSupported if collateral or borrow market is vBNB\n @custom:error OperationCausesLiquidation if the operation would make the account unsafe\n @custom:error RepayBehalfFailed if repay operation fails\n @custom:error RedeemBehalfFailed if redeem operation fails\n @custom:error TokenSwapCallFailed if token swap execution fails\n @custom:error SlippageExceeded if swap output is below minimum required\n @custom:error InsufficientFundsToRepayFlashloan if insufficient funds to repay flash loan"},"functionSelector":"c78befbe","id":5740,"implemented":false,"kind":"function","modifiers":[],"name":"exitLeverage","nameLocation":"16911:12:38","nodeType":"FunctionDefinition","parameters":{"id":5738,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5726,"mutability":"mutable","name":"collateralMarket","nameLocation":"16941:16:38","nodeType":"VariableDeclaration","scope":5740,"src":"16933:24:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":5725,"nodeType":"UserDefinedTypeName","pathNode":{"id":5724,"name":"IVToken","nameLocations":["16933:7:38"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"16933:7:38"},"referencedDeclaration":5277,"src":"16933:7:38","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"},{"constant":false,"id":5728,"mutability":"mutable","name":"collateralAmountToRedeemForSwap","nameLocation":"16975:31:38","nodeType":"VariableDeclaration","scope":5740,"src":"16967:39:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5727,"name":"uint256","nodeType":"ElementaryTypeName","src":"16967:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5731,"mutability":"mutable","name":"borrowedMarket","nameLocation":"17024:14:38","nodeType":"VariableDeclaration","scope":5740,"src":"17016:22:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":5730,"nodeType":"UserDefinedTypeName","pathNode":{"id":5729,"name":"IVToken","nameLocations":["17016:7:38"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"17016:7:38"},"referencedDeclaration":5277,"src":"17016:7:38","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"},{"constant":false,"id":5733,"mutability":"mutable","name":"borrowedAmountToFlashLoan","nameLocation":"17056:25:38","nodeType":"VariableDeclaration","scope":5740,"src":"17048:33:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5732,"name":"uint256","nodeType":"ElementaryTypeName","src":"17048:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5735,"mutability":"mutable","name":"minAmountOutAfterSwap","nameLocation":"17099:21:38","nodeType":"VariableDeclaration","scope":5740,"src":"17091:29:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5734,"name":"uint256","nodeType":"ElementaryTypeName","src":"17091:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5737,"mutability":"mutable","name":"swapData","nameLocation":"17145:8:38","nodeType":"VariableDeclaration","scope":5740,"src":"17130:23:38","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5736,"name":"bytes","nodeType":"ElementaryTypeName","src":"17130:5:38","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16923:236:38"},"returnParameters":{"id":5739,"nodeType":"ParameterList","parameters":[],"src":"17168:0:38"},"scope":5750,"src":"16902:267:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":5741,"nodeType":"StructuredDocumentation","src":"17175:2024:38","text":" @notice Exits a leveraged position when collateral and borrowed assets are the same token\n @dev This function uses flash loans to temporarily repay debt, redeems collateral,\n      and repays the flash loan without requiring token swaps. This is more gas-efficient\n      than exitLeverage when dealing with single-asset positions. Any remaining collateral\n      dust after the operation is returned to the user.\n      The flash loan amount can exceed actual debt to account for interest accrual\n      between transaction creation and mining. The contract caps repayment to actual\n      debt and uses leftover funds toward flash loan repayment.\n      If treasuryPercent() is nonzero, the contract automatically adjusts the redeem\n      amount to ensure sufficient funds are received to repay the flash loan after the\n      treasury fee deduction.\n      NOTE: No pre-operation safety check is performed because exiting leverage reduces\n      debt exposure, which can only improve account health. Post-operation safety is\n      still validated to ensure the final position is healthy.\n @param collateralMarket The vToken market for both collateral and borrowed asset (must not be vBNB)\n @param collateralAmountToFlashLoan The amount to borrow via flash loan for debt repayment (can exceed actual debt)\n @custom:emits SingleAssetLeverageExited\n @custom:error NotAnApprovedDelegate if caller has not delegated to this contract\n @custom:error MarketNotListed if the market is not listed in Comptroller\n @custom:error VBNBNotSupported if the market is vBNB\n @custom:error OperationCausesLiquidation if the operation would make the account unsafe\n @custom:error RepayBehalfFailed if repay operation fails\n @custom:error RedeemBehalfFailed if redeem operation fails\n @custom:error InsufficientFundsToRepayFlashloan if insufficient funds to repay flash loan"},"functionSelector":"c6cd25f6","id":5749,"implemented":false,"kind":"function","modifiers":[],"name":"exitSingleAssetLeverage","nameLocation":"19213:23:38","nodeType":"FunctionDefinition","parameters":{"id":5747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5744,"mutability":"mutable","name":"collateralMarket","nameLocation":"19245:16:38","nodeType":"VariableDeclaration","scope":5749,"src":"19237:24:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":5743,"nodeType":"UserDefinedTypeName","pathNode":{"id":5742,"name":"IVToken","nameLocations":["19237:7:38"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"19237:7:38"},"referencedDeclaration":5277,"src":"19237:7:38","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"},{"constant":false,"id":5746,"mutability":"mutable","name":"collateralAmountToFlashLoan","nameLocation":"19271:27:38","nodeType":"VariableDeclaration","scope":5749,"src":"19263:35:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5745,"name":"uint256","nodeType":"ElementaryTypeName","src":"19263:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19236:63:38"},"returnParameters":{"id":5748,"nodeType":"ParameterList","parameters":[],"src":"19308:0:38"},"scope":5750,"src":"19204:105:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":5751,"src":"539:18772:38","usedErrors":[5517,5522,5527,5532,5537,5540,5543,5546,5549,5552,5555,5558,5561,5566,5571,5574,5577,5580,5583,5588,5591],"usedEvents":[5600,5612,5627,5642,5657,5667]}],"src":"41:19271:38"},"id":38},"contracts/LeverageManager/LeverageStrategiesManager.sol":{"ast":{"absolutePath":"contracts/LeverageManager/LeverageStrategiesManager.sol","exportedSymbols":{"IComptroller":[5454],"IERC20Upgradeable":[617],"IFlashLoanReceiver":[5480],"ILeverageStrategiesManager":[5750],"IVToken":[5277],"LeverageStrategiesManager":[7828],"Ownable2StepUpgradeable":[152],"ReentrancyGuardUpgradeable":[539],"SafeERC20Upgradeable":[1029],"SwapHelper":[8322]},"id":7829,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":5752,"literals":["solidity","0.8",".28"],"nodeType":"PragmaDirective","src":"41:23:39"},{"absolutePath":"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol","id":5754,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7829,"sourceUnit":153,"src":"66:113:39","symbolAliases":[{"foreign":{"id":5753,"name":"Ownable2StepUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":152,"src":"75:23:39","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol","id":5756,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7829,"sourceUnit":540,"src":"180:121:39","symbolAliases":[{"foreign":{"id":5755,"name":"ReentrancyGuardUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":539,"src":"189:26:39","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol","id":5759,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7829,"sourceUnit":1030,"src":"302:145:39","symbolAliases":[{"foreign":{"id":5757,"name":"SafeERC20Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1029,"src":"315:20:39","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":5758,"name":"IERC20Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"341:17:39","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/Interfaces.sol","file":"../Interfaces.sol","id":5763,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7829,"sourceUnit":5508,"src":"449:78:39","symbolAliases":[{"foreign":{"id":5760,"name":"IVToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5277,"src":"458:7:39","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":5761,"name":"IComptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5454,"src":"467:12:39","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":5762,"name":"IFlashLoanReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5480,"src":"481:18:39","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/SwapHelper/SwapHelper.sol","file":"../SwapHelper/SwapHelper.sol","id":5765,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7829,"sourceUnit":8323,"src":"528:58:39","symbolAliases":[{"foreign":{"id":5764,"name":"SwapHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8322,"src":"537:10:39","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/LeverageManager/ILeverageStrategiesManager.sol","file":"./ILeverageStrategiesManager.sol","id":5767,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7829,"sourceUnit":5751,"src":"588:78:39","symbolAliases":[{"foreign":{"id":5766,"name":"ILeverageStrategiesManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5750,"src":"597:26:39","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":5769,"name":"Ownable2StepUpgradeable","nameLocations":["867:23:39"],"nodeType":"IdentifierPath","referencedDeclaration":152,"src":"867:23:39"},"id":5770,"nodeType":"InheritanceSpecifier","src":"867:23:39"},{"baseName":{"id":5771,"name":"ReentrancyGuardUpgradeable","nameLocations":["896:26:39"],"nodeType":"IdentifierPath","referencedDeclaration":539,"src":"896:26:39"},"id":5772,"nodeType":"InheritanceSpecifier","src":"896:26:39"},{"baseName":{"id":5773,"name":"IFlashLoanReceiver","nameLocations":["928:18:39"],"nodeType":"IdentifierPath","referencedDeclaration":5480,"src":"928:18:39"},"id":5774,"nodeType":"InheritanceSpecifier","src":"928:18:39"},{"baseName":{"id":5775,"name":"ILeverageStrategiesManager","nameLocations":["952:26:39"],"nodeType":"IdentifierPath","referencedDeclaration":5750,"src":"952:26:39"},"id":5776,"nodeType":"InheritanceSpecifier","src":"952:26:39"}],"canonicalName":"LeverageStrategiesManager","contractDependencies":[],"contractKind":"contract","documentation":{"id":5768,"nodeType":"StructuredDocumentation","src":"668:156:39","text":" @title LeverageStrategiesManager\n @author Venus Protocol\n @notice Contract for managing leveraged positions using flash loans and token swaps"},"fullyImplemented":true,"id":7828,"linearizedBaseContracts":[7828,5750,5480,539,152,285,1410,454],"name":"LeverageStrategiesManager","nameLocation":"834:25:39","nodeType":"ContractDefinition","nodes":[{"global":false,"id":5780,"libraryName":{"id":5777,"name":"SafeERC20Upgradeable","nameLocations":["991:20:39"],"nodeType":"IdentifierPath","referencedDeclaration":1029,"src":"991:20:39"},"nodeType":"UsingForDirective","src":"985:49:39","typeName":{"id":5779,"nodeType":"UserDefinedTypeName","pathNode":{"id":5778,"name":"IERC20Upgradeable","nameLocations":["1016:17:39"],"nodeType":"IdentifierPath","referencedDeclaration":617,"src":"1016:17:39"},"referencedDeclaration":617,"src":"1016:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}}},{"constant":true,"documentation":{"id":5781,"nodeType":"StructuredDocumentation","src":"1040:81:39","text":"@dev Success return value for VToken operations (mint, borrow, repay, redeem)"},"id":5784,"mutability":"constant","name":"SUCCESS","nameLocation":"1151:7:39","nodeType":"VariableDeclaration","scope":7828,"src":"1126:36:39","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5782,"name":"uint256","nodeType":"ElementaryTypeName","src":"1126:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30","id":5783,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1161:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"private"},{"constant":true,"documentation":{"id":5785,"nodeType":"StructuredDocumentation","src":"1169:58:39","text":"@dev Mantissa for fixed-point arithmetic (1e18 = 100%)"},"id":5788,"mutability":"constant","name":"MANTISSA_ONE","nameLocation":"1257:12:39","nodeType":"VariableDeclaration","scope":7828,"src":"1232:44:39","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5786,"name":"uint256","nodeType":"ElementaryTypeName","src":"1232:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653138","id":5787,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1272:4:39","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"visibility":"private"},{"constant":false,"documentation":{"id":5789,"nodeType":"StructuredDocumentation","src":"1283:92:39","text":"@notice The Venus comptroller contract for market interactions and flash loans execution"},"functionSelector":"5f82c67e","id":5792,"mutability":"immutable","name":"COMPTROLLER","nameLocation":"1410:11:39","nodeType":"VariableDeclaration","scope":7828,"src":"1380:41:39","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IComptroller_$5454","typeString":"contract IComptroller"},"typeName":{"id":5791,"nodeType":"UserDefinedTypeName","pathNode":{"id":5790,"name":"IComptroller","nameLocations":["1380:12:39"],"nodeType":"IdentifierPath","referencedDeclaration":5454,"src":"1380:12:39"},"referencedDeclaration":5454,"src":"1380:12:39","typeDescriptions":{"typeIdentifier":"t_contract$_IComptroller_$5454","typeString":"contract IComptroller"}},"visibility":"public"},{"constant":false,"documentation":{"id":5793,"nodeType":"StructuredDocumentation","src":"1428:89:39","text":"@notice The swap helper contract for executing token swaps during leverage operations"},"functionSelector":"0fc6a11c","id":5796,"mutability":"immutable","name":"swapHelper","nameLocation":"1550:10:39","nodeType":"VariableDeclaration","scope":7828,"src":"1522:38:39","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_SwapHelper_$8322","typeString":"contract SwapHelper"},"typeName":{"id":5795,"nodeType":"UserDefinedTypeName","pathNode":{"id":5794,"name":"SwapHelper","nameLocations":["1522:10:39"],"nodeType":"IdentifierPath","referencedDeclaration":8322,"src":"1522:10:39"},"referencedDeclaration":8322,"src":"1522:10:39","typeDescriptions":{"typeIdentifier":"t_contract$_SwapHelper_$8322","typeString":"contract SwapHelper"}},"visibility":"public"},{"constant":false,"documentation":{"id":5797,"nodeType":"StructuredDocumentation","src":"1567:75:39","text":"@notice The vBNB market address (not supported for leverage operations)"},"functionSelector":"33e1567f","id":5800,"mutability":"immutable","name":"vBNB","nameLocation":"1672:4:39","nodeType":"VariableDeclaration","scope":7828,"src":"1647:29:39","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":5799,"nodeType":"UserDefinedTypeName","pathNode":{"id":5798,"name":"IVToken","nameLocations":["1647:7:39"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"1647:7:39"},"referencedDeclaration":5277,"src":"1647:7:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"public"},{"constant":false,"documentation":{"id":5801,"nodeType":"StructuredDocumentation","src":"1683:108:39","text":"@dev Transient (EIP-1153): Cleared at transaction end. Tracks operation type during flash loan callback."},"id":5804,"mutability":"mutable","name":"operationType","nameLocation":"1820:13:39","nodeType":"VariableDeclaration","scope":7828,"src":"1796:37:39","stateVariable":true,"storageLocation":"transient","typeDescriptions":{"typeIdentifier":"t_enum$_OperationType_$5675","typeString":"enum ILeverageStrategiesManager.OperationType"},"typeName":{"id":5803,"nodeType":"UserDefinedTypeName","pathNode":{"id":5802,"name":"OperationType","nameLocations":["1796:13:39"],"nodeType":"IdentifierPath","referencedDeclaration":5675,"src":"1796:13:39"},"referencedDeclaration":5675,"src":"1796:13:39","typeDescriptions":{"typeIdentifier":"t_enum$_OperationType_$5675","typeString":"enum ILeverageStrategiesManager.OperationType"}},"visibility":"internal"},{"constant":false,"documentation":{"id":5805,"nodeType":"StructuredDocumentation","src":"1840:109:39","text":"@dev Transient (EIP-1153): Cleared at transaction end. Stores msg.sender for flash loan callback context."},"id":5807,"mutability":"mutable","name":"operationInitiator","nameLocation":"1972:18:39","nodeType":"VariableDeclaration","scope":7828,"src":"1954:36:39","stateVariable":true,"storageLocation":"transient","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5806,"name":"address","nodeType":"ElementaryTypeName","src":"1954:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"documentation":{"id":5808,"nodeType":"StructuredDocumentation","src":"1997:108:39","text":"@dev Transient (EIP-1153): Cleared at transaction end. Stores collateral market for flash loan callback."},"id":5811,"mutability":"mutable","name":"collateralMarket","nameLocation":"2128:16:39","nodeType":"VariableDeclaration","scope":7828,"src":"2110:34:39","stateVariable":true,"storageLocation":"transient","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":5810,"nodeType":"UserDefinedTypeName","pathNode":{"id":5809,"name":"IVToken","nameLocations":["2110:7:39"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"2110:7:39"},"referencedDeclaration":5277,"src":"2110:7:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"},{"constant":false,"documentation":{"id":5812,"nodeType":"StructuredDocumentation","src":"2151:114:39","text":"@dev Transient (EIP-1153): Cleared at transaction end. Stores collateral seed (enter) or redeem amount (exit)."},"id":5814,"mutability":"mutable","name":"collateralAmount","nameLocation":"2288:16:39","nodeType":"VariableDeclaration","scope":7828,"src":"2270:34:39","stateVariable":true,"storageLocation":"transient","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5813,"name":"uint256","nodeType":"ElementaryTypeName","src":"2270:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"documentation":{"id":5815,"nodeType":"StructuredDocumentation","src":"2311:115:39","text":"@dev Transient (EIP-1153): Cleared at transaction end. Stores borrowed amount seed for enterLeverageFromBorrow."},"id":5817,"mutability":"mutable","name":"borrowedAmountSeed","nameLocation":"2449:18:39","nodeType":"VariableDeclaration","scope":7828,"src":"2431:36:39","stateVariable":true,"storageLocation":"transient","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5816,"name":"uint256","nodeType":"ElementaryTypeName","src":"2431:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"documentation":{"id":5818,"nodeType":"StructuredDocumentation","src":"2474:101:39","text":"@dev Transient (EIP-1153): Cleared at transaction end. Stores minimum expected output after swap."},"id":5820,"mutability":"mutable","name":"minAmountOutAfterSwap","nameLocation":"2598:21:39","nodeType":"VariableDeclaration","scope":7828,"src":"2580:39:39","stateVariable":true,"storageLocation":"transient","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5819,"name":"uint256","nodeType":"ElementaryTypeName","src":"2580:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"body":{"id":5882,"nodeType":"Block","src":"3112:297:39","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5835,"name":"_comptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5824,"src":"3134:12:39","typeDescriptions":{"typeIdentifier":"t_contract$_IComptroller_$5454","typeString":"contract IComptroller"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IComptroller_$5454","typeString":"contract IComptroller"}],"id":5834,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3126:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5833,"name":"address","nodeType":"ElementaryTypeName","src":"3126:7:39","typeDescriptions":{}}},"id":5836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3126:21:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":5839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3159:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5838,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3151:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5837,"name":"address","nodeType":"ElementaryTypeName","src":"3151:7:39","typeDescriptions":{}}},"id":5840,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3151:10:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3126:35:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5844,"name":"_swapHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5827,"src":"3173:11:39","typeDescriptions":{"typeIdentifier":"t_contract$_SwapHelper_$8322","typeString":"contract SwapHelper"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapHelper_$8322","typeString":"contract SwapHelper"}],"id":5843,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3165:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5842,"name":"address","nodeType":"ElementaryTypeName","src":"3165:7:39","typeDescriptions":{}}},"id":5845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3165:20:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":5848,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3197:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5847,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3189:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5846,"name":"address","nodeType":"ElementaryTypeName","src":"3189:7:39","typeDescriptions":{}}},"id":5849,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3189:10:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3165:34:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3126:73:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5854,"name":"_vBNB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5830,"src":"3211:5:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}],"id":5853,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3203:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5852,"name":"address","nodeType":"ElementaryTypeName","src":"3203:7:39","typeDescriptions":{}}},"id":5855,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3203:14:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":5858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3229:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5857,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3221:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5856,"name":"address","nodeType":"ElementaryTypeName","src":"3221:7:39","typeDescriptions":{}}},"id":5859,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3221:10:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3203:28:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3126:105:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5866,"nodeType":"IfStatement","src":"3122:156:39","trueBody":{"id":5865,"nodeType":"Block","src":"3233:45:39","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":5862,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5577,"src":"3254:11:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":5863,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3254:13:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5864,"nodeType":"RevertStatement","src":"3247:20:39"}]}},{"expression":{"id":5869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5867,"name":"COMPTROLLER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5792,"src":"3288:11:39","typeDescriptions":{"typeIdentifier":"t_contract$_IComptroller_$5454","typeString":"contract IComptroller"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5868,"name":"_comptroller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5824,"src":"3302:12:39","typeDescriptions":{"typeIdentifier":"t_contract$_IComptroller_$5454","typeString":"contract IComptroller"}},"src":"3288:26:39","typeDescriptions":{"typeIdentifier":"t_contract$_IComptroller_$5454","typeString":"contract IComptroller"}},"id":5870,"nodeType":"ExpressionStatement","src":"3288:26:39"},{"expression":{"id":5873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5871,"name":"swapHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5796,"src":"3324:10:39","typeDescriptions":{"typeIdentifier":"t_contract$_SwapHelper_$8322","typeString":"contract SwapHelper"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5872,"name":"_swapHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5827,"src":"3337:11:39","typeDescriptions":{"typeIdentifier":"t_contract$_SwapHelper_$8322","typeString":"contract SwapHelper"}},"src":"3324:24:39","typeDescriptions":{"typeIdentifier":"t_contract$_SwapHelper_$8322","typeString":"contract SwapHelper"}},"id":5874,"nodeType":"ExpressionStatement","src":"3324:24:39"},{"expression":{"id":5877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5875,"name":"vBNB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5800,"src":"3358:4:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5876,"name":"_vBNB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5830,"src":"3365:5:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"src":"3358:12:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":5878,"nodeType":"ExpressionStatement","src":"3358:12:39"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":5879,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":435,"src":"3380:20:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":5880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3380:22:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5881,"nodeType":"ExpressionStatement","src":"3380:22:39"}]},"documentation":{"id":5821,"nodeType":"StructuredDocumentation","src":"2626:403:39","text":" @notice Contract constructor\n @dev Sets immutable variables and disables initializers for the implementation contract\n @param _comptroller The Venus comptroller contract address\n @param _swapHelper The swap helper contract address\n @param _vBNB The vBNB market address (not supported for leverage operations)\n @custom:oz-upgrades-unsafe-allow constructor"},"id":5883,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":5831,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5824,"mutability":"mutable","name":"_comptroller","nameLocation":"3059:12:39","nodeType":"VariableDeclaration","scope":5883,"src":"3046:25:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IComptroller_$5454","typeString":"contract IComptroller"},"typeName":{"id":5823,"nodeType":"UserDefinedTypeName","pathNode":{"id":5822,"name":"IComptroller","nameLocations":["3046:12:39"],"nodeType":"IdentifierPath","referencedDeclaration":5454,"src":"3046:12:39"},"referencedDeclaration":5454,"src":"3046:12:39","typeDescriptions":{"typeIdentifier":"t_contract$_IComptroller_$5454","typeString":"contract IComptroller"}},"visibility":"internal"},{"constant":false,"id":5827,"mutability":"mutable","name":"_swapHelper","nameLocation":"3084:11:39","nodeType":"VariableDeclaration","scope":5883,"src":"3073:22:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_SwapHelper_$8322","typeString":"contract SwapHelper"},"typeName":{"id":5826,"nodeType":"UserDefinedTypeName","pathNode":{"id":5825,"name":"SwapHelper","nameLocations":["3073:10:39"],"nodeType":"IdentifierPath","referencedDeclaration":8322,"src":"3073:10:39"},"referencedDeclaration":8322,"src":"3073:10:39","typeDescriptions":{"typeIdentifier":"t_contract$_SwapHelper_$8322","typeString":"contract SwapHelper"}},"visibility":"internal"},{"constant":false,"id":5830,"mutability":"mutable","name":"_vBNB","nameLocation":"3105:5:39","nodeType":"VariableDeclaration","scope":5883,"src":"3097:13:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":5829,"nodeType":"UserDefinedTypeName","pathNode":{"id":5828,"name":"IVToken","nameLocations":["3097:7:39"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"3097:7:39"},"referencedDeclaration":5277,"src":"3097:7:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"}],"src":"3045:66:39"},"returnParameters":{"id":5832,"nodeType":"ParameterList","parameters":[],"src":"3112:0:39"},"scope":7828,"src":"3034:375:39","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":5895,"nodeType":"Block","src":"3591:72:39","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":5889,"name":"__Ownable2Step_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72,"src":"3601:19:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":5890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3601:21:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5891,"nodeType":"ExpressionStatement","src":"3601:21:39"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":5892,"name":"__ReentrancyGuard_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"3632:22:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":5893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3632:24:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5894,"nodeType":"ExpressionStatement","src":"3632:24:39"}]},"documentation":{"id":5884,"nodeType":"StructuredDocumentation","src":"3415:128:39","text":" @notice Initializes the contract\n @dev Sets up the Ownable2Step functionality. Can only be called once."},"functionSelector":"8129fc1c","id":5896,"implemented":true,"kind":"function","modifiers":[{"id":5887,"kind":"modifierInvocation","modifierName":{"id":5886,"name":"initializer","nameLocations":["3579:11:39"],"nodeType":"IdentifierPath","referencedDeclaration":356,"src":"3579:11:39"},"nodeType":"ModifierInvocation","src":"3579:11:39"}],"name":"initialize","nameLocation":"3557:10:39","nodeType":"FunctionDefinition","parameters":{"id":5885,"nodeType":"ParameterList","parameters":[],"src":"3567:2:39"},"returnParameters":{"id":5888,"nodeType":"ParameterList","parameters":[],"src":"3591:0:39"},"scope":7828,"src":"3548:115:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[5686],"body":{"id":6029,"nodeType":"Block","src":"3885:1260:39","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5907,"name":"_collateralAmountToFlashLoan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5904,"src":"3899:28:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5908,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3931:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3899:33:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5913,"nodeType":"IfStatement","src":"3895:67:39","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":5910,"name":"ZeroFlashLoanAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5583,"src":"3941:19:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":5911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3941:21:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5912,"nodeType":"RevertStatement","src":"3934:28:39"}},{"expression":{"arguments":[{"id":5915,"name":"_collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5900,"src":"3994:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}],"id":5914,"name":"_checkMarketSupported","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7827,"src":"3972:21:39","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IVToken_$5277_$returns$__$","typeString":"function (contract IVToken) view"}},"id":5916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3972:40:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5917,"nodeType":"ExpressionStatement","src":"3972:40:39"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":5918,"name":"_checkUserDelegated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7764,"src":"4023:19:39","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":5919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4023:21:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5920,"nodeType":"ExpressionStatement","src":"4023:21:39"},{"expression":{"arguments":[{"id":5922,"name":"_collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5900,"src":"4071:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}],"id":5921,"name":"_accrueInterest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7707,"src":"4055:15:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IVToken_$5277_$returns$__$","typeString":"function (contract IVToken)"}},"id":5923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4055:34:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5924,"nodeType":"ExpressionStatement","src":"4055:34:39"},{"expression":{"arguments":[{"expression":{"id":5926,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4124:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":5927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4128:6:39","memberName":"sender","nodeType":"MemberAccess","src":"4124:10:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5928,"name":"_collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5900,"src":"4136:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}],"id":5925,"name":"_validateAndEnterMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7744,"src":"4100:23:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IVToken_$5277_$returns$__$","typeString":"function (address,contract IVToken)"}},"id":5929,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4100:54:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5930,"nodeType":"ExpressionStatement","src":"4100:54:39"},{"expression":{"arguments":[{"expression":{"id":5932,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4182:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":5933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4186:6:39","memberName":"sender","nodeType":"MemberAccess","src":"4182:10:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5931,"name":"_checkAccountSafe","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7792,"src":"4164:17:39","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":5934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4164:29:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5935,"nodeType":"ExpressionStatement","src":"4164:29:39"},{"expression":{"arguments":[{"id":5937,"name":"_collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5900,"src":"4232:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},{"expression":{"id":5938,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4251:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":5939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4255:6:39","memberName":"sender","nodeType":"MemberAccess","src":"4251:10:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5940,"name":"_collateralAmountSeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5902,"src":"4263:21:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5936,"name":"_transferSeedAmountFromUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7555,"src":"4204:27:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IVToken_$5277_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IVToken,address,uint256)"}},"id":5941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4204:81:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5942,"nodeType":"ExpressionStatement","src":"4204:81:39"},{"expression":{"id":5946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5943,"name":"operationInitiator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5807,"src":"4296:18:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":5944,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4317:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":5945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4321:6:39","memberName":"sender","nodeType":"MemberAccess","src":"4317:10:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4296:31:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5947,"nodeType":"ExpressionStatement","src":"4296:31:39"},{"expression":{"id":5951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5948,"name":"operationType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5804,"src":"4337:13:39","typeDescriptions":{"typeIdentifier":"t_enum$_OperationType_$5675","typeString":"enum ILeverageStrategiesManager.OperationType"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":5949,"name":"OperationType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5675,"src":"4353:13:39","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_OperationType_$5675_$","typeString":"type(enum ILeverageStrategiesManager.OperationType)"}},"id":5950,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4367:18:39","memberName":"ENTER_SINGLE_ASSET","nodeType":"MemberAccess","referencedDeclaration":5670,"src":"4353:32:39","typeDescriptions":{"typeIdentifier":"t_enum$_OperationType_$5675","typeString":"enum ILeverageStrategiesManager.OperationType"}},"src":"4337:48:39","typeDescriptions":{"typeIdentifier":"t_enum$_OperationType_$5675","typeString":"enum ILeverageStrategiesManager.OperationType"}},"id":5952,"nodeType":"ExpressionStatement","src":"4337:48:39"},{"expression":{"id":5955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5953,"name":"collateralAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5814,"src":"4395:16:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5954,"name":"_collateralAmountSeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5902,"src":"4414:21:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4395:40:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5956,"nodeType":"ExpressionStatement","src":"4395:40:39"},{"assignments":[5961],"declarations":[{"constant":false,"id":5961,"mutability":"mutable","name":"borrowedMarkets","nameLocation":"4463:15:39","nodeType":"VariableDeclaration","scope":6029,"src":"4446:32:39","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr","typeString":"contract IVToken[]"},"typeName":{"baseType":{"id":5959,"nodeType":"UserDefinedTypeName","pathNode":{"id":5958,"name":"IVToken","nameLocations":["4446:7:39"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"4446:7:39"},"referencedDeclaration":5277,"src":"4446:7:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":5960,"nodeType":"ArrayTypeName","src":"4446:9:39","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_storage_ptr","typeString":"contract IVToken[]"}},"visibility":"internal"}],"id":5968,"initialValue":{"arguments":[{"hexValue":"31","id":5966,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4495:1:39","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":5965,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4481:13:39","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IVToken[] memory)"},"typeName":{"baseType":{"id":5963,"nodeType":"UserDefinedTypeName","pathNode":{"id":5962,"name":"IVToken","nameLocations":["4485:7:39"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"4485:7:39"},"referencedDeclaration":5277,"src":"4485:7:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":5964,"nodeType":"ArrayTypeName","src":"4485:9:39","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_storage_ptr","typeString":"contract IVToken[]"}}},"id":5967,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4481:16:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr","typeString":"contract IVToken[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4446:51:39"},{"expression":{"id":5973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":5969,"name":"borrowedMarkets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5961,"src":"4507:15:39","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr","typeString":"contract IVToken[] memory"}},"id":5971,"indexExpression":{"hexValue":"30","id":5970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4523:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4507:18:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5972,"name":"_collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5900,"src":"4528:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"src":"4507:38:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":5974,"nodeType":"ExpressionStatement","src":"4507:38:39"},{"assignments":[5979],"declarations":[{"constant":false,"id":5979,"mutability":"mutable","name":"flashLoanAmounts","nameLocation":"4572:16:39","nodeType":"VariableDeclaration","scope":6029,"src":"4555:33:39","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":5977,"name":"uint256","nodeType":"ElementaryTypeName","src":"4555:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5978,"nodeType":"ArrayTypeName","src":"4555:9:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":5985,"initialValue":{"arguments":[{"hexValue":"31","id":5983,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4605:1:39","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":5982,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4591:13:39","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":5980,"name":"uint256","nodeType":"ElementaryTypeName","src":"4595:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5981,"nodeType":"ArrayTypeName","src":"4595:9:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":5984,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4591:16:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4555:52:39"},{"expression":{"id":5990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":5986,"name":"flashLoanAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5979,"src":"4617:16:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":5988,"indexExpression":{"hexValue":"30","id":5987,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4634:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4617:19:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5989,"name":"_collateralAmountToFlashLoan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5904,"src":"4639:28:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4617:50:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5991,"nodeType":"ExpressionStatement","src":"4617:50:39"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":5997,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4728:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":5998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4732:6:39","memberName":"sender","nodeType":"MemberAccess","src":"4728:10:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5996,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4720:8:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":5995,"name":"address","nodeType":"ElementaryTypeName","src":"4720:8:39","stateMutability":"payable","typeDescriptions":{}}},"id":5999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4720:19:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"arguments":[{"id":6004,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4769:4:39","typeDescriptions":{"typeIdentifier":"t_contract$_LeverageStrategiesManager_$7828","typeString":"contract LeverageStrategiesManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LeverageStrategiesManager_$7828","typeString":"contract LeverageStrategiesManager"}],"id":6003,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4761:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6002,"name":"address","nodeType":"ElementaryTypeName","src":"4761:7:39","typeDescriptions":{}}},"id":6005,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4761:13:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6001,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4753:8:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":6000,"name":"address","nodeType":"ElementaryTypeName","src":"4753:8:39","stateMutability":"payable","typeDescriptions":{}}},"id":6006,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4753:22:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6007,"name":"borrowedMarkets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5961,"src":"4789:15:39","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr","typeString":"contract IVToken[] memory"}},{"id":6008,"name":"flashLoanAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5979,"src":"4818:16:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"hexValue":"","id":6009,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4848:2:39","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr","typeString":"contract IVToken[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":5992,"name":"COMPTROLLER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5792,"src":"4678:11:39","typeDescriptions":{"typeIdentifier":"t_contract$_IComptroller_$5454","typeString":"contract IComptroller"}},"id":5994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4690:16:39","memberName":"executeFlashLoan","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"4678:28:39","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_payable_$_t_address_payable_$_t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address payable,address payable,contract IVToken[] memory,uint256[] memory,bytes memory) external"}},"id":6010,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4678:182:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6011,"nodeType":"ExpressionStatement","src":"4678:182:39"},{"expression":{"arguments":[{"expression":{"id":6013,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4889:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4893:6:39","memberName":"sender","nodeType":"MemberAccess","src":"4889:10:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6012,"name":"_checkAccountSafe","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7792,"src":"4871:17:39","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":6015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4871:29:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6016,"nodeType":"ExpressionStatement","src":"4871:29:39"},{"eventCall":{"arguments":[{"expression":{"id":6018,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4956:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4960:6:39","memberName":"sender","nodeType":"MemberAccess","src":"4956:10:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6020,"name":"_collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5900,"src":"4980:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},{"id":6021,"name":"_collateralAmountSeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5902,"src":"5011:21:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6022,"name":"_collateralAmountToFlashLoan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5904,"src":"5046:28:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6017,"name":"SingleAssetLeverageEntered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5612,"src":"4916:26:39","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_contract$_IVToken_$5277_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,contract IVToken,uint256,uint256)"}},"id":6023,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4916:168:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6024,"nodeType":"EmitStatement","src":"4911:173:39"},{"expression":{"arguments":[{"id":6026,"name":"_collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5900,"src":"5120:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}],"id":6025,"name":"_transferDustToInitiator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7607,"src":"5095:24:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IVToken_$5277_$returns$__$","typeString":"function (contract IVToken)"}},"id":6027,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5095:43:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6028,"nodeType":"ExpressionStatement","src":"5095:43:39"}]},"documentation":{"id":5897,"nodeType":"StructuredDocumentation","src":"3669:42:39","text":"@inheritdoc ILeverageStrategiesManager"},"functionSelector":"3c3a2c21","id":6030,"implemented":true,"kind":"function","modifiers":[],"name":"enterSingleAssetLeverage","nameLocation":"3725:24:39","nodeType":"FunctionDefinition","parameters":{"id":5905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5900,"mutability":"mutable","name":"_collateralMarket","nameLocation":"3767:17:39","nodeType":"VariableDeclaration","scope":6030,"src":"3759:25:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":5899,"nodeType":"UserDefinedTypeName","pathNode":{"id":5898,"name":"IVToken","nameLocations":["3759:7:39"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"3759:7:39"},"referencedDeclaration":5277,"src":"3759:7:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"},{"constant":false,"id":5902,"mutability":"mutable","name":"_collateralAmountSeed","nameLocation":"3802:21:39","nodeType":"VariableDeclaration","scope":6030,"src":"3794:29:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5901,"name":"uint256","nodeType":"ElementaryTypeName","src":"3794:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5904,"mutability":"mutable","name":"_collateralAmountToFlashLoan","nameLocation":"3841:28:39","nodeType":"VariableDeclaration","scope":6030,"src":"3833:36:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5903,"name":"uint256","nodeType":"ElementaryTypeName","src":"3833:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3749:126:39"},"returnParameters":{"id":5906,"nodeType":"ParameterList","parameters":[],"src":"3885:0:39"},"scope":7828,"src":"3716:1429:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[5704],"body":{"id":6198,"nodeType":"Block","src":"5461:1595:39","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6048,"name":"_borrowedAmountToFlashLoan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6041,"src":"5475:26:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5505:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5475:31:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6054,"nodeType":"IfStatement","src":"5471:65:39","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6051,"name":"ZeroFlashLoanAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5583,"src":"5515:19:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5515:21:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6053,"nodeType":"RevertStatement","src":"5508:28:39"}},{"condition":{"commonType":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"id":6057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6055,"name":"_collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6034,"src":"5550:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":6056,"name":"_borrowedMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6039,"src":"5571:15:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"src":"5550:36:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6061,"nodeType":"IfStatement","src":"5546:67:39","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6058,"name":"IdenticalMarkets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5591,"src":"5595:16:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6059,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5595:18:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6060,"nodeType":"RevertStatement","src":"5588:25:39"}},{"expression":{"arguments":[{"id":6063,"name":"_collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6034,"src":"5645:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}],"id":6062,"name":"_checkMarketSupported","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7827,"src":"5623:21:39","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IVToken_$5277_$returns$__$","typeString":"function (contract IVToken) view"}},"id":6064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5623:40:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6065,"nodeType":"ExpressionStatement","src":"5623:40:39"},{"expression":{"arguments":[{"id":6067,"name":"_borrowedMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6039,"src":"5695:15:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}],"id":6066,"name":"_checkMarketSupported","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7827,"src":"5673:21:39","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IVToken_$5277_$returns$__$","typeString":"function (contract IVToken) view"}},"id":6068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5673:38:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6069,"nodeType":"ExpressionStatement","src":"5673:38:39"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":6070,"name":"_checkUserDelegated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7764,"src":"5722:19:39","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":6071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5722:21:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6072,"nodeType":"ExpressionStatement","src":"5722:21:39"},{"expression":{"arguments":[{"id":6074,"name":"_collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6034,"src":"5770:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}],"id":6073,"name":"_accrueInterest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7707,"src":"5754:15:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IVToken_$5277_$returns$__$","typeString":"function (contract IVToken)"}},"id":6075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5754:34:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6076,"nodeType":"ExpressionStatement","src":"5754:34:39"},{"expression":{"arguments":[{"id":6078,"name":"_borrowedMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6039,"src":"5814:15:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}],"id":6077,"name":"_accrueInterest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7707,"src":"5798:15:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IVToken_$5277_$returns$__$","typeString":"function (contract IVToken)"}},"id":6079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5798:32:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6080,"nodeType":"ExpressionStatement","src":"5798:32:39"},{"expression":{"arguments":[{"expression":{"id":6082,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5865:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5869:6:39","memberName":"sender","nodeType":"MemberAccess","src":"5865:10:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6084,"name":"_collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6034,"src":"5877:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}],"id":6081,"name":"_validateAndEnterMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7744,"src":"5841:23:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IVToken_$5277_$returns$__$","typeString":"function (address,contract IVToken)"}},"id":6085,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5841:54:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6086,"nodeType":"ExpressionStatement","src":"5841:54:39"},{"expression":{"arguments":[{"expression":{"id":6088,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5923:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5927:6:39","memberName":"sender","nodeType":"MemberAccess","src":"5923:10:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6087,"name":"_checkAccountSafe","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7792,"src":"5905:17:39","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":6090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5905:29:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6091,"nodeType":"ExpressionStatement","src":"5905:29:39"},{"expression":{"arguments":[{"id":6093,"name":"_collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6034,"src":"5973:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},{"expression":{"id":6094,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5992:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5996:6:39","memberName":"sender","nodeType":"MemberAccess","src":"5992:10:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6096,"name":"_collateralAmountSeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6036,"src":"6004:21:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6092,"name":"_transferSeedAmountFromUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7555,"src":"5945:27:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IVToken_$5277_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IVToken,address,uint256)"}},"id":6097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5945:81:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6098,"nodeType":"ExpressionStatement","src":"5945:81:39"},{"expression":{"id":6102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6099,"name":"operationInitiator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5807,"src":"6037:18:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":6100,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6058:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6062:6:39","memberName":"sender","nodeType":"MemberAccess","src":"6058:10:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6037:31:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6103,"nodeType":"ExpressionStatement","src":"6037:31:39"},{"expression":{"id":6106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6104,"name":"collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5811,"src":"6078:16:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6105,"name":"_collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6034,"src":"6097:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"src":"6078:36:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":6107,"nodeType":"ExpressionStatement","src":"6078:36:39"},{"expression":{"id":6110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6108,"name":"collateralAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5814,"src":"6124:16:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6109,"name":"_collateralAmountSeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6036,"src":"6143:21:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6124:40:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6111,"nodeType":"ExpressionStatement","src":"6124:40:39"},{"expression":{"id":6114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6112,"name":"minAmountOutAfterSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5820,"src":"6174:21:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6113,"name":"_minAmountOutAfterSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6043,"src":"6198:22:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6174:46:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6115,"nodeType":"ExpressionStatement","src":"6174:46:39"},{"expression":{"id":6119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6116,"name":"operationType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5804,"src":"6230:13:39","typeDescriptions":{"typeIdentifier":"t_enum$_OperationType_$5675","typeString":"enum ILeverageStrategiesManager.OperationType"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":6117,"name":"OperationType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5675,"src":"6246:13:39","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_OperationType_$5675_$","typeString":"type(enum ILeverageStrategiesManager.OperationType)"}},"id":6118,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6260:16:39","memberName":"ENTER_COLLATERAL","nodeType":"MemberAccess","referencedDeclaration":5671,"src":"6246:30:39","typeDescriptions":{"typeIdentifier":"t_enum$_OperationType_$5675","typeString":"enum ILeverageStrategiesManager.OperationType"}},"src":"6230:46:39","typeDescriptions":{"typeIdentifier":"t_enum$_OperationType_$5675","typeString":"enum ILeverageStrategiesManager.OperationType"}},"id":6120,"nodeType":"ExpressionStatement","src":"6230:46:39"},{"assignments":[6125],"declarations":[{"constant":false,"id":6125,"mutability":"mutable","name":"borrowedMarkets","nameLocation":"6304:15:39","nodeType":"VariableDeclaration","scope":6198,"src":"6287:32:39","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr","typeString":"contract IVToken[]"},"typeName":{"baseType":{"id":6123,"nodeType":"UserDefinedTypeName","pathNode":{"id":6122,"name":"IVToken","nameLocations":["6287:7:39"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"6287:7:39"},"referencedDeclaration":5277,"src":"6287:7:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":6124,"nodeType":"ArrayTypeName","src":"6287:9:39","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_storage_ptr","typeString":"contract IVToken[]"}},"visibility":"internal"}],"id":6132,"initialValue":{"arguments":[{"hexValue":"31","id":6130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6336:1:39","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":6129,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"6322:13:39","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IVToken[] memory)"},"typeName":{"baseType":{"id":6127,"nodeType":"UserDefinedTypeName","pathNode":{"id":6126,"name":"IVToken","nameLocations":["6326:7:39"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"6326:7:39"},"referencedDeclaration":5277,"src":"6326:7:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":6128,"nodeType":"ArrayTypeName","src":"6326:9:39","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_storage_ptr","typeString":"contract IVToken[]"}}},"id":6131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6322:16:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr","typeString":"contract IVToken[] memory"}},"nodeType":"VariableDeclarationStatement","src":"6287:51:39"},{"expression":{"id":6137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6133,"name":"borrowedMarkets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6125,"src":"6348:15:39","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr","typeString":"contract IVToken[] memory"}},"id":6135,"indexExpression":{"hexValue":"30","id":6134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6364:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6348:18:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6136,"name":"_borrowedMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6039,"src":"6369:15:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"src":"6348:36:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":6138,"nodeType":"ExpressionStatement","src":"6348:36:39"},{"assignments":[6143],"declarations":[{"constant":false,"id":6143,"mutability":"mutable","name":"flashLoanAmounts","nameLocation":"6411:16:39","nodeType":"VariableDeclaration","scope":6198,"src":"6394:33:39","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6141,"name":"uint256","nodeType":"ElementaryTypeName","src":"6394:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6142,"nodeType":"ArrayTypeName","src":"6394:9:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":6149,"initialValue":{"arguments":[{"hexValue":"31","id":6147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6444:1:39","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":6146,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"6430:13:39","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":6144,"name":"uint256","nodeType":"ElementaryTypeName","src":"6434:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6145,"nodeType":"ArrayTypeName","src":"6434:9:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":6148,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6430:16:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"6394:52:39"},{"expression":{"id":6154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6150,"name":"flashLoanAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6143,"src":"6456:16:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6152,"indexExpression":{"hexValue":"30","id":6151,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6473:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6456:19:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6153,"name":"_borrowedAmountToFlashLoan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6041,"src":"6478:26:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6456:48:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6155,"nodeType":"ExpressionStatement","src":"6456:48:39"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":6161,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6565:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6569:6:39","memberName":"sender","nodeType":"MemberAccess","src":"6565:10:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6160,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6557:8:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":6159,"name":"address","nodeType":"ElementaryTypeName","src":"6557:8:39","stateMutability":"payable","typeDescriptions":{}}},"id":6163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6557:19:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"arguments":[{"id":6168,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6606:4:39","typeDescriptions":{"typeIdentifier":"t_contract$_LeverageStrategiesManager_$7828","typeString":"contract LeverageStrategiesManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LeverageStrategiesManager_$7828","typeString":"contract LeverageStrategiesManager"}],"id":6167,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6598:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6166,"name":"address","nodeType":"ElementaryTypeName","src":"6598:7:39","typeDescriptions":{}}},"id":6169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6598:13:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6165,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6590:8:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":6164,"name":"address","nodeType":"ElementaryTypeName","src":"6590:8:39","stateMutability":"payable","typeDescriptions":{}}},"id":6170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6590:22:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6171,"name":"borrowedMarkets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6125,"src":"6626:15:39","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr","typeString":"contract IVToken[] memory"}},{"id":6172,"name":"flashLoanAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6143,"src":"6655:16:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6173,"name":"_swapData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6045,"src":"6685:9:39","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr","typeString":"contract IVToken[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":6156,"name":"COMPTROLLER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5792,"src":"6515:11:39","typeDescriptions":{"typeIdentifier":"t_contract$_IComptroller_$5454","typeString":"contract IComptroller"}},"id":6158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6527:16:39","memberName":"executeFlashLoan","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"6515:28:39","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_payable_$_t_address_payable_$_t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address payable,address payable,contract IVToken[] memory,uint256[] memory,bytes memory) external"}},"id":6174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6515:189:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6175,"nodeType":"ExpressionStatement","src":"6515:189:39"},{"expression":{"arguments":[{"expression":{"id":6177,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6733:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6737:6:39","memberName":"sender","nodeType":"MemberAccess","src":"6733:10:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6176,"name":"_checkAccountSafe","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7792,"src":"6715:17:39","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":6179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6715:29:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6180,"nodeType":"ExpressionStatement","src":"6715:29:39"},{"eventCall":{"arguments":[{"expression":{"id":6182,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6789:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6793:6:39","memberName":"sender","nodeType":"MemberAccess","src":"6789:10:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6184,"name":"_collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6034,"src":"6813:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},{"id":6185,"name":"_collateralAmountSeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6036,"src":"6844:21:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6186,"name":"_borrowedMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6039,"src":"6879:15:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},{"id":6187,"name":"_borrowedAmountToFlashLoan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6041,"src":"6908:26:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6181,"name":"LeverageEntered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5627,"src":"6760:15:39","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_contract$_IVToken_$5277_$_t_uint256_$_t_contract$_IVToken_$5277_$_t_uint256_$returns$__$","typeString":"function (address,contract IVToken,uint256,contract IVToken,uint256)"}},"id":6188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6760:184:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6189,"nodeType":"EmitStatement","src":"6755:189:39"},{"expression":{"arguments":[{"id":6191,"name":"_collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6034,"src":"6980:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}],"id":6190,"name":"_transferDustToInitiator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7607,"src":"6955:24:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IVToken_$5277_$returns$__$","typeString":"function (contract IVToken)"}},"id":6192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6955:43:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6193,"nodeType":"ExpressionStatement","src":"6955:43:39"},{"expression":{"arguments":[{"id":6195,"name":"_borrowedMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6039,"src":"7033:15:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}],"id":6194,"name":"_transferDustToInitiator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7607,"src":"7008:24:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IVToken_$5277_$returns$__$","typeString":"function (contract IVToken)"}},"id":6196,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7008:41:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6197,"nodeType":"ExpressionStatement","src":"7008:41:39"}]},"documentation":{"id":6031,"nodeType":"StructuredDocumentation","src":"5151:42:39","text":"@inheritdoc ILeverageStrategiesManager"},"functionSelector":"3a8f8c43","id":6199,"implemented":true,"kind":"function","modifiers":[],"name":"enterLeverage","nameLocation":"5207:13:39","nodeType":"FunctionDefinition","parameters":{"id":6046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6034,"mutability":"mutable","name":"_collateralMarket","nameLocation":"5238:17:39","nodeType":"VariableDeclaration","scope":6199,"src":"5230:25:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":6033,"nodeType":"UserDefinedTypeName","pathNode":{"id":6032,"name":"IVToken","nameLocations":["5230:7:39"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"5230:7:39"},"referencedDeclaration":5277,"src":"5230:7:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"},{"constant":false,"id":6036,"mutability":"mutable","name":"_collateralAmountSeed","nameLocation":"5273:21:39","nodeType":"VariableDeclaration","scope":6199,"src":"5265:29:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6035,"name":"uint256","nodeType":"ElementaryTypeName","src":"5265:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6039,"mutability":"mutable","name":"_borrowedMarket","nameLocation":"5312:15:39","nodeType":"VariableDeclaration","scope":6199,"src":"5304:23:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":6038,"nodeType":"UserDefinedTypeName","pathNode":{"id":6037,"name":"IVToken","nameLocations":["5304:7:39"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"5304:7:39"},"referencedDeclaration":5277,"src":"5304:7:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"},{"constant":false,"id":6041,"mutability":"mutable","name":"_borrowedAmountToFlashLoan","nameLocation":"5345:26:39","nodeType":"VariableDeclaration","scope":6199,"src":"5337:34:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6040,"name":"uint256","nodeType":"ElementaryTypeName","src":"5337:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6043,"mutability":"mutable","name":"_minAmountOutAfterSwap","nameLocation":"5389:22:39","nodeType":"VariableDeclaration","scope":6199,"src":"5381:30:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6042,"name":"uint256","nodeType":"ElementaryTypeName","src":"5381:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6045,"mutability":"mutable","name":"_swapData","nameLocation":"5436:9:39","nodeType":"VariableDeclaration","scope":6199,"src":"5421:24:39","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6044,"name":"bytes","nodeType":"ElementaryTypeName","src":"5421:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5220:231:39"},"returnParameters":{"id":6047,"nodeType":"ParameterList","parameters":[],"src":"5461:0:39"},"scope":7828,"src":"5198:1858:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[5722],"body":{"id":6367,"nodeType":"Block","src":"7380:1595:39","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6217,"name":"_borrowedAmountToFlashLoan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6210,"src":"7394:26:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6218,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7424:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7394:31:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6223,"nodeType":"IfStatement","src":"7390:65:39","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6220,"name":"ZeroFlashLoanAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5583,"src":"7434:19:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6221,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7434:21:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6222,"nodeType":"RevertStatement","src":"7427:28:39"}},{"condition":{"commonType":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"id":6226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6224,"name":"_collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6203,"src":"7469:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":6225,"name":"_borrowedMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6206,"src":"7490:15:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"src":"7469:36:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6230,"nodeType":"IfStatement","src":"7465:67:39","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6227,"name":"IdenticalMarkets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5591,"src":"7514:16:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7514:18:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6229,"nodeType":"RevertStatement","src":"7507:25:39"}},{"expression":{"arguments":[{"id":6232,"name":"_collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6203,"src":"7564:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}],"id":6231,"name":"_checkMarketSupported","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7827,"src":"7542:21:39","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IVToken_$5277_$returns$__$","typeString":"function (contract IVToken) view"}},"id":6233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7542:40:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6234,"nodeType":"ExpressionStatement","src":"7542:40:39"},{"expression":{"arguments":[{"id":6236,"name":"_borrowedMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6206,"src":"7614:15:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}],"id":6235,"name":"_checkMarketSupported","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7827,"src":"7592:21:39","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IVToken_$5277_$returns$__$","typeString":"function (contract IVToken) view"}},"id":6237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7592:38:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6238,"nodeType":"ExpressionStatement","src":"7592:38:39"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":6239,"name":"_checkUserDelegated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7764,"src":"7641:19:39","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":6240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7641:21:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6241,"nodeType":"ExpressionStatement","src":"7641:21:39"},{"expression":{"arguments":[{"id":6243,"name":"_collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6203,"src":"7689:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}],"id":6242,"name":"_accrueInterest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7707,"src":"7673:15:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IVToken_$5277_$returns$__$","typeString":"function (contract IVToken)"}},"id":6244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7673:34:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6245,"nodeType":"ExpressionStatement","src":"7673:34:39"},{"expression":{"arguments":[{"id":6247,"name":"_borrowedMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6206,"src":"7733:15:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}],"id":6246,"name":"_accrueInterest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7707,"src":"7717:15:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IVToken_$5277_$returns$__$","typeString":"function (contract IVToken)"}},"id":6248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7717:32:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6249,"nodeType":"ExpressionStatement","src":"7717:32:39"},{"expression":{"arguments":[{"expression":{"id":6251,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7784:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7788:6:39","memberName":"sender","nodeType":"MemberAccess","src":"7784:10:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6253,"name":"_collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6203,"src":"7796:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}],"id":6250,"name":"_validateAndEnterMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7744,"src":"7760:23:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IVToken_$5277_$returns$__$","typeString":"function (address,contract IVToken)"}},"id":6254,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7760:54:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6255,"nodeType":"ExpressionStatement","src":"7760:54:39"},{"expression":{"arguments":[{"expression":{"id":6257,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7842:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7846:6:39","memberName":"sender","nodeType":"MemberAccess","src":"7842:10:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6256,"name":"_checkAccountSafe","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7792,"src":"7824:17:39","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":6259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7824:29:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6260,"nodeType":"ExpressionStatement","src":"7824:29:39"},{"expression":{"arguments":[{"id":6262,"name":"_borrowedMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6206,"src":"7892:15:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},{"expression":{"id":6263,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7909:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7913:6:39","memberName":"sender","nodeType":"MemberAccess","src":"7909:10:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6265,"name":"_borrowedAmountSeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6208,"src":"7921:19:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6261,"name":"_transferSeedAmountFromUser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7555,"src":"7864:27:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IVToken_$5277_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IVToken,address,uint256)"}},"id":6266,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7864:77:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6267,"nodeType":"ExpressionStatement","src":"7864:77:39"},{"expression":{"id":6271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6268,"name":"operationInitiator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5807,"src":"7952:18:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":6269,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7973:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7977:6:39","memberName":"sender","nodeType":"MemberAccess","src":"7973:10:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7952:31:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6272,"nodeType":"ExpressionStatement","src":"7952:31:39"},{"expression":{"id":6275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6273,"name":"collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5811,"src":"7993:16:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6274,"name":"_collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6203,"src":"8012:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"src":"7993:36:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":6276,"nodeType":"ExpressionStatement","src":"7993:36:39"},{"expression":{"id":6279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6277,"name":"borrowedAmountSeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5817,"src":"8039:18:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6278,"name":"_borrowedAmountSeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6208,"src":"8060:19:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8039:40:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6280,"nodeType":"ExpressionStatement","src":"8039:40:39"},{"expression":{"id":6283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6281,"name":"minAmountOutAfterSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5820,"src":"8089:21:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6282,"name":"_minAmountOutAfterSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6212,"src":"8113:22:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8089:46:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6284,"nodeType":"ExpressionStatement","src":"8089:46:39"},{"expression":{"id":6288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6285,"name":"operationType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5804,"src":"8145:13:39","typeDescriptions":{"typeIdentifier":"t_enum$_OperationType_$5675","typeString":"enum ILeverageStrategiesManager.OperationType"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":6286,"name":"OperationType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5675,"src":"8161:13:39","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_OperationType_$5675_$","typeString":"type(enum ILeverageStrategiesManager.OperationType)"}},"id":6287,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8175:12:39","memberName":"ENTER_BORROW","nodeType":"MemberAccess","referencedDeclaration":5672,"src":"8161:26:39","typeDescriptions":{"typeIdentifier":"t_enum$_OperationType_$5675","typeString":"enum ILeverageStrategiesManager.OperationType"}},"src":"8145:42:39","typeDescriptions":{"typeIdentifier":"t_enum$_OperationType_$5675","typeString":"enum ILeverageStrategiesManager.OperationType"}},"id":6289,"nodeType":"ExpressionStatement","src":"8145:42:39"},{"assignments":[6294],"declarations":[{"constant":false,"id":6294,"mutability":"mutable","name":"borrowedMarkets","nameLocation":"8215:15:39","nodeType":"VariableDeclaration","scope":6367,"src":"8198:32:39","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr","typeString":"contract IVToken[]"},"typeName":{"baseType":{"id":6292,"nodeType":"UserDefinedTypeName","pathNode":{"id":6291,"name":"IVToken","nameLocations":["8198:7:39"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"8198:7:39"},"referencedDeclaration":5277,"src":"8198:7:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":6293,"nodeType":"ArrayTypeName","src":"8198:9:39","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_storage_ptr","typeString":"contract IVToken[]"}},"visibility":"internal"}],"id":6301,"initialValue":{"arguments":[{"hexValue":"31","id":6299,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8247:1:39","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":6298,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"8233:13:39","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IVToken[] memory)"},"typeName":{"baseType":{"id":6296,"nodeType":"UserDefinedTypeName","pathNode":{"id":6295,"name":"IVToken","nameLocations":["8237:7:39"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"8237:7:39"},"referencedDeclaration":5277,"src":"8237:7:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":6297,"nodeType":"ArrayTypeName","src":"8237:9:39","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_storage_ptr","typeString":"contract IVToken[]"}}},"id":6300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8233:16:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr","typeString":"contract IVToken[] memory"}},"nodeType":"VariableDeclarationStatement","src":"8198:51:39"},{"expression":{"id":6306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6302,"name":"borrowedMarkets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6294,"src":"8259:15:39","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr","typeString":"contract IVToken[] memory"}},"id":6304,"indexExpression":{"hexValue":"30","id":6303,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8275:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8259:18:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6305,"name":"_borrowedMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6206,"src":"8280:15:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"src":"8259:36:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":6307,"nodeType":"ExpressionStatement","src":"8259:36:39"},{"assignments":[6312],"declarations":[{"constant":false,"id":6312,"mutability":"mutable","name":"flashLoanAmounts","nameLocation":"8322:16:39","nodeType":"VariableDeclaration","scope":6367,"src":"8305:33:39","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6310,"name":"uint256","nodeType":"ElementaryTypeName","src":"8305:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6311,"nodeType":"ArrayTypeName","src":"8305:9:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":6318,"initialValue":{"arguments":[{"hexValue":"31","id":6316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8355:1:39","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":6315,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"8341:13:39","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":6313,"name":"uint256","nodeType":"ElementaryTypeName","src":"8345:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6314,"nodeType":"ArrayTypeName","src":"8345:9:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":6317,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8341:16:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"8305:52:39"},{"expression":{"id":6323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6319,"name":"flashLoanAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6312,"src":"8367:16:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6321,"indexExpression":{"hexValue":"30","id":6320,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8384:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8367:19:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6322,"name":"_borrowedAmountToFlashLoan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6210,"src":"8389:26:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8367:48:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6324,"nodeType":"ExpressionStatement","src":"8367:48:39"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":6330,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8476:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8480:6:39","memberName":"sender","nodeType":"MemberAccess","src":"8476:10:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6329,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8468:8:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":6328,"name":"address","nodeType":"ElementaryTypeName","src":"8468:8:39","stateMutability":"payable","typeDescriptions":{}}},"id":6332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8468:19:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"arguments":[{"id":6337,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8517:4:39","typeDescriptions":{"typeIdentifier":"t_contract$_LeverageStrategiesManager_$7828","typeString":"contract LeverageStrategiesManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LeverageStrategiesManager_$7828","typeString":"contract LeverageStrategiesManager"}],"id":6336,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8509:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6335,"name":"address","nodeType":"ElementaryTypeName","src":"8509:7:39","typeDescriptions":{}}},"id":6338,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8509:13:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6334,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8501:8:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":6333,"name":"address","nodeType":"ElementaryTypeName","src":"8501:8:39","stateMutability":"payable","typeDescriptions":{}}},"id":6339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8501:22:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6340,"name":"borrowedMarkets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6294,"src":"8537:15:39","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr","typeString":"contract IVToken[] memory"}},{"id":6341,"name":"flashLoanAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6312,"src":"8566:16:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6342,"name":"_swapData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6214,"src":"8596:9:39","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr","typeString":"contract IVToken[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":6325,"name":"COMPTROLLER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5792,"src":"8426:11:39","typeDescriptions":{"typeIdentifier":"t_contract$_IComptroller_$5454","typeString":"contract IComptroller"}},"id":6327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8438:16:39","memberName":"executeFlashLoan","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"8426:28:39","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_payable_$_t_address_payable_$_t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address payable,address payable,contract IVToken[] memory,uint256[] memory,bytes memory) external"}},"id":6343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8426:189:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6344,"nodeType":"ExpressionStatement","src":"8426:189:39"},{"expression":{"arguments":[{"expression":{"id":6346,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8644:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8648:6:39","memberName":"sender","nodeType":"MemberAccess","src":"8644:10:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6345,"name":"_checkAccountSafe","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7792,"src":"8626:17:39","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":6348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8626:29:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6349,"nodeType":"ExpressionStatement","src":"8626:29:39"},{"eventCall":{"arguments":[{"expression":{"id":6351,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8710:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8714:6:39","memberName":"sender","nodeType":"MemberAccess","src":"8710:10:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6353,"name":"_collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6203,"src":"8734:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},{"id":6354,"name":"_borrowedMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6206,"src":"8765:15:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},{"id":6355,"name":"_borrowedAmountSeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6208,"src":"8794:19:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6356,"name":"_borrowedAmountToFlashLoan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6210,"src":"8827:26:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6350,"name":"LeverageEnteredFromBorrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5642,"src":"8671:25:39","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_contract$_IVToken_$5277_$_t_contract$_IVToken_$5277_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,contract IVToken,contract IVToken,uint256,uint256)"}},"id":6357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8671:192:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6358,"nodeType":"EmitStatement","src":"8666:197:39"},{"expression":{"arguments":[{"id":6360,"name":"_collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6203,"src":"8899:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}],"id":6359,"name":"_transferDustToInitiator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7607,"src":"8874:24:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IVToken_$5277_$returns$__$","typeString":"function (contract IVToken)"}},"id":6361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8874:43:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6362,"nodeType":"ExpressionStatement","src":"8874:43:39"},{"expression":{"arguments":[{"id":6364,"name":"_borrowedMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6206,"src":"8952:15:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}],"id":6363,"name":"_transferDustToInitiator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7607,"src":"8927:24:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IVToken_$5277_$returns$__$","typeString":"function (contract IVToken)"}},"id":6365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8927:41:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6366,"nodeType":"ExpressionStatement","src":"8927:41:39"}]},"documentation":{"id":6200,"nodeType":"StructuredDocumentation","src":"7062:42:39","text":"@inheritdoc ILeverageStrategiesManager"},"functionSelector":"13424801","id":6368,"implemented":true,"kind":"function","modifiers":[],"name":"enterLeverageFromBorrow","nameLocation":"7118:23:39","nodeType":"FunctionDefinition","parameters":{"id":6215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6203,"mutability":"mutable","name":"_collateralMarket","nameLocation":"7159:17:39","nodeType":"VariableDeclaration","scope":6368,"src":"7151:25:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":6202,"nodeType":"UserDefinedTypeName","pathNode":{"id":6201,"name":"IVToken","nameLocations":["7151:7:39"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"7151:7:39"},"referencedDeclaration":5277,"src":"7151:7:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"},{"constant":false,"id":6206,"mutability":"mutable","name":"_borrowedMarket","nameLocation":"7194:15:39","nodeType":"VariableDeclaration","scope":6368,"src":"7186:23:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":6205,"nodeType":"UserDefinedTypeName","pathNode":{"id":6204,"name":"IVToken","nameLocations":["7186:7:39"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"7186:7:39"},"referencedDeclaration":5277,"src":"7186:7:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"},{"constant":false,"id":6208,"mutability":"mutable","name":"_borrowedAmountSeed","nameLocation":"7227:19:39","nodeType":"VariableDeclaration","scope":6368,"src":"7219:27:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6207,"name":"uint256","nodeType":"ElementaryTypeName","src":"7219:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6210,"mutability":"mutable","name":"_borrowedAmountToFlashLoan","nameLocation":"7264:26:39","nodeType":"VariableDeclaration","scope":6368,"src":"7256:34:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6209,"name":"uint256","nodeType":"ElementaryTypeName","src":"7256:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6212,"mutability":"mutable","name":"_minAmountOutAfterSwap","nameLocation":"7308:22:39","nodeType":"VariableDeclaration","scope":6368,"src":"7300:30:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6211,"name":"uint256","nodeType":"ElementaryTypeName","src":"7300:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6214,"mutability":"mutable","name":"_swapData","nameLocation":"7355:9:39","nodeType":"VariableDeclaration","scope":6368,"src":"7340:24:39","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6213,"name":"bytes","nodeType":"ElementaryTypeName","src":"7340:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7141:229:39"},"returnParameters":{"id":6216,"nodeType":"ParameterList","parameters":[],"src":"7380:0:39"},"scope":7828,"src":"7109:1866:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[5740],"body":{"id":6510,"nodeType":"Block","src":"9301:1332:39","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6386,"name":"_borrowedAmountToFlashLoan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6379,"src":"9315:26:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6387,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9345:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9315:31:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6392,"nodeType":"IfStatement","src":"9311:65:39","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6389,"name":"ZeroFlashLoanAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5583,"src":"9355:19:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9355:21:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6391,"nodeType":"RevertStatement","src":"9348:28:39"}},{"condition":{"commonType":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"id":6395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6393,"name":"_collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6372,"src":"9390:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":6394,"name":"_borrowedMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6377,"src":"9411:15:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"src":"9390:36:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6399,"nodeType":"IfStatement","src":"9386:67:39","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6396,"name":"IdenticalMarkets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5591,"src":"9435:16:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9435:18:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6398,"nodeType":"RevertStatement","src":"9428:25:39"}},{"expression":{"arguments":[{"id":6401,"name":"_collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6372,"src":"9485:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}],"id":6400,"name":"_checkMarketSupported","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7827,"src":"9463:21:39","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IVToken_$5277_$returns$__$","typeString":"function (contract IVToken) view"}},"id":6402,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9463:40:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6403,"nodeType":"ExpressionStatement","src":"9463:40:39"},{"expression":{"arguments":[{"id":6405,"name":"_borrowedMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6377,"src":"9535:15:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}],"id":6404,"name":"_checkMarketSupported","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7827,"src":"9513:21:39","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IVToken_$5277_$returns$__$","typeString":"function (contract IVToken) view"}},"id":6406,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9513:38:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6407,"nodeType":"ExpressionStatement","src":"9513:38:39"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":6408,"name":"_checkUserDelegated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7764,"src":"9562:19:39","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":6409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9562:21:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6410,"nodeType":"ExpressionStatement","src":"9562:21:39"},{"expression":{"id":6414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6411,"name":"operationInitiator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5807,"src":"9594:18:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":6412,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9615:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9619:6:39","memberName":"sender","nodeType":"MemberAccess","src":"9615:10:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9594:31:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6415,"nodeType":"ExpressionStatement","src":"9594:31:39"},{"expression":{"id":6418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6416,"name":"collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5811,"src":"9635:16:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6417,"name":"_collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6372,"src":"9654:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"src":"9635:36:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":6419,"nodeType":"ExpressionStatement","src":"9635:36:39"},{"expression":{"id":6422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6420,"name":"collateralAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5814,"src":"9681:16:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6421,"name":"_collateralAmountToRedeemForSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6374,"src":"9700:32:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9681:51:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6423,"nodeType":"ExpressionStatement","src":"9681:51:39"},{"expression":{"id":6426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6424,"name":"minAmountOutAfterSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5820,"src":"9742:21:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6425,"name":"_minAmountOutAfterSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6381,"src":"9766:22:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9742:46:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6427,"nodeType":"ExpressionStatement","src":"9742:46:39"},{"expression":{"id":6431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6428,"name":"operationType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5804,"src":"9798:13:39","typeDescriptions":{"typeIdentifier":"t_enum$_OperationType_$5675","typeString":"enum ILeverageStrategiesManager.OperationType"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":6429,"name":"OperationType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5675,"src":"9814:13:39","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_OperationType_$5675_$","typeString":"type(enum ILeverageStrategiesManager.OperationType)"}},"id":6430,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9828:15:39","memberName":"EXIT_COLLATERAL","nodeType":"MemberAccess","referencedDeclaration":5673,"src":"9814:29:39","typeDescriptions":{"typeIdentifier":"t_enum$_OperationType_$5675","typeString":"enum ILeverageStrategiesManager.OperationType"}},"src":"9798:45:39","typeDescriptions":{"typeIdentifier":"t_enum$_OperationType_$5675","typeString":"enum ILeverageStrategiesManager.OperationType"}},"id":6432,"nodeType":"ExpressionStatement","src":"9798:45:39"},{"assignments":[6437],"declarations":[{"constant":false,"id":6437,"mutability":"mutable","name":"borrowedMarkets","nameLocation":"9871:15:39","nodeType":"VariableDeclaration","scope":6510,"src":"9854:32:39","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr","typeString":"contract IVToken[]"},"typeName":{"baseType":{"id":6435,"nodeType":"UserDefinedTypeName","pathNode":{"id":6434,"name":"IVToken","nameLocations":["9854:7:39"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"9854:7:39"},"referencedDeclaration":5277,"src":"9854:7:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":6436,"nodeType":"ArrayTypeName","src":"9854:9:39","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_storage_ptr","typeString":"contract IVToken[]"}},"visibility":"internal"}],"id":6444,"initialValue":{"arguments":[{"hexValue":"31","id":6442,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9903:1:39","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":6441,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"9889:13:39","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IVToken[] memory)"},"typeName":{"baseType":{"id":6439,"nodeType":"UserDefinedTypeName","pathNode":{"id":6438,"name":"IVToken","nameLocations":["9893:7:39"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"9893:7:39"},"referencedDeclaration":5277,"src":"9893:7:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":6440,"nodeType":"ArrayTypeName","src":"9893:9:39","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_storage_ptr","typeString":"contract IVToken[]"}}},"id":6443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9889:16:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr","typeString":"contract IVToken[] memory"}},"nodeType":"VariableDeclarationStatement","src":"9854:51:39"},{"expression":{"id":6449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6445,"name":"borrowedMarkets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6437,"src":"9915:15:39","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr","typeString":"contract IVToken[] memory"}},"id":6447,"indexExpression":{"hexValue":"30","id":6446,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9931:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9915:18:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6448,"name":"_borrowedMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6377,"src":"9936:15:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"src":"9915:36:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":6450,"nodeType":"ExpressionStatement","src":"9915:36:39"},{"assignments":[6455],"declarations":[{"constant":false,"id":6455,"mutability":"mutable","name":"flashLoanAmounts","nameLocation":"9978:16:39","nodeType":"VariableDeclaration","scope":6510,"src":"9961:33:39","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6453,"name":"uint256","nodeType":"ElementaryTypeName","src":"9961:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6454,"nodeType":"ArrayTypeName","src":"9961:9:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":6461,"initialValue":{"arguments":[{"hexValue":"31","id":6459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10011:1:39","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":6458,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"9997:13:39","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":6456,"name":"uint256","nodeType":"ElementaryTypeName","src":"10001:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6457,"nodeType":"ArrayTypeName","src":"10001:9:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":6460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9997:16:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"9961:52:39"},{"expression":{"id":6466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6462,"name":"flashLoanAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6455,"src":"10023:16:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6464,"indexExpression":{"hexValue":"30","id":6463,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10040:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10023:19:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6465,"name":"_borrowedAmountToFlashLoan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6379,"src":"10045:26:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10023:48:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6467,"nodeType":"ExpressionStatement","src":"10023:48:39"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":6473,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10132:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10136:6:39","memberName":"sender","nodeType":"MemberAccess","src":"10132:10:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10124:8:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":6471,"name":"address","nodeType":"ElementaryTypeName","src":"10124:8:39","stateMutability":"payable","typeDescriptions":{}}},"id":6475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10124:19:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"arguments":[{"id":6480,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"10173:4:39","typeDescriptions":{"typeIdentifier":"t_contract$_LeverageStrategiesManager_$7828","typeString":"contract LeverageStrategiesManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LeverageStrategiesManager_$7828","typeString":"contract LeverageStrategiesManager"}],"id":6479,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10165:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6478,"name":"address","nodeType":"ElementaryTypeName","src":"10165:7:39","typeDescriptions":{}}},"id":6481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10165:13:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6477,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10157:8:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":6476,"name":"address","nodeType":"ElementaryTypeName","src":"10157:8:39","stateMutability":"payable","typeDescriptions":{}}},"id":6482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10157:22:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6483,"name":"borrowedMarkets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6437,"src":"10193:15:39","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr","typeString":"contract IVToken[] memory"}},{"id":6484,"name":"flashLoanAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6455,"src":"10222:16:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":6485,"name":"_swapData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6383,"src":"10252:9:39","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr","typeString":"contract IVToken[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":6468,"name":"COMPTROLLER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5792,"src":"10082:11:39","typeDescriptions":{"typeIdentifier":"t_contract$_IComptroller_$5454","typeString":"contract IComptroller"}},"id":6470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10094:16:39","memberName":"executeFlashLoan","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"10082:28:39","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_payable_$_t_address_payable_$_t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address payable,address payable,contract IVToken[] memory,uint256[] memory,bytes memory) external"}},"id":6486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10082:189:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6487,"nodeType":"ExpressionStatement","src":"10082:189:39"},{"expression":{"arguments":[{"expression":{"id":6489,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10300:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10304:6:39","memberName":"sender","nodeType":"MemberAccess","src":"10300:10:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6488,"name":"_checkAccountSafe","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7792,"src":"10282:17:39","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":6491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10282:29:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6492,"nodeType":"ExpressionStatement","src":"10282:29:39"},{"eventCall":{"arguments":[{"expression":{"id":6494,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10355:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10359:6:39","memberName":"sender","nodeType":"MemberAccess","src":"10355:10:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6496,"name":"_collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6372,"src":"10379:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},{"id":6497,"name":"_collateralAmountToRedeemForSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6374,"src":"10410:32:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6498,"name":"_borrowedMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6377,"src":"10456:15:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},{"id":6499,"name":"_borrowedAmountToFlashLoan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6379,"src":"10485:26:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6493,"name":"LeverageExited","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5657,"src":"10327:14:39","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_contract$_IVToken_$5277_$_t_uint256_$_t_contract$_IVToken_$5277_$_t_uint256_$returns$__$","typeString":"function (address,contract IVToken,uint256,contract IVToken,uint256)"}},"id":6500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10327:194:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6501,"nodeType":"EmitStatement","src":"10322:199:39"},{"expression":{"arguments":[{"id":6503,"name":"_collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6372,"src":"10557:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}],"id":6502,"name":"_transferDustToInitiator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7607,"src":"10532:24:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IVToken_$5277_$returns$__$","typeString":"function (contract IVToken)"}},"id":6504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10532:43:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6505,"nodeType":"ExpressionStatement","src":"10532:43:39"},{"expression":{"arguments":[{"id":6507,"name":"_borrowedMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6377,"src":"10610:15:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}],"id":6506,"name":"_transferDustToInitiator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7607,"src":"10585:24:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IVToken_$5277_$returns$__$","typeString":"function (contract IVToken)"}},"id":6508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10585:41:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6509,"nodeType":"ExpressionStatement","src":"10585:41:39"}]},"documentation":{"id":6369,"nodeType":"StructuredDocumentation","src":"8981:42:39","text":"@inheritdoc ILeverageStrategiesManager"},"functionSelector":"c78befbe","id":6511,"implemented":true,"kind":"function","modifiers":[],"name":"exitLeverage","nameLocation":"9037:12:39","nodeType":"FunctionDefinition","parameters":{"id":6384,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6372,"mutability":"mutable","name":"_collateralMarket","nameLocation":"9067:17:39","nodeType":"VariableDeclaration","scope":6511,"src":"9059:25:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":6371,"nodeType":"UserDefinedTypeName","pathNode":{"id":6370,"name":"IVToken","nameLocations":["9059:7:39"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"9059:7:39"},"referencedDeclaration":5277,"src":"9059:7:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"},{"constant":false,"id":6374,"mutability":"mutable","name":"_collateralAmountToRedeemForSwap","nameLocation":"9102:32:39","nodeType":"VariableDeclaration","scope":6511,"src":"9094:40:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6373,"name":"uint256","nodeType":"ElementaryTypeName","src":"9094:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6377,"mutability":"mutable","name":"_borrowedMarket","nameLocation":"9152:15:39","nodeType":"VariableDeclaration","scope":6511,"src":"9144:23:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":6376,"nodeType":"UserDefinedTypeName","pathNode":{"id":6375,"name":"IVToken","nameLocations":["9144:7:39"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"9144:7:39"},"referencedDeclaration":5277,"src":"9144:7:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"},{"constant":false,"id":6379,"mutability":"mutable","name":"_borrowedAmountToFlashLoan","nameLocation":"9185:26:39","nodeType":"VariableDeclaration","scope":6511,"src":"9177:34:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6378,"name":"uint256","nodeType":"ElementaryTypeName","src":"9177:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6381,"mutability":"mutable","name":"_minAmountOutAfterSwap","nameLocation":"9229:22:39","nodeType":"VariableDeclaration","scope":6511,"src":"9221:30:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6380,"name":"uint256","nodeType":"ElementaryTypeName","src":"9221:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6383,"mutability":"mutable","name":"_swapData","nameLocation":"9276:9:39","nodeType":"VariableDeclaration","scope":6511,"src":"9261:24:39","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6382,"name":"bytes","nodeType":"ElementaryTypeName","src":"9261:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9049:242:39"},"returnParameters":{"id":6385,"nodeType":"ParameterList","parameters":[],"src":"9301:0:39"},"scope":7828,"src":"9028:1605:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[5749],"body":{"id":6619,"nodeType":"Block","src":"10793:931:39","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6520,"name":"_collateralAmountToFlashLoan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6517,"src":"10807:28:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6521,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10839:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10807:33:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6526,"nodeType":"IfStatement","src":"10803:67:39","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6523,"name":"ZeroFlashLoanAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5583,"src":"10849:19:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6524,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10849:21:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6525,"nodeType":"RevertStatement","src":"10842:28:39"}},{"expression":{"arguments":[{"id":6528,"name":"_collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6515,"src":"10902:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}],"id":6527,"name":"_checkMarketSupported","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7827,"src":"10880:21:39","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IVToken_$5277_$returns$__$","typeString":"function (contract IVToken) view"}},"id":6529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10880:40:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6530,"nodeType":"ExpressionStatement","src":"10880:40:39"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":6531,"name":"_checkUserDelegated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7764,"src":"10930:19:39","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":6532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10930:21:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6533,"nodeType":"ExpressionStatement","src":"10930:21:39"},{"expression":{"id":6537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6534,"name":"operationInitiator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5807,"src":"10962:18:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":6535,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10983:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10987:6:39","memberName":"sender","nodeType":"MemberAccess","src":"10983:10:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10962:31:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6538,"nodeType":"ExpressionStatement","src":"10962:31:39"},{"expression":{"id":6541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6539,"name":"collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5811,"src":"11003:16:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6540,"name":"_collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6515,"src":"11022:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"src":"11003:36:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":6542,"nodeType":"ExpressionStatement","src":"11003:36:39"},{"expression":{"id":6546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6543,"name":"operationType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5804,"src":"11049:13:39","typeDescriptions":{"typeIdentifier":"t_enum$_OperationType_$5675","typeString":"enum ILeverageStrategiesManager.OperationType"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":6544,"name":"OperationType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5675,"src":"11065:13:39","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_OperationType_$5675_$","typeString":"type(enum ILeverageStrategiesManager.OperationType)"}},"id":6545,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11079:17:39","memberName":"EXIT_SINGLE_ASSET","nodeType":"MemberAccess","referencedDeclaration":5674,"src":"11065:31:39","typeDescriptions":{"typeIdentifier":"t_enum$_OperationType_$5675","typeString":"enum ILeverageStrategiesManager.OperationType"}},"src":"11049:47:39","typeDescriptions":{"typeIdentifier":"t_enum$_OperationType_$5675","typeString":"enum ILeverageStrategiesManager.OperationType"}},"id":6547,"nodeType":"ExpressionStatement","src":"11049:47:39"},{"assignments":[6552],"declarations":[{"constant":false,"id":6552,"mutability":"mutable","name":"borrowedMarkets","nameLocation":"11124:15:39","nodeType":"VariableDeclaration","scope":6619,"src":"11107:32:39","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr","typeString":"contract IVToken[]"},"typeName":{"baseType":{"id":6550,"nodeType":"UserDefinedTypeName","pathNode":{"id":6549,"name":"IVToken","nameLocations":["11107:7:39"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"11107:7:39"},"referencedDeclaration":5277,"src":"11107:7:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":6551,"nodeType":"ArrayTypeName","src":"11107:9:39","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_storage_ptr","typeString":"contract IVToken[]"}},"visibility":"internal"}],"id":6559,"initialValue":{"arguments":[{"hexValue":"31","id":6557,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11156:1:39","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":6556,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"11142:13:39","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IVToken[] memory)"},"typeName":{"baseType":{"id":6554,"nodeType":"UserDefinedTypeName","pathNode":{"id":6553,"name":"IVToken","nameLocations":["11146:7:39"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"11146:7:39"},"referencedDeclaration":5277,"src":"11146:7:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":6555,"nodeType":"ArrayTypeName","src":"11146:9:39","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_storage_ptr","typeString":"contract IVToken[]"}}},"id":6558,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11142:16:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr","typeString":"contract IVToken[] memory"}},"nodeType":"VariableDeclarationStatement","src":"11107:51:39"},{"expression":{"id":6564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6560,"name":"borrowedMarkets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6552,"src":"11168:15:39","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr","typeString":"contract IVToken[] memory"}},"id":6562,"indexExpression":{"hexValue":"30","id":6561,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11184:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11168:18:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6563,"name":"_collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6515,"src":"11189:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"src":"11168:38:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":6565,"nodeType":"ExpressionStatement","src":"11168:38:39"},{"assignments":[6570],"declarations":[{"constant":false,"id":6570,"mutability":"mutable","name":"flashLoanAmounts","nameLocation":"11233:16:39","nodeType":"VariableDeclaration","scope":6619,"src":"11216:33:39","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6568,"name":"uint256","nodeType":"ElementaryTypeName","src":"11216:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6569,"nodeType":"ArrayTypeName","src":"11216:9:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":6576,"initialValue":{"arguments":[{"hexValue":"31","id":6574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11266:1:39","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":6573,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"11252:13:39","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":6571,"name":"uint256","nodeType":"ElementaryTypeName","src":"11256:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6572,"nodeType":"ArrayTypeName","src":"11256:9:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":6575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11252:16:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"11216:52:39"},{"expression":{"id":6581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6577,"name":"flashLoanAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6570,"src":"11278:16:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6579,"indexExpression":{"hexValue":"30","id":6578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11295:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11278:19:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6580,"name":"_collateralAmountToFlashLoan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6517,"src":"11300:28:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11278:50:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6582,"nodeType":"ExpressionStatement","src":"11278:50:39"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":6588,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11389:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11393:6:39","memberName":"sender","nodeType":"MemberAccess","src":"11389:10:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6587,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11381:8:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":6586,"name":"address","nodeType":"ElementaryTypeName","src":"11381:8:39","stateMutability":"payable","typeDescriptions":{}}},"id":6590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11381:19:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"arguments":[{"id":6595,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"11430:4:39","typeDescriptions":{"typeIdentifier":"t_contract$_LeverageStrategiesManager_$7828","typeString":"contract LeverageStrategiesManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LeverageStrategiesManager_$7828","typeString":"contract LeverageStrategiesManager"}],"id":6594,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11422:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6593,"name":"address","nodeType":"ElementaryTypeName","src":"11422:7:39","typeDescriptions":{}}},"id":6596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11422:13:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6592,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11414:8:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":6591,"name":"address","nodeType":"ElementaryTypeName","src":"11414:8:39","stateMutability":"payable","typeDescriptions":{}}},"id":6597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11414:22:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":6598,"name":"borrowedMarkets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6552,"src":"11450:15:39","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr","typeString":"contract IVToken[] memory"}},{"id":6599,"name":"flashLoanAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6570,"src":"11479:16:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"hexValue":"","id":6600,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11509:2:39","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr","typeString":"contract IVToken[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":6583,"name":"COMPTROLLER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5792,"src":"11339:11:39","typeDescriptions":{"typeIdentifier":"t_contract$_IComptroller_$5454","typeString":"contract IComptroller"}},"id":6585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11351:16:39","memberName":"executeFlashLoan","nodeType":"MemberAccess","referencedDeclaration":5453,"src":"11339:28:39","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_payable_$_t_address_payable_$_t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address payable,address payable,contract IVToken[] memory,uint256[] memory,bytes memory) external"}},"id":6601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11339:182:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6602,"nodeType":"ExpressionStatement","src":"11339:182:39"},{"expression":{"arguments":[{"expression":{"id":6604,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11550:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11554:6:39","memberName":"sender","nodeType":"MemberAccess","src":"11550:10:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6603,"name":"_checkAccountSafe","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7792,"src":"11532:17:39","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":6606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11532:29:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6607,"nodeType":"ExpressionStatement","src":"11532:29:39"},{"eventCall":{"arguments":[{"expression":{"id":6609,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11603:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11607:6:39","memberName":"sender","nodeType":"MemberAccess","src":"11603:10:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6611,"name":"_collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6515,"src":"11615:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},{"id":6612,"name":"_collateralAmountToFlashLoan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6517,"src":"11634:28:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6608,"name":"SingleAssetLeverageExited","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5667,"src":"11577:25:39","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_contract$_IVToken_$5277_$_t_uint256_$returns$__$","typeString":"function (address,contract IVToken,uint256)"}},"id":6613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11577:86:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6614,"nodeType":"EmitStatement","src":"11572:91:39"},{"expression":{"arguments":[{"id":6616,"name":"_collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6515,"src":"11699:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}],"id":6615,"name":"_transferDustToInitiator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7607,"src":"11674:24:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IVToken_$5277_$returns$__$","typeString":"function (contract IVToken)"}},"id":6617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11674:43:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6618,"nodeType":"ExpressionStatement","src":"11674:43:39"}]},"documentation":{"id":6512,"nodeType":"StructuredDocumentation","src":"10639:42:39","text":"@inheritdoc ILeverageStrategiesManager"},"functionSelector":"c6cd25f6","id":6620,"implemented":true,"kind":"function","modifiers":[],"name":"exitSingleAssetLeverage","nameLocation":"10695:23:39","nodeType":"FunctionDefinition","parameters":{"id":6518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6515,"mutability":"mutable","name":"_collateralMarket","nameLocation":"10727:17:39","nodeType":"VariableDeclaration","scope":6620,"src":"10719:25:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":6514,"nodeType":"UserDefinedTypeName","pathNode":{"id":6513,"name":"IVToken","nameLocations":["10719:7:39"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"10719:7:39"},"referencedDeclaration":5277,"src":"10719:7:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"},{"constant":false,"id":6517,"mutability":"mutable","name":"_collateralAmountToFlashLoan","nameLocation":"10754:28:39","nodeType":"VariableDeclaration","scope":6620,"src":"10746:36:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6516,"name":"uint256","nodeType":"ElementaryTypeName","src":"10746:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10718:65:39"},"returnParameters":{"id":6519,"nodeType":"ParameterList","parameters":[],"src":"10793:0:39"},"scope":7828,"src":"10686:1038:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[5479],"body":{"id":6832,"nodeType":"Block","src":"13231:1790:39","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6648,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13330:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13334:6:39","memberName":"sender","nodeType":"MemberAccess","src":"13330:10:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":6652,"name":"COMPTROLLER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5792,"src":"13352:11:39","typeDescriptions":{"typeIdentifier":"t_contract$_IComptroller_$5454","typeString":"contract IComptroller"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IComptroller_$5454","typeString":"contract IComptroller"}],"id":6651,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13344:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6650,"name":"address","nodeType":"ElementaryTypeName","src":"13344:7:39","typeDescriptions":{}}},"id":6653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13344:20:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13330:34:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6659,"nodeType":"IfStatement","src":"13326:94:39","trueBody":{"id":6658,"nodeType":"Block","src":"13366:54:39","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6655,"name":"UnauthorizedExecutor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5546,"src":"13387:20:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13387:22:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6657,"nodeType":"RevertStatement","src":"13380:29:39"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6660,"name":"initiator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6633,"src":"13525:9:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":6663,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"13546:4:39","typeDescriptions":{"typeIdentifier":"t_contract$_LeverageStrategiesManager_$7828","typeString":"contract LeverageStrategiesManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LeverageStrategiesManager_$7828","typeString":"contract LeverageStrategiesManager"}],"id":6662,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13538:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6661,"name":"address","nodeType":"ElementaryTypeName","src":"13538:7:39","typeDescriptions":{}}},"id":6664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13538:13:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13525:26:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6670,"nodeType":"IfStatement","src":"13521:83:39","trueBody":{"id":6669,"nodeType":"Block","src":"13553:51:39","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6666,"name":"InitiatorMismatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5558,"src":"13574:17:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13574:19:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6668,"nodeType":"RevertStatement","src":"13567:26:39"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6671,"name":"onBehalf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6635,"src":"13706:8:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6672,"name":"operationInitiator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5807,"src":"13718:18:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13706:30:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6678,"nodeType":"IfStatement","src":"13702:86:39","trueBody":{"id":6677,"nodeType":"Block","src":"13738:50:39","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6674,"name":"OnBehalfMismatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5561,"src":"13759:16:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13759:18:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6676,"nodeType":"RevertStatement","src":"13752:25:39"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6679,"name":"vTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6625,"src":"13867:7:39","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_calldata_ptr","typeString":"contract IVToken[] calldata"}},"id":6680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13875:6:39","memberName":"length","nodeType":"MemberAccess","src":"13867:14:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"31","id":6681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13885:1:39","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13867:19:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6683,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6628,"src":"13890:7:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":6684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13898:6:39","memberName":"length","nodeType":"MemberAccess","src":"13890:14:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"31","id":6685,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13908:1:39","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13890:19:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13867:42:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6688,"name":"premiums","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6631,"src":"13913:8:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":6689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13922:6:39","memberName":"length","nodeType":"MemberAccess","src":"13913:15:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"31","id":6690,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13932:1:39","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13913:20:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13867:66:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6697,"nodeType":"IfStatement","src":"13863:136:39","trueBody":{"id":6696,"nodeType":"Block","src":"13935:64:39","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6693,"name":"FlashLoanAssetOrAmountMismatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5543,"src":"13956:30:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13956:32:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6695,"nodeType":"RevertStatement","src":"13949:39:39"}]}},{"expression":{"id":6704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6698,"name":"repayAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6646,"src":"14009:12:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"31","id":6702,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14038:1:39","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":6701,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"14024:13:39","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":6699,"name":"uint256","nodeType":"ElementaryTypeName","src":"14028:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6700,"nodeType":"ArrayTypeName","src":"14028:9:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":6703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14024:16:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"14009:31:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6705,"nodeType":"ExpressionStatement","src":"14009:31:39"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_OperationType_$5675","typeString":"enum ILeverageStrategiesManager.OperationType"},"id":6709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6706,"name":"operationType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5804,"src":"14054:13:39","typeDescriptions":{"typeIdentifier":"t_enum$_OperationType_$5675","typeString":"enum ILeverageStrategiesManager.OperationType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":6707,"name":"OperationType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5675,"src":"14071:13:39","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_OperationType_$5675_$","typeString":"type(enum ILeverageStrategiesManager.OperationType)"}},"id":6708,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14085:18:39","memberName":"ENTER_SINGLE_ASSET","nodeType":"MemberAccess","referencedDeclaration":5670,"src":"14071:32:39","typeDescriptions":{"typeIdentifier":"t_enum$_OperationType_$5675","typeString":"enum ILeverageStrategiesManager.OperationType"}},"src":"14054:49:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_OperationType_$5675","typeString":"enum ILeverageStrategiesManager.OperationType"},"id":6731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6728,"name":"operationType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5804,"src":"14228:13:39","typeDescriptions":{"typeIdentifier":"t_enum$_OperationType_$5675","typeString":"enum ILeverageStrategiesManager.OperationType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":6729,"name":"OperationType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5675,"src":"14245:13:39","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_OperationType_$5675_$","typeString":"type(enum ILeverageStrategiesManager.OperationType)"}},"id":6730,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14259:16:39","memberName":"ENTER_COLLATERAL","nodeType":"MemberAccess","referencedDeclaration":5671,"src":"14245:30:39","typeDescriptions":{"typeIdentifier":"t_enum$_OperationType_$5675","typeString":"enum ILeverageStrategiesManager.OperationType"}},"src":"14228:47:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_OperationType_$5675","typeString":"enum ILeverageStrategiesManager.OperationType"},"id":6754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6751,"name":"operationType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5804,"src":"14406:13:39","typeDescriptions":{"typeIdentifier":"t_enum$_OperationType_$5675","typeString":"enum ILeverageStrategiesManager.OperationType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":6752,"name":"OperationType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5675,"src":"14423:13:39","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_OperationType_$5675_$","typeString":"type(enum ILeverageStrategiesManager.OperationType)"}},"id":6753,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14437:12:39","memberName":"ENTER_BORROW","nodeType":"MemberAccess","referencedDeclaration":5672,"src":"14423:26:39","typeDescriptions":{"typeIdentifier":"t_enum$_OperationType_$5675","typeString":"enum ILeverageStrategiesManager.OperationType"}},"src":"14406:43:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_OperationType_$5675","typeString":"enum ILeverageStrategiesManager.OperationType"},"id":6777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6774,"name":"operationType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5804,"src":"14576:13:39","typeDescriptions":{"typeIdentifier":"t_enum$_OperationType_$5675","typeString":"enum ILeverageStrategiesManager.OperationType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":6775,"name":"OperationType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5675,"src":"14593:13:39","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_OperationType_$5675_$","typeString":"type(enum ILeverageStrategiesManager.OperationType)"}},"id":6776,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14607:15:39","memberName":"EXIT_COLLATERAL","nodeType":"MemberAccess","referencedDeclaration":5673,"src":"14593:29:39","typeDescriptions":{"typeIdentifier":"t_enum$_OperationType_$5675","typeString":"enum ILeverageStrategiesManager.OperationType"}},"src":"14576:46:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_OperationType_$5675","typeString":"enum ILeverageStrategiesManager.OperationType"},"id":6800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6797,"name":"operationType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5804,"src":"14752:13:39","typeDescriptions":{"typeIdentifier":"t_enum$_OperationType_$5675","typeString":"enum ILeverageStrategiesManager.OperationType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":6798,"name":"OperationType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5675,"src":"14769:13:39","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_OperationType_$5675_$","typeString":"type(enum ILeverageStrategiesManager.OperationType)"}},"id":6799,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14783:17:39","memberName":"EXIT_SINGLE_ASSET","nodeType":"MemberAccess","referencedDeclaration":5674,"src":"14769:31:39","typeDescriptions":{"typeIdentifier":"t_enum$_OperationType_$5675","typeString":"enum ILeverageStrategiesManager.OperationType"}},"src":"14752:48:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6822,"nodeType":"Block","src":"14920:57:39","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6819,"name":"InvalidExecuteOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5549,"src":"14941:23:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14941:25:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6821,"nodeType":"RevertStatement","src":"14934:32:39"}]},"id":6823,"nodeType":"IfStatement","src":"14748:229:39","trueBody":{"id":6818,"nodeType":"Block","src":"14802:112:39","statements":[{"expression":{"id":6816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6801,"name":"repayAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6646,"src":"14816:12:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6803,"indexExpression":{"hexValue":"30","id":6802,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14829:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14816:15:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6805,"name":"onBehalf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6635,"src":"14857:8:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":6806,"name":"vTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6625,"src":"14867:7:39","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_calldata_ptr","typeString":"contract IVToken[] calldata"}},"id":6808,"indexExpression":{"hexValue":"30","id":6807,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14875:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14867:10:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},{"baseExpression":{"id":6809,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6628,"src":"14879:7:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":6811,"indexExpression":{"hexValue":"30","id":6810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14887:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14879:10:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":6812,"name":"premiums","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6631,"src":"14891:8:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":6814,"indexExpression":{"hexValue":"30","id":6813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14900:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14891:11:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6804,"name":"_handleExitSingleAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7436,"src":"14834:22:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IVToken_$5277_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,contract IVToken,uint256,uint256) returns (uint256)"}},"id":6815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14834:69:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14816:87:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6817,"nodeType":"ExpressionStatement","src":"14816:87:39"}]}},"id":6824,"nodeType":"IfStatement","src":"14572:405:39","trueBody":{"id":6796,"nodeType":"Block","src":"14624:118:39","statements":[{"expression":{"id":6794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6778,"name":"repayAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6646,"src":"14638:12:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6780,"indexExpression":{"hexValue":"30","id":6779,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14651:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14638:15:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6782,"name":"onBehalf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6635,"src":"14678:8:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":6783,"name":"vTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6625,"src":"14688:7:39","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_calldata_ptr","typeString":"contract IVToken[] calldata"}},"id":6785,"indexExpression":{"hexValue":"30","id":6784,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14696:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14688:10:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},{"baseExpression":{"id":6786,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6628,"src":"14700:7:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":6788,"indexExpression":{"hexValue":"30","id":6787,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14708:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14700:10:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":6789,"name":"premiums","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6631,"src":"14712:8:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":6791,"indexExpression":{"hexValue":"30","id":6790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14721:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14712:11:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6792,"name":"param","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6637,"src":"14725:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":6781,"name":"_handleExitCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7275,"src":"14656:21:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IVToken_$5277_$_t_uint256_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_uint256_$","typeString":"function (address,contract IVToken,uint256,uint256,bytes calldata) returns (uint256)"}},"id":6793,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14656:75:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14638:93:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6795,"nodeType":"ExpressionStatement","src":"14638:93:39"}]}},"id":6825,"nodeType":"IfStatement","src":"14402:575:39","trueBody":{"id":6773,"nodeType":"Block","src":"14451:115:39","statements":[{"expression":{"id":6771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6755,"name":"repayAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6646,"src":"14465:12:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6757,"indexExpression":{"hexValue":"30","id":6756,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14478:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14465:15:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6759,"name":"onBehalf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6635,"src":"14502:8:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":6760,"name":"vTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6625,"src":"14512:7:39","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_calldata_ptr","typeString":"contract IVToken[] calldata"}},"id":6762,"indexExpression":{"hexValue":"30","id":6761,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14520:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14512:10:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},{"baseExpression":{"id":6763,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6628,"src":"14524:7:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":6765,"indexExpression":{"hexValue":"30","id":6764,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14532:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14524:10:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":6766,"name":"premiums","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6631,"src":"14536:8:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":6768,"indexExpression":{"hexValue":"30","id":6767,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14545:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14536:11:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6769,"name":"param","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6637,"src":"14549:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":6758,"name":"_handleEnterBorrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"14483:18:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IVToken_$5277_$_t_uint256_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_uint256_$","typeString":"function (address,contract IVToken,uint256,uint256,bytes calldata) returns (uint256)"}},"id":6770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14483:72:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14465:90:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6772,"nodeType":"ExpressionStatement","src":"14465:90:39"}]}},"id":6826,"nodeType":"IfStatement","src":"14224:753:39","trueBody":{"id":6750,"nodeType":"Block","src":"14277:119:39","statements":[{"expression":{"id":6748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6732,"name":"repayAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6646,"src":"14291:12:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6734,"indexExpression":{"hexValue":"30","id":6733,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14304:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14291:15:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6736,"name":"onBehalf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6635,"src":"14332:8:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":6737,"name":"vTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6625,"src":"14342:7:39","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_calldata_ptr","typeString":"contract IVToken[] calldata"}},"id":6739,"indexExpression":{"hexValue":"30","id":6738,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14350:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14342:10:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},{"baseExpression":{"id":6740,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6628,"src":"14354:7:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":6742,"indexExpression":{"hexValue":"30","id":6741,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14362:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14354:10:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":6743,"name":"premiums","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6631,"src":"14366:8:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":6745,"indexExpression":{"hexValue":"30","id":6744,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14375:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14366:11:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6746,"name":"param","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6637,"src":"14379:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":6735,"name":"_handleEnterCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6997,"src":"14309:22:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IVToken_$5277_$_t_uint256_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_uint256_$","typeString":"function (address,contract IVToken,uint256,uint256,bytes calldata) returns (uint256)"}},"id":6747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14309:76:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14291:94:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6749,"nodeType":"ExpressionStatement","src":"14291:94:39"}]}},"id":6827,"nodeType":"IfStatement","src":"14050:927:39","trueBody":{"id":6727,"nodeType":"Block","src":"14105:113:39","statements":[{"expression":{"id":6725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6710,"name":"repayAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6646,"src":"14119:12:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6712,"indexExpression":{"hexValue":"30","id":6711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14132:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14119:15:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6714,"name":"onBehalf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6635,"src":"14161:8:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":6715,"name":"vTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6625,"src":"14171:7:39","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_calldata_ptr","typeString":"contract IVToken[] calldata"}},"id":6717,"indexExpression":{"hexValue":"30","id":6716,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14179:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14171:10:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},{"baseExpression":{"id":6718,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6628,"src":"14183:7:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":6720,"indexExpression":{"hexValue":"30","id":6719,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14191:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14183:10:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":6721,"name":"premiums","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6631,"src":"14195:8:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":6723,"indexExpression":{"hexValue":"30","id":6722,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14204:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14195:11:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6713,"name":"_handleEnterSingleAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6900,"src":"14137:23:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IVToken_$5277_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,contract IVToken,uint256,uint256) returns (uint256)"}},"id":6724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14137:70:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14119:88:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6726,"nodeType":"ExpressionStatement","src":"14119:88:39"}]}},{"expression":{"components":[{"hexValue":"74727565","id":6828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14995:4:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":6829,"name":"repayAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6646,"src":"15001:12:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"id":6830,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14994:20:39","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(bool,uint256[] memory)"}},"functionReturnParameters":6647,"id":6831,"nodeType":"Return","src":"14987:27:39"}]},"documentation":{"id":6621,"nodeType":"StructuredDocumentation","src":"11730:1187:39","text":" @notice Flash loan callback entrypoint called by Comptroller\n @dev Protected by nonReentrant modifier to prevent reentrancy attacks during flash loan execution\n @param vTokens Array with the borrowed vToken market (single element)\n @param amounts Array with the borrowed underlying amount (single element)\n @param premiums Array with the flash loan fee amount (single element)\n @param initiator The address that initiated the flash loan (must be this contract)\n @param onBehalf The user for whom debt will be opened\n @param param Encoded auxiliary data for the operation (e.g., swap multicall)\n @return success Whether the execution succeeded\n @return repayAmounts Amounts to approve for flash loan repayment\n @custom:error InitiatorMismatch When initiator is not this contract\n @custom:error OnBehalfMismatch When onBehalf is not the operation initiator\n @custom:error UnauthorizedExecutor When caller is not the Comptroller\n @custom:error FlashLoanAssetOrAmountMismatch When array lengths mismatch or > 1 element\n @custom:error InvalidExecuteOperation When operation type is unknown"},"functionSelector":"fc08f9f6","id":6833,"implemented":true,"kind":"function","modifiers":[{"id":6641,"kind":"modifierInvocation","modifierName":{"id":6640,"name":"nonReentrant","nameLocations":["13164:12:39"],"nodeType":"IdentifierPath","referencedDeclaration":499,"src":"13164:12:39"},"nodeType":"ModifierInvocation","src":"13164:12:39"}],"name":"executeOperation","nameLocation":"12931:16:39","nodeType":"FunctionDefinition","overrides":{"id":6639,"nodeType":"OverrideSpecifier","overrides":[],"src":"13155:8:39"},"parameters":{"id":6638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6625,"mutability":"mutable","name":"vTokens","nameLocation":"12976:7:39","nodeType":"VariableDeclaration","scope":6833,"src":"12957:26:39","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_calldata_ptr","typeString":"contract IVToken[]"},"typeName":{"baseType":{"id":6623,"nodeType":"UserDefinedTypeName","pathNode":{"id":6622,"name":"IVToken","nameLocations":["12957:7:39"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"12957:7:39"},"referencedDeclaration":5277,"src":"12957:7:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":6624,"nodeType":"ArrayTypeName","src":"12957:9:39","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IVToken_$5277_$dyn_storage_ptr","typeString":"contract IVToken[]"}},"visibility":"internal"},{"constant":false,"id":6628,"mutability":"mutable","name":"amounts","nameLocation":"13012:7:39","nodeType":"VariableDeclaration","scope":6833,"src":"12993:26:39","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6626,"name":"uint256","nodeType":"ElementaryTypeName","src":"12993:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6627,"nodeType":"ArrayTypeName","src":"12993:9:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":6631,"mutability":"mutable","name":"premiums","nameLocation":"13048:8:39","nodeType":"VariableDeclaration","scope":6833,"src":"13029:27:39","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6629,"name":"uint256","nodeType":"ElementaryTypeName","src":"13029:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6630,"nodeType":"ArrayTypeName","src":"13029:9:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":6633,"mutability":"mutable","name":"initiator","nameLocation":"13074:9:39","nodeType":"VariableDeclaration","scope":6833,"src":"13066:17:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6632,"name":"address","nodeType":"ElementaryTypeName","src":"13066:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6635,"mutability":"mutable","name":"onBehalf","nameLocation":"13101:8:39","nodeType":"VariableDeclaration","scope":6833,"src":"13093:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6634,"name":"address","nodeType":"ElementaryTypeName","src":"13093:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6637,"mutability":"mutable","name":"param","nameLocation":"13134:5:39","nodeType":"VariableDeclaration","scope":6833,"src":"13119:20:39","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6636,"name":"bytes","nodeType":"ElementaryTypeName","src":"13119:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"12947:198:39"},"returnParameters":{"id":6647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6643,"mutability":"mutable","name":"success","nameLocation":"13191:7:39","nodeType":"VariableDeclaration","scope":6833,"src":"13186:12:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6642,"name":"bool","nodeType":"ElementaryTypeName","src":"13186:4:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6646,"mutability":"mutable","name":"repayAmounts","nameLocation":"13217:12:39","nodeType":"VariableDeclaration","scope":6833,"src":"13200:29:39","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6644,"name":"uint256","nodeType":"ElementaryTypeName","src":"13200:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6645,"nodeType":"ArrayTypeName","src":"13200:9:39","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"13185:45:39"},"scope":7828,"src":"12922:2099:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":6899,"nodeType":"Block","src":"16421:551:39","statements":[{"assignments":[6850],"declarations":[{"constant":false,"id":6850,"mutability":"mutable","name":"collateralAsset","nameLocation":"16449:15:39","nodeType":"VariableDeclaration","scope":6899,"src":"16431:33:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"},"typeName":{"id":6849,"nodeType":"UserDefinedTypeName","pathNode":{"id":6848,"name":"IERC20Upgradeable","nameLocations":["16431:17:39"],"nodeType":"IdentifierPath","referencedDeclaration":617,"src":"16431:17:39"},"referencedDeclaration":617,"src":"16431:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"}],"id":6856,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":6852,"name":"market","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6839,"src":"16485:6:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":6853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16492:10:39","memberName":"underlying","nodeType":"MemberAccess","referencedDeclaration":5276,"src":"16485:17:39","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":6854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16485:19:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6851,"name":"IERC20Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"16467:17:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Upgradeable_$617_$","typeString":"type(contract IERC20Upgradeable)"}},"id":6855,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16467:38:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"nodeType":"VariableDeclarationStatement","src":"16431:74:39"},{"assignments":[6858],"declarations":[{"constant":false,"id":6858,"mutability":"mutable","name":"totalCollateralAmountToMint","nameLocation":"16524:27:39","nodeType":"VariableDeclaration","scope":6899,"src":"16516:35:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6857,"name":"uint256","nodeType":"ElementaryTypeName","src":"16516:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6862,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6859,"name":"flashloanedCollateralAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6841,"src":"16554:27:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":6860,"name":"collateralAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5814,"src":"16584:16:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16554:46:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16516:84:39"},{"expression":{"arguments":[{"arguments":[{"id":6868,"name":"market","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6839,"src":"16647:6:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}],"id":6867,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16639:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6866,"name":"address","nodeType":"ElementaryTypeName","src":"16639:7:39","typeDescriptions":{}}},"id":6869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16639:15:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6870,"name":"totalCollateralAmountToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6858,"src":"16656:27:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6863,"name":"collateralAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6850,"src":"16610:15:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"id":6865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16626:12:39","memberName":"forceApprove","nodeType":"MemberAccess","referencedDeclaration":886,"src":"16610:28:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$617_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20Upgradeable_$617_$","typeString":"function (contract IERC20Upgradeable,address,uint256)"}},"id":6871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16610:74:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6872,"nodeType":"ExpressionStatement","src":"16610:74:39"},{"assignments":[6874],"declarations":[{"constant":false,"id":6874,"mutability":"mutable","name":"err","nameLocation":"16703:3:39","nodeType":"VariableDeclaration","scope":6899,"src":"16695:11:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6873,"name":"uint256","nodeType":"ElementaryTypeName","src":"16695:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6880,"initialValue":{"arguments":[{"id":6877,"name":"onBehalf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6836,"src":"16727:8:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6878,"name":"totalCollateralAmountToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6858,"src":"16737:27:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6875,"name":"market","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6839,"src":"16709:6:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":6876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16716:10:39","memberName":"mintBehalf","nodeType":"MemberAccess","referencedDeclaration":5231,"src":"16709:17:39","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) external returns (uint256)"}},"id":6879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16709:56:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16695:70:39"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6881,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6874,"src":"16779:3:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6882,"name":"SUCCESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5784,"src":"16786:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16779:14:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6889,"nodeType":"IfStatement","src":"16775:73:39","trueBody":{"id":6888,"nodeType":"Block","src":"16795:53:39","statements":[{"errorCall":{"arguments":[{"id":6885,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6874,"src":"16833:3:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6884,"name":"MintBehalfFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5517,"src":"16816:16:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":6886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16816:21:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6887,"nodeType":"RevertStatement","src":"16809:28:39"}]}},{"expression":{"id":6897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6890,"name":"flashLoanRepayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6846,"src":"16858:20:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6892,"name":"onBehalf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6836,"src":"16909:8:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6893,"name":"market","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6839,"src":"16919:6:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},{"id":6894,"name":"collateralAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6850,"src":"16927:15:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},{"id":6895,"name":"collateralAmountFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6843,"src":"16944:20:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6891,"name":"_borrowAndRepayFlashLoanFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7685,"src":"16881:27:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IVToken_$5277_$_t_contract$_IERC20Upgradeable_$617_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,contract IVToken,contract IERC20Upgradeable,uint256) returns (uint256)"}},"id":6896,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16881:84:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16858:107:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6898,"nodeType":"ExpressionStatement","src":"16858:107:39"}]},"documentation":{"id":6834,"nodeType":"StructuredDocumentation","src":"15027:1169:39","text":" @notice Executes the enter leveraged position with single collateral operation during flash loan callback\n @dev This function performs the following steps:\n      1. Combines flash loaned collateral with user's seed collateral\n      2. Supplies all collateral to the Venus market on behalf of the user\n      3. Borrows the repayment amount (fees) on behalf of the user\n      4. Approves the collateral asset for repayment to the flash loan\n @param onBehalf Address on whose behalf the operation is performed\n @param market The vToken market for the collateral asset\n @param flashloanedCollateralAmount The amount of collateral assets received from flash loan\n @param collateralAmountFees The fees to be paid on the flash loaned collateral amount\n @return flashLoanRepayAmount The total amount of collateral assets to repay (fees only)\n @custom:error MintBehalfFailed if mint behalf operation fails\n @custom:error BorrowBehalfFailed if borrow behalf operation fails\n @custom:error InsufficientFundsToRepayFlashloan if insufficient funds are available to repay the flash loan"},"id":6900,"implemented":true,"kind":"function","modifiers":[],"name":"_handleEnterSingleAsset","nameLocation":"16210:23:39","nodeType":"FunctionDefinition","parameters":{"id":6844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6836,"mutability":"mutable","name":"onBehalf","nameLocation":"16251:8:39","nodeType":"VariableDeclaration","scope":6900,"src":"16243:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6835,"name":"address","nodeType":"ElementaryTypeName","src":"16243:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6839,"mutability":"mutable","name":"market","nameLocation":"16277:6:39","nodeType":"VariableDeclaration","scope":6900,"src":"16269:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":6838,"nodeType":"UserDefinedTypeName","pathNode":{"id":6837,"name":"IVToken","nameLocations":["16269:7:39"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"16269:7:39"},"referencedDeclaration":5277,"src":"16269:7:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"},{"constant":false,"id":6841,"mutability":"mutable","name":"flashloanedCollateralAmount","nameLocation":"16301:27:39","nodeType":"VariableDeclaration","scope":6900,"src":"16293:35:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6840,"name":"uint256","nodeType":"ElementaryTypeName","src":"16293:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6843,"mutability":"mutable","name":"collateralAmountFees","nameLocation":"16346:20:39","nodeType":"VariableDeclaration","scope":6900,"src":"16338:28:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6842,"name":"uint256","nodeType":"ElementaryTypeName","src":"16338:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16233:139:39"},"returnParameters":{"id":6847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6846,"mutability":"mutable","name":"flashLoanRepayAmount","nameLocation":"16399:20:39","nodeType":"VariableDeclaration","scope":6900,"src":"16391:28:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6845,"name":"uint256","nodeType":"ElementaryTypeName","src":"16391:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16390:30:39"},"scope":7828,"src":"16201:771:39","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6996,"nodeType":"Block","src":"18531:1084:39","statements":[{"assignments":[6919],"declarations":[{"constant":false,"id":6919,"mutability":"mutable","name":"borrowedAsset","nameLocation":"18559:13:39","nodeType":"VariableDeclaration","scope":6996,"src":"18541:31:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"},"typeName":{"id":6918,"nodeType":"UserDefinedTypeName","pathNode":{"id":6917,"name":"IERC20Upgradeable","nameLocations":["18541:17:39"],"nodeType":"IdentifierPath","referencedDeclaration":617,"src":"18541:17:39"},"referencedDeclaration":617,"src":"18541:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"}],"id":6925,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":6921,"name":"borrowMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6906,"src":"18593:12:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":6922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18606:10:39","memberName":"underlying","nodeType":"MemberAccess","referencedDeclaration":5276,"src":"18593:23:39","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":6923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18593:25:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6920,"name":"IERC20Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"18575:17:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Upgradeable_$617_$","typeString":"type(contract IERC20Upgradeable)"}},"id":6924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18575:44:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"nodeType":"VariableDeclarationStatement","src":"18541:78:39"},{"assignments":[6928],"declarations":[{"constant":false,"id":6928,"mutability":"mutable","name":"_collateralMarket","nameLocation":"18725:17:39","nodeType":"VariableDeclaration","scope":6996,"src":"18717:25:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":6927,"nodeType":"UserDefinedTypeName","pathNode":{"id":6926,"name":"IVToken","nameLocations":["18717:7:39"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"18717:7:39"},"referencedDeclaration":5277,"src":"18717:7:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"}],"id":6930,"initialValue":{"id":6929,"name":"collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5811,"src":"18745:16:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"nodeType":"VariableDeclarationStatement","src":"18717:44:39"},{"assignments":[6932],"declarations":[{"constant":false,"id":6932,"mutability":"mutable","name":"_minAmountOutAfterSwap","nameLocation":"18779:22:39","nodeType":"VariableDeclaration","scope":6996,"src":"18771:30:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6931,"name":"uint256","nodeType":"ElementaryTypeName","src":"18771:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6934,"initialValue":{"id":6933,"name":"minAmountOutAfterSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5820,"src":"18804:21:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18771:54:39"},{"assignments":[6937],"declarations":[{"constant":false,"id":6937,"mutability":"mutable","name":"collateralAsset","nameLocation":"18854:15:39","nodeType":"VariableDeclaration","scope":6996,"src":"18836:33:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"},"typeName":{"id":6936,"nodeType":"UserDefinedTypeName","pathNode":{"id":6935,"name":"IERC20Upgradeable","nameLocations":["18836:17:39"],"nodeType":"IdentifierPath","referencedDeclaration":617,"src":"18836:17:39"},"referencedDeclaration":617,"src":"18836:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"}],"id":6943,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":6939,"name":"_collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6928,"src":"18890:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":6940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18908:10:39","memberName":"underlying","nodeType":"MemberAccess","referencedDeclaration":5276,"src":"18890:28:39","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":6941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18890:30:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6938,"name":"IERC20Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"18872:17:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Upgradeable_$617_$","typeString":"type(contract IERC20Upgradeable)"}},"id":6942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18872:49:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"nodeType":"VariableDeclarationStatement","src":"18836:85:39"},{"assignments":[6945],"declarations":[{"constant":false,"id":6945,"mutability":"mutable","name":"swappedCollateralAmountOut","nameLocation":"18939:26:39","nodeType":"VariableDeclaration","scope":6996,"src":"18931:34:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6944,"name":"uint256","nodeType":"ElementaryTypeName","src":"18931:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6953,"initialValue":{"arguments":[{"id":6947,"name":"borrowedAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6919,"src":"18994:13:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},{"id":6948,"name":"borrowedAssetAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6908,"src":"19021:19:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6949,"name":"collateralAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6937,"src":"19054:15:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},{"id":6950,"name":"_minAmountOutAfterSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6932,"src":"19083:22:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6951,"name":"swapCallData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6912,"src":"19119:12:39","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":6946,"name":"_performSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7518,"src":"18968:12:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$617_$_t_uint256_$_t_contract$_IERC20Upgradeable_$617_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_uint256_$","typeString":"function (contract IERC20Upgradeable,uint256,contract IERC20Upgradeable,uint256,bytes calldata) returns (uint256)"}},"id":6952,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18968:173:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18931:210:39"},{"assignments":[6955],"declarations":[{"constant":false,"id":6955,"mutability":"mutable","name":"collateralAmountToMint","nameLocation":"19160:22:39","nodeType":"VariableDeclaration","scope":6996,"src":"19152:30:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6954,"name":"uint256","nodeType":"ElementaryTypeName","src":"19152:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6959,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6956,"name":"swappedCollateralAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6945,"src":"19185:26:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":6957,"name":"collateralAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5814,"src":"19214:16:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19185:45:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19152:78:39"},{"expression":{"arguments":[{"arguments":[{"id":6965,"name":"_collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6928,"src":"19277:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}],"id":6964,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19269:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6963,"name":"address","nodeType":"ElementaryTypeName","src":"19269:7:39","typeDescriptions":{}}},"id":6966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19269:26:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6967,"name":"collateralAmountToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6955,"src":"19297:22:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6960,"name":"collateralAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6937,"src":"19240:15:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"id":6962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19256:12:39","memberName":"forceApprove","nodeType":"MemberAccess","referencedDeclaration":886,"src":"19240:28:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$617_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20Upgradeable_$617_$","typeString":"function (contract IERC20Upgradeable,address,uint256)"}},"id":6968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19240:80:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6969,"nodeType":"ExpressionStatement","src":"19240:80:39"},{"assignments":[6971],"declarations":[{"constant":false,"id":6971,"mutability":"mutable","name":"err","nameLocation":"19339:3:39","nodeType":"VariableDeclaration","scope":6996,"src":"19331:11:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6970,"name":"uint256","nodeType":"ElementaryTypeName","src":"19331:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6977,"initialValue":{"arguments":[{"id":6974,"name":"onBehalf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6903,"src":"19374:8:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6975,"name":"collateralAmountToMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6955,"src":"19384:22:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6972,"name":"_collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6928,"src":"19345:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":6973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19363:10:39","memberName":"mintBehalf","nodeType":"MemberAccess","referencedDeclaration":5231,"src":"19345:28:39","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) external returns (uint256)"}},"id":6976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19345:62:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19331:76:39"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6978,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6971,"src":"19421:3:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6979,"name":"SUCCESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5784,"src":"19428:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19421:14:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6986,"nodeType":"IfStatement","src":"19417:73:39","trueBody":{"id":6985,"nodeType":"Block","src":"19437:53:39","statements":[{"errorCall":{"arguments":[{"id":6982,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6971,"src":"19475:3:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6981,"name":"MintBehalfFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5517,"src":"19458:16:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":6983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19458:21:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6984,"nodeType":"RevertStatement","src":"19451:28:39"}]}},{"expression":{"id":6994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6987,"name":"flashLoanRepayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6915,"src":"19500:20:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6989,"name":"onBehalf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6903,"src":"19551:8:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6990,"name":"borrowMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6906,"src":"19561:12:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},{"id":6991,"name":"borrowedAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6919,"src":"19575:13:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},{"id":6992,"name":"borrowedAssetFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6910,"src":"19590:17:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6988,"name":"_borrowAndRepayFlashLoanFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7685,"src":"19523:27:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IVToken_$5277_$_t_contract$_IERC20Upgradeable_$617_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,contract IVToken,contract IERC20Upgradeable,uint256) returns (uint256)"}},"id":6993,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19523:85:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19500:108:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6995,"nodeType":"ExpressionStatement","src":"19500:108:39"}]},"documentation":{"id":6901,"nodeType":"StructuredDocumentation","src":"16978:1297:39","text":" @notice Executes the enter leveraged position operation during flash loan callback\n @dev This function performs the following steps:\n      1. Swaps flash loaned borrowed assets for collateral assets\n      2. Supplies all collateral received from swap plus seed to the Venus market on behalf of the user\n      3. Borrows the repayment amount on behalf of the user\n      4. Approves the borrowed asset for repayment to the flash loan\n @param onBehalf Address on whose behalf the operation is performed\n @param borrowMarket The vToken market from which assets were borrowed\n @param borrowedAssetAmount The amount of borrowed assets received from flash loan\n @param borrowedAssetFees The fees to be paid on the borrowed asset amount\n @param swapCallData The encoded swap instructions for converting borrowed to collateral assets\n @return flashLoanRepayAmount The total amount of borrowed assets to repay (fees only)\n @custom:error MintBehalfFailed if mint behalf operation fails\n @custom:error BorrowBehalfFailed if borrow behalf operation fails\n @custom:error TokenSwapCallFailed if token swap execution fails\n @custom:error SlippageExceeded if collateral balance after swap is below minimum"},"id":6997,"implemented":true,"kind":"function","modifiers":[],"name":"_handleEnterCollateral","nameLocation":"18289:22:39","nodeType":"FunctionDefinition","parameters":{"id":6913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6903,"mutability":"mutable","name":"onBehalf","nameLocation":"18329:8:39","nodeType":"VariableDeclaration","scope":6997,"src":"18321:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6902,"name":"address","nodeType":"ElementaryTypeName","src":"18321:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6906,"mutability":"mutable","name":"borrowMarket","nameLocation":"18355:12:39","nodeType":"VariableDeclaration","scope":6997,"src":"18347:20:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":6905,"nodeType":"UserDefinedTypeName","pathNode":{"id":6904,"name":"IVToken","nameLocations":["18347:7:39"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"18347:7:39"},"referencedDeclaration":5277,"src":"18347:7:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"},{"constant":false,"id":6908,"mutability":"mutable","name":"borrowedAssetAmount","nameLocation":"18385:19:39","nodeType":"VariableDeclaration","scope":6997,"src":"18377:27:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6907,"name":"uint256","nodeType":"ElementaryTypeName","src":"18377:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6910,"mutability":"mutable","name":"borrowedAssetFees","nameLocation":"18422:17:39","nodeType":"VariableDeclaration","scope":6997,"src":"18414:25:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6909,"name":"uint256","nodeType":"ElementaryTypeName","src":"18414:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6912,"mutability":"mutable","name":"swapCallData","nameLocation":"18464:12:39","nodeType":"VariableDeclaration","scope":6997,"src":"18449:27:39","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6911,"name":"bytes","nodeType":"ElementaryTypeName","src":"18449:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18311:171:39"},"returnParameters":{"id":6916,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6915,"mutability":"mutable","name":"flashLoanRepayAmount","nameLocation":"18509:20:39","nodeType":"VariableDeclaration","scope":6997,"src":"18501:28:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6914,"name":"uint256","nodeType":"ElementaryTypeName","src":"18501:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18500:30:39"},"scope":7828,"src":"18280:1335:39","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7093,"nodeType":"Block","src":"21198:1098:39","statements":[{"assignments":[7016],"declarations":[{"constant":false,"id":7016,"mutability":"mutable","name":"borrowedAsset","nameLocation":"21226:13:39","nodeType":"VariableDeclaration","scope":7093,"src":"21208:31:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"},"typeName":{"id":7015,"nodeType":"UserDefinedTypeName","pathNode":{"id":7014,"name":"IERC20Upgradeable","nameLocations":["21208:17:39"],"nodeType":"IdentifierPath","referencedDeclaration":617,"src":"21208:17:39"},"referencedDeclaration":617,"src":"21208:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"}],"id":7022,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7018,"name":"borrowMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7003,"src":"21260:12:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":7019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21273:10:39","memberName":"underlying","nodeType":"MemberAccess","referencedDeclaration":5276,"src":"21260:23:39","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":7020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21260:25:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7017,"name":"IERC20Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"21242:17:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Upgradeable_$617_$","typeString":"type(contract IERC20Upgradeable)"}},"id":7021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21242:44:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"nodeType":"VariableDeclarationStatement","src":"21208:78:39"},{"assignments":[7025],"declarations":[{"constant":false,"id":7025,"mutability":"mutable","name":"_collateralMarket","nameLocation":"21392:17:39","nodeType":"VariableDeclaration","scope":7093,"src":"21384:25:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":7024,"nodeType":"UserDefinedTypeName","pathNode":{"id":7023,"name":"IVToken","nameLocations":["21384:7:39"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"21384:7:39"},"referencedDeclaration":5277,"src":"21384:7:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"}],"id":7027,"initialValue":{"id":7026,"name":"collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5811,"src":"21412:16:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"nodeType":"VariableDeclarationStatement","src":"21384:44:39"},{"assignments":[7029],"declarations":[{"constant":false,"id":7029,"mutability":"mutable","name":"_minAmountOutAfterSwap","nameLocation":"21446:22:39","nodeType":"VariableDeclaration","scope":7093,"src":"21438:30:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7028,"name":"uint256","nodeType":"ElementaryTypeName","src":"21438:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7031,"initialValue":{"id":7030,"name":"minAmountOutAfterSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5820,"src":"21471:21:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21438:54:39"},{"assignments":[7034],"declarations":[{"constant":false,"id":7034,"mutability":"mutable","name":"collateralAsset","nameLocation":"21521:15:39","nodeType":"VariableDeclaration","scope":7093,"src":"21503:33:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"},"typeName":{"id":7033,"nodeType":"UserDefinedTypeName","pathNode":{"id":7032,"name":"IERC20Upgradeable","nameLocations":["21503:17:39"],"nodeType":"IdentifierPath","referencedDeclaration":617,"src":"21503:17:39"},"referencedDeclaration":617,"src":"21503:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"}],"id":7040,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7036,"name":"_collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7025,"src":"21557:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":7037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21575:10:39","memberName":"underlying","nodeType":"MemberAccess","referencedDeclaration":5276,"src":"21557:28:39","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":7038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21557:30:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7035,"name":"IERC20Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"21539:17:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Upgradeable_$617_$","typeString":"type(contract IERC20Upgradeable)"}},"id":7039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21539:49:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"nodeType":"VariableDeclarationStatement","src":"21503:85:39"},{"assignments":[7042],"declarations":[{"constant":false,"id":7042,"mutability":"mutable","name":"totalBorrowedAmountToSwap","nameLocation":"21607:25:39","nodeType":"VariableDeclaration","scope":7093,"src":"21599:33:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7041,"name":"uint256","nodeType":"ElementaryTypeName","src":"21599:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7046,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7043,"name":"borrowedAmountSeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5817,"src":"21635:18:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":7044,"name":"borrowedAssetAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7005,"src":"21656:19:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21635:40:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21599:76:39"},{"assignments":[7048],"declarations":[{"constant":false,"id":7048,"mutability":"mutable","name":"swappedCollateralAmountOut","nameLocation":"21694:26:39","nodeType":"VariableDeclaration","scope":7093,"src":"21686:34:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7047,"name":"uint256","nodeType":"ElementaryTypeName","src":"21686:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7056,"initialValue":{"arguments":[{"id":7050,"name":"borrowedAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7016,"src":"21749:13:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},{"id":7051,"name":"totalBorrowedAmountToSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7042,"src":"21776:25:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7052,"name":"collateralAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7034,"src":"21815:15:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},{"id":7053,"name":"_minAmountOutAfterSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7029,"src":"21844:22:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7054,"name":"swapCallData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7009,"src":"21880:12:39","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":7049,"name":"_performSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7518,"src":"21723:12:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$617_$_t_uint256_$_t_contract$_IERC20Upgradeable_$617_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_uint256_$","typeString":"function (contract IERC20Upgradeable,uint256,contract IERC20Upgradeable,uint256,bytes calldata) returns (uint256)"}},"id":7055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21723:179:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21686:216:39"},{"expression":{"arguments":[{"arguments":[{"id":7062,"name":"_collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7025,"src":"21950:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}],"id":7061,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21942:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7060,"name":"address","nodeType":"ElementaryTypeName","src":"21942:7:39","typeDescriptions":{}}},"id":7063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21942:26:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7064,"name":"swappedCollateralAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7048,"src":"21970:26:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7057,"name":"collateralAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7034,"src":"21913:15:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"id":7059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21929:12:39","memberName":"forceApprove","nodeType":"MemberAccess","referencedDeclaration":886,"src":"21913:28:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$617_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20Upgradeable_$617_$","typeString":"function (contract IERC20Upgradeable,address,uint256)"}},"id":7065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21913:84:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7066,"nodeType":"ExpressionStatement","src":"21913:84:39"},{"assignments":[7068],"declarations":[{"constant":false,"id":7068,"mutability":"mutable","name":"err","nameLocation":"22016:3:39","nodeType":"VariableDeclaration","scope":7093,"src":"22008:11:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7067,"name":"uint256","nodeType":"ElementaryTypeName","src":"22008:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7074,"initialValue":{"arguments":[{"id":7071,"name":"onBehalf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7000,"src":"22051:8:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7072,"name":"swappedCollateralAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7048,"src":"22061:26:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7069,"name":"_collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7025,"src":"22022:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":7070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22040:10:39","memberName":"mintBehalf","nodeType":"MemberAccess","referencedDeclaration":5231,"src":"22022:28:39","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) external returns (uint256)"}},"id":7073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22022:66:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22008:80:39"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7075,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7068,"src":"22102:3:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":7076,"name":"SUCCESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5784,"src":"22109:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22102:14:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7083,"nodeType":"IfStatement","src":"22098:73:39","trueBody":{"id":7082,"nodeType":"Block","src":"22118:53:39","statements":[{"errorCall":{"arguments":[{"id":7079,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7068,"src":"22156:3:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7078,"name":"MintBehalfFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5517,"src":"22139:16:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":7080,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22139:21:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7081,"nodeType":"RevertStatement","src":"22132:28:39"}]}},{"expression":{"id":7091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7084,"name":"flashLoanRepayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7012,"src":"22181:20:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7086,"name":"onBehalf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7000,"src":"22232:8:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7087,"name":"borrowMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7003,"src":"22242:12:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},{"id":7088,"name":"borrowedAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7016,"src":"22256:13:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},{"id":7089,"name":"borrowedAssetFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7007,"src":"22271:17:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7085,"name":"_borrowAndRepayFlashLoanFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7685,"src":"22204:27:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IVToken_$5277_$_t_contract$_IERC20Upgradeable_$617_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,contract IVToken,contract IERC20Upgradeable,uint256) returns (uint256)"}},"id":7090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22204:85:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22181:108:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7092,"nodeType":"ExpressionStatement","src":"22181:108:39"}]},"documentation":{"id":6998,"nodeType":"StructuredDocumentation","src":"19621:1325:39","text":" @notice Executes the enter leveraged position with borrowed assets operation during flash loan callback\n @dev This function performs the following steps:\n      1. Swaps the total borrowed assets (seed + flash loan) for collateral assets\n      2. Supplies all collateral received from swap to the Venus market on behalf of the user\n      3. Borrows the repayment amount on behalf of the user\n      4. Approves the borrowed asset for repayment to the flash loan\n @param onBehalf Address on whose behalf the operation is performed\n @param borrowMarket The vToken market from which assets were borrowed\n @param borrowedAssetAmount The amount of borrowed assets received from flash loan\n @param borrowedAssetFees The fees to be paid on the borrowed asset amount\n @param swapCallData The encoded swap instructions for converting borrowed to collateral assets\n @return flashLoanRepayAmount The total amount of borrowed assets to repay (fees only)\n @custom:error MintBehalfFailed if mint behalf operation fails\n @custom:error BorrowBehalfFailed if borrow behalf operation fails\n @custom:error TokenSwapCallFailed if token swap execution fails\n @custom:error SlippageExceeded if collateral balance after swap is below minimum"},"id":7094,"implemented":true,"kind":"function","modifiers":[],"name":"_handleEnterBorrow","nameLocation":"20960:18:39","nodeType":"FunctionDefinition","parameters":{"id":7010,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7000,"mutability":"mutable","name":"onBehalf","nameLocation":"20996:8:39","nodeType":"VariableDeclaration","scope":7094,"src":"20988:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6999,"name":"address","nodeType":"ElementaryTypeName","src":"20988:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7003,"mutability":"mutable","name":"borrowMarket","nameLocation":"21022:12:39","nodeType":"VariableDeclaration","scope":7094,"src":"21014:20:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":7002,"nodeType":"UserDefinedTypeName","pathNode":{"id":7001,"name":"IVToken","nameLocations":["21014:7:39"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"21014:7:39"},"referencedDeclaration":5277,"src":"21014:7:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"},{"constant":false,"id":7005,"mutability":"mutable","name":"borrowedAssetAmount","nameLocation":"21052:19:39","nodeType":"VariableDeclaration","scope":7094,"src":"21044:27:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7004,"name":"uint256","nodeType":"ElementaryTypeName","src":"21044:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7007,"mutability":"mutable","name":"borrowedAssetFees","nameLocation":"21089:17:39","nodeType":"VariableDeclaration","scope":7094,"src":"21081:25:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7006,"name":"uint256","nodeType":"ElementaryTypeName","src":"21081:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7009,"mutability":"mutable","name":"swapCallData","nameLocation":"21131:12:39","nodeType":"VariableDeclaration","scope":7094,"src":"21116:27:39","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7008,"name":"bytes","nodeType":"ElementaryTypeName","src":"21116:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"20978:171:39"},"returnParameters":{"id":7013,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7012,"mutability":"mutable","name":"flashLoanRepayAmount","nameLocation":"21176:20:39","nodeType":"VariableDeclaration","scope":7094,"src":"21168:28:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7011,"name":"uint256","nodeType":"ElementaryTypeName","src":"21168:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21167:30:39"},"scope":7828,"src":"20951:1345:39","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7274,"nodeType":"Block","src":"24354:2016:39","statements":[{"assignments":[7113],"declarations":[{"constant":false,"id":7113,"mutability":"mutable","name":"borrowedAsset","nameLocation":"24382:13:39","nodeType":"VariableDeclaration","scope":7274,"src":"24364:31:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"},"typeName":{"id":7112,"nodeType":"UserDefinedTypeName","pathNode":{"id":7111,"name":"IERC20Upgradeable","nameLocations":["24364:17:39"],"nodeType":"IdentifierPath","referencedDeclaration":617,"src":"24364:17:39"},"referencedDeclaration":617,"src":"24364:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"}],"id":7119,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7115,"name":"borrowMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7100,"src":"24416:12:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":7116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24429:10:39","memberName":"underlying","nodeType":"MemberAccess","referencedDeclaration":5276,"src":"24416:23:39","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":7117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24416:25:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7114,"name":"IERC20Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"24398:17:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Upgradeable_$617_$","typeString":"type(contract IERC20Upgradeable)"}},"id":7118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24398:44:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"nodeType":"VariableDeclarationStatement","src":"24364:78:39"},{"id":7163,"nodeType":"Block","src":"24453:557:39","statements":[{"assignments":[7121],"declarations":[{"constant":false,"id":7121,"mutability":"mutable","name":"borrowedTotalDebtAmount","nameLocation":"24475:23:39","nodeType":"VariableDeclaration","scope":7163,"src":"24467:31:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7120,"name":"uint256","nodeType":"ElementaryTypeName","src":"24467:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7126,"initialValue":{"arguments":[{"id":7124,"name":"onBehalf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7097,"src":"24535:8:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":7122,"name":"borrowMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7100,"src":"24501:12:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":7123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24514:20:39","memberName":"borrowBalanceCurrent","nodeType":"MemberAccess","referencedDeclaration":5204,"src":"24501:33:39","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$_t_uint256_$","typeString":"function (address) external returns (uint256)"}},"id":7125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24501:43:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"24467:77:39"},{"assignments":[7128],"declarations":[{"constant":false,"id":7128,"mutability":"mutable","name":"repayAmount","nameLocation":"24566:11:39","nodeType":"VariableDeclaration","scope":7163,"src":"24558:19:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7127,"name":"uint256","nodeType":"ElementaryTypeName","src":"24558:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7135,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7129,"name":"borrowedAssetAmountToRepayFromFlashLoan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7102,"src":"24580:39:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":7130,"name":"borrowedTotalDebtAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7121,"src":"24622:23:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24580:65:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":7133,"name":"borrowedAssetAmountToRepayFromFlashLoan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7102,"src":"24706:39:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"24580:165:39","trueExpression":{"id":7132,"name":"borrowedTotalDebtAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7121,"src":"24664:23:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"24558:187:39"},{"expression":{"arguments":[{"arguments":[{"id":7141,"name":"borrowMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7100,"src":"24795:12:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}],"id":7140,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24787:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7139,"name":"address","nodeType":"ElementaryTypeName","src":"24787:7:39","typeDescriptions":{}}},"id":7142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24787:21:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7143,"name":"repayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7128,"src":"24810:11:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7136,"name":"borrowedAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7113,"src":"24760:13:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"id":7138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24774:12:39","memberName":"forceApprove","nodeType":"MemberAccess","referencedDeclaration":886,"src":"24760:26:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$617_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20Upgradeable_$617_$","typeString":"function (contract IERC20Upgradeable,address,uint256)"}},"id":7144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24760:62:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7145,"nodeType":"ExpressionStatement","src":"24760:62:39"},{"assignments":[7147],"declarations":[{"constant":false,"id":7147,"mutability":"mutable","name":"err","nameLocation":"24844:3:39","nodeType":"VariableDeclaration","scope":7163,"src":"24836:11:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7146,"name":"uint256","nodeType":"ElementaryTypeName","src":"24836:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7153,"initialValue":{"arguments":[{"id":7150,"name":"onBehalf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7097,"src":"24881:8:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7151,"name":"repayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7128,"src":"24891:11:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7148,"name":"borrowMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7100,"src":"24850:12:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":7149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24863:17:39","memberName":"repayBorrowBehalf","nodeType":"MemberAccess","referencedDeclaration":5249,"src":"24850:30:39","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) external returns (uint256)"}},"id":7152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24850:53:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"24836:67:39"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7154,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7147,"src":"24922:3:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":7155,"name":"SUCCESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5784,"src":"24929:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24922:14:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7162,"nodeType":"IfStatement","src":"24918:82:39","trueBody":{"id":7161,"nodeType":"Block","src":"24938:62:39","statements":[{"errorCall":{"arguments":[{"id":7158,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7147,"src":"24981:3:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7157,"name":"RepayBehalfFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5527,"src":"24963:17:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":7159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24963:22:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7160,"nodeType":"RevertStatement","src":"24956:29:39"}]}}]},{"assignments":[7166],"declarations":[{"constant":false,"id":7166,"mutability":"mutable","name":"_collateralMarket","nameLocation":"25115:17:39","nodeType":"VariableDeclaration","scope":7274,"src":"25107:25:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":7165,"nodeType":"UserDefinedTypeName","pathNode":{"id":7164,"name":"IVToken","nameLocations":["25107:7:39"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"25107:7:39"},"referencedDeclaration":5277,"src":"25107:7:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"}],"id":7168,"initialValue":{"id":7167,"name":"collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5811,"src":"25135:16:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"nodeType":"VariableDeclarationStatement","src":"25107:44:39"},{"assignments":[7170],"declarations":[{"constant":false,"id":7170,"mutability":"mutable","name":"collateralAmountToRedeem","nameLocation":"25169:24:39","nodeType":"VariableDeclaration","scope":7274,"src":"25161:32:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7169,"name":"uint256","nodeType":"ElementaryTypeName","src":"25161:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7172,"initialValue":{"id":7171,"name":"collateralAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5814,"src":"25196:16:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25161:51:39"},{"id":7220,"nodeType":"Block","src":"25223:522:39","statements":[{"assignments":[7174],"declarations":[{"constant":false,"id":7174,"mutability":"mutable","name":"treasuryPercent","nameLocation":"25245:15:39","nodeType":"VariableDeclaration","scope":7220,"src":"25237:23:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7173,"name":"uint256","nodeType":"ElementaryTypeName","src":"25237:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7178,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7175,"name":"COMPTROLLER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5792,"src":"25263:11:39","typeDescriptions":{"typeIdentifier":"t_contract$_IComptroller_$5454","typeString":"contract IComptroller"}},"id":7176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25275:15:39","memberName":"treasuryPercent","nodeType":"MemberAccess","referencedDeclaration":5437,"src":"25263:27:39","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":7177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25263:29:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25237:55:39"},{"assignments":[7180],"declarations":[{"constant":false,"id":7180,"mutability":"mutable","name":"redeemAmount","nameLocation":"25314:12:39","nodeType":"VariableDeclaration","scope":7220,"src":"25306:20:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7179,"name":"uint256","nodeType":"ElementaryTypeName","src":"25306:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7202,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7181,"name":"treasuryPercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7174,"src":"25329:15:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":7182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25347:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25329:19:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":7200,"name":"collateralAmountToRedeem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7170,"src":"25521:24:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"25329:216:39","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7184,"name":"collateralAmountToRedeem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7170,"src":"25368:24:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7185,"name":"MANTISSA_ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5788,"src":"25395:12:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25368:39:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7187,"name":"MANTISSA_ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5788,"src":"25411:12:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7188,"name":"treasuryPercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7174,"src":"25426:15:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25411:30:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7190,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25410:32:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25368:74:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":7192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25445:1:39","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25368:78:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7194,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25367:80:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7195,"name":"MANTISSA_ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5788,"src":"25471:12:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7196,"name":"treasuryPercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7174,"src":"25486:15:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25471:30:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7198,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25470:32:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25367:135:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25306:239:39"},{"assignments":[7204],"declarations":[{"constant":false,"id":7204,"mutability":"mutable","name":"err","nameLocation":"25568:3:39","nodeType":"VariableDeclaration","scope":7220,"src":"25560:11:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7203,"name":"uint256","nodeType":"ElementaryTypeName","src":"25560:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7210,"initialValue":{"arguments":[{"id":7207,"name":"onBehalf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7097,"src":"25615:8:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7208,"name":"redeemAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7180,"src":"25625:12:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7205,"name":"_collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7166,"src":"25574:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":7206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25592:22:39","memberName":"redeemUnderlyingBehalf","nodeType":"MemberAccess","referencedDeclaration":5258,"src":"25574:40:39","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) external returns (uint256)"}},"id":7209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25574:64:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25560:78:39"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7211,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7204,"src":"25656:3:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":7212,"name":"SUCCESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5784,"src":"25663:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25656:14:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7219,"nodeType":"IfStatement","src":"25652:83:39","trueBody":{"id":7218,"nodeType":"Block","src":"25672:63:39","statements":[{"errorCall":{"arguments":[{"id":7215,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7204,"src":"25716:3:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7214,"name":"RedeemBehalfFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5532,"src":"25697:18:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":7216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25697:23:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7217,"nodeType":"RevertStatement","src":"25690:30:39"}]}}]},{"assignments":[7223],"declarations":[{"constant":false,"id":7223,"mutability":"mutable","name":"collateralAsset","nameLocation":"25773:15:39","nodeType":"VariableDeclaration","scope":7274,"src":"25755:33:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"},"typeName":{"id":7222,"nodeType":"UserDefinedTypeName","pathNode":{"id":7221,"name":"IERC20Upgradeable","nameLocations":["25755:17:39"],"nodeType":"IdentifierPath","referencedDeclaration":617,"src":"25755:17:39"},"referencedDeclaration":617,"src":"25755:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"}],"id":7229,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7225,"name":"_collateralMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7166,"src":"25809:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":7226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25827:10:39","memberName":"underlying","nodeType":"MemberAccess","referencedDeclaration":5276,"src":"25809:28:39","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":7227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25809:30:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7224,"name":"IERC20Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"25791:17:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Upgradeable_$617_$","typeString":"type(contract IERC20Upgradeable)"}},"id":7228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25791:49:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"nodeType":"VariableDeclarationStatement","src":"25755:85:39"},{"expression":{"arguments":[{"id":7231,"name":"collateralAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7223,"src":"25877:15:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},{"arguments":[{"arguments":[{"id":7236,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"25940:4:39","typeDescriptions":{"typeIdentifier":"t_contract$_LeverageStrategiesManager_$7828","typeString":"contract LeverageStrategiesManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LeverageStrategiesManager_$7828","typeString":"contract LeverageStrategiesManager"}],"id":7235,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25932:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7234,"name":"address","nodeType":"ElementaryTypeName","src":"25932:7:39","typeDescriptions":{}}},"id":7237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25932:13:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":7232,"name":"collateralAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7223,"src":"25906:15:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"id":7233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25922:9:39","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":574,"src":"25906:25:39","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":7238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25906:40:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7239,"name":"borrowedAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7113,"src":"25960:13:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},{"id":7240,"name":"minAmountOutAfterSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5820,"src":"25987:21:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7241,"name":"swapCallData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7106,"src":"26022:12:39","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":7230,"name":"_performSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7518,"src":"25851:12:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$617_$_t_uint256_$_t_contract$_IERC20Upgradeable_$617_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_uint256_$","typeString":"function (contract IERC20Upgradeable,uint256,contract IERC20Upgradeable,uint256,bytes calldata) returns (uint256)"}},"id":7242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25851:193:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7243,"nodeType":"ExpressionStatement","src":"25851:193:39"},{"expression":{"id":7248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7244,"name":"flashLoanRepayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7109,"src":"26055:20:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7245,"name":"borrowedAssetAmountToRepayFromFlashLoan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7102,"src":"26078:39:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":7246,"name":"borrowedAssetFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7104,"src":"26120:17:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26078:59:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26055:82:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7249,"nodeType":"ExpressionStatement","src":"26055:82:39"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":7254,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"26184:4:39","typeDescriptions":{"typeIdentifier":"t_contract$_LeverageStrategiesManager_$7828","typeString":"contract LeverageStrategiesManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LeverageStrategiesManager_$7828","typeString":"contract LeverageStrategiesManager"}],"id":7253,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26176:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7252,"name":"address","nodeType":"ElementaryTypeName","src":"26176:7:39","typeDescriptions":{}}},"id":7255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26176:13:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":7250,"name":"borrowedAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7113,"src":"26152:13:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"id":7251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26166:9:39","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":574,"src":"26152:23:39","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":7256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26152:38:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7257,"name":"flashLoanRepayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7109,"src":"26193:20:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26152:61:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7263,"nodeType":"IfStatement","src":"26148:134:39","trueBody":{"id":7262,"nodeType":"Block","src":"26215:67:39","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7259,"name":"InsufficientFundsToRepayFlashloan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5555,"src":"26236:33:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7260,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26236:35:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7261,"nodeType":"RevertStatement","src":"26229:42:39"}]}},{"expression":{"arguments":[{"arguments":[{"id":7269,"name":"borrowMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7100,"src":"26327:12:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}],"id":7268,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26319:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7267,"name":"address","nodeType":"ElementaryTypeName","src":"26319:7:39","typeDescriptions":{}}},"id":7270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26319:21:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7271,"name":"flashLoanRepayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7109,"src":"26342:20:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7264,"name":"borrowedAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7113,"src":"26292:13:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"id":7266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26306:12:39","memberName":"forceApprove","nodeType":"MemberAccess","referencedDeclaration":886,"src":"26292:26:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$617_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20Upgradeable_$617_$","typeString":"function (contract IERC20Upgradeable,address,uint256)"}},"id":7272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26292:71:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7273,"nodeType":"ExpressionStatement","src":"26292:71:39"}]},"documentation":{"id":7095,"nodeType":"StructuredDocumentation","src":"22302:1777:39","text":" @notice Executes the exit leveraged position operation during flash loan callback\n @dev This function performs the following steps:\n      1. Queries actual debt and caps repayment to min(flashLoanAmount, actualDebt)\n         to handle cases where UI flash loans slightly more than current debt\n      2. Repays user's debt (up to actual debt amount) in the borrowed market\n      3. Calculates redeem amount accounting for treasury fee (if any)\n      4. Redeems specified amount of collateral from the Venus market\n      5. Swaps actual received collateral (after treasury fee) for borrowed assets\n      6. Validates total borrowed asset balance (swap output + excess flash loan funds)\n         is sufficient to repay flash loan, then approves repayment\n @param onBehalf Address on whose behalf the operation is performed\n @param borrowMarket The vToken market from which assets were borrowed via flash loan\n @param borrowedAssetAmountToRepayFromFlashLoan The amount borrowed via flash loan for debt repayment\n @param borrowedAssetFees The fees to be paid on the borrowed asset amount\n @param swapCallData The encoded swap instructions for converting collateral to borrowed assets\n @return flashLoanRepayAmount The total amount of borrowed assets to repay\n @custom:error RepayBehalfFailed if repayment of borrowed assets fails\n @custom:error RedeemBehalfFailed if redeem operations fail\n @custom:error TokenSwapCallFailed if token swap execution fails\n @custom:error SlippageExceeded if swap output is below minimum required\n @custom:error InsufficientFundsToRepayFlashloan if insufficient funds are available to repay the flash loan"},"id":7275,"implemented":true,"kind":"function","modifiers":[],"name":"_handleExitCollateral","nameLocation":"24093:21:39","nodeType":"FunctionDefinition","parameters":{"id":7107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7097,"mutability":"mutable","name":"onBehalf","nameLocation":"24132:8:39","nodeType":"VariableDeclaration","scope":7275,"src":"24124:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7096,"name":"address","nodeType":"ElementaryTypeName","src":"24124:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7100,"mutability":"mutable","name":"borrowMarket","nameLocation":"24158:12:39","nodeType":"VariableDeclaration","scope":7275,"src":"24150:20:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":7099,"nodeType":"UserDefinedTypeName","pathNode":{"id":7098,"name":"IVToken","nameLocations":["24150:7:39"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"24150:7:39"},"referencedDeclaration":5277,"src":"24150:7:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"},{"constant":false,"id":7102,"mutability":"mutable","name":"borrowedAssetAmountToRepayFromFlashLoan","nameLocation":"24188:39:39","nodeType":"VariableDeclaration","scope":7275,"src":"24180:47:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7101,"name":"uint256","nodeType":"ElementaryTypeName","src":"24180:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7104,"mutability":"mutable","name":"borrowedAssetFees","nameLocation":"24245:17:39","nodeType":"VariableDeclaration","scope":7275,"src":"24237:25:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7103,"name":"uint256","nodeType":"ElementaryTypeName","src":"24237:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7106,"mutability":"mutable","name":"swapCallData","nameLocation":"24287:12:39","nodeType":"VariableDeclaration","scope":7275,"src":"24272:27:39","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7105,"name":"bytes","nodeType":"ElementaryTypeName","src":"24272:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"24114:191:39"},"returnParameters":{"id":7110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7109,"mutability":"mutable","name":"flashLoanRepayAmount","nameLocation":"24332:20:39","nodeType":"VariableDeclaration","scope":7275,"src":"24324:28:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7108,"name":"uint256","nodeType":"ElementaryTypeName","src":"24324:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24323:30:39"},"scope":7828,"src":"24084:2286:39","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7435,"nodeType":"Block","src":"28114:1504:39","statements":[{"assignments":[7292],"declarations":[{"constant":false,"id":7292,"mutability":"mutable","name":"collateralAsset","nameLocation":"28142:15:39","nodeType":"VariableDeclaration","scope":7435,"src":"28124:33:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"},"typeName":{"id":7291,"nodeType":"UserDefinedTypeName","pathNode":{"id":7290,"name":"IERC20Upgradeable","nameLocations":["28124:17:39"],"nodeType":"IdentifierPath","referencedDeclaration":617,"src":"28124:17:39"},"referencedDeclaration":617,"src":"28124:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"}],"id":7298,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7294,"name":"market","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7281,"src":"28178:6:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":7295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28185:10:39","memberName":"underlying","nodeType":"MemberAccess","referencedDeclaration":5276,"src":"28178:17:39","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":7296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28178:19:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7293,"name":"IERC20Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"28160:17:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Upgradeable_$617_$","typeString":"type(contract IERC20Upgradeable)"}},"id":7297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28160:38:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"nodeType":"VariableDeclarationStatement","src":"28124:74:39"},{"assignments":[7300],"declarations":[{"constant":false,"id":7300,"mutability":"mutable","name":"marketTotalDebtAmount","nameLocation":"28217:21:39","nodeType":"VariableDeclaration","scope":7435,"src":"28209:29:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7299,"name":"uint256","nodeType":"ElementaryTypeName","src":"28209:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7305,"initialValue":{"arguments":[{"id":7303,"name":"onBehalf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7278,"src":"28269:8:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":7301,"name":"market","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7281,"src":"28241:6:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":7302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28248:20:39","memberName":"borrowBalanceCurrent","nodeType":"MemberAccess","referencedDeclaration":5204,"src":"28241:27:39","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$_t_uint256_$","typeString":"function (address) external returns (uint256)"}},"id":7304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28241:37:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"28209:69:39"},{"assignments":[7307],"declarations":[{"constant":false,"id":7307,"mutability":"mutable","name":"repayAmount","nameLocation":"28296:11:39","nodeType":"VariableDeclaration","scope":7435,"src":"28288:19:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7306,"name":"uint256","nodeType":"ElementaryTypeName","src":"28288:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7314,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7308,"name":"flashloanedCollateralAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7283,"src":"28310:27:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":7309,"name":"marketTotalDebtAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7300,"src":"28340:21:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28310:51:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":7312,"name":"flashloanedCollateralAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7283,"src":"28412:27:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"28310:129:39","trueExpression":{"id":7311,"name":"marketTotalDebtAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7300,"src":"28376:21:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"28288:151:39"},{"expression":{"arguments":[{"arguments":[{"id":7320,"name":"market","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7281,"src":"28487:6:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}],"id":7319,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28479:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7318,"name":"address","nodeType":"ElementaryTypeName","src":"28479:7:39","typeDescriptions":{}}},"id":7321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28479:15:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7322,"name":"repayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7307,"src":"28496:11:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7315,"name":"collateralAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7292,"src":"28450:15:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"id":7317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28466:12:39","memberName":"forceApprove","nodeType":"MemberAccess","referencedDeclaration":886,"src":"28450:28:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$617_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20Upgradeable_$617_$","typeString":"function (contract IERC20Upgradeable,address,uint256)"}},"id":7323,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28450:58:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7324,"nodeType":"ExpressionStatement","src":"28450:58:39"},{"assignments":[7326],"declarations":[{"constant":false,"id":7326,"mutability":"mutable","name":"err","nameLocation":"28526:3:39","nodeType":"VariableDeclaration","scope":7435,"src":"28518:11:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7325,"name":"uint256","nodeType":"ElementaryTypeName","src":"28518:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7332,"initialValue":{"arguments":[{"id":7329,"name":"onBehalf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7278,"src":"28557:8:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7330,"name":"repayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7307,"src":"28567:11:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7327,"name":"market","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7281,"src":"28532:6:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":7328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28539:17:39","memberName":"repayBorrowBehalf","nodeType":"MemberAccess","referencedDeclaration":5249,"src":"28532:24:39","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) external returns (uint256)"}},"id":7331,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28532:47:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"28518:61:39"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7333,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7326,"src":"28594:3:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":7334,"name":"SUCCESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5784,"src":"28601:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28594:14:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7341,"nodeType":"IfStatement","src":"28590:74:39","trueBody":{"id":7340,"nodeType":"Block","src":"28610:54:39","statements":[{"errorCall":{"arguments":[{"id":7337,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7326,"src":"28649:3:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7336,"name":"RepayBehalfFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5527,"src":"28631:17:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":7338,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28631:22:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7339,"nodeType":"RevertStatement","src":"28624:29:39"}]}},{"expression":{"id":7346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7342,"name":"flashLoanRepayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7288,"src":"28674:20:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7343,"name":"flashloanedCollateralAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7283,"src":"28697:27:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":7344,"name":"collateralAmountFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7285,"src":"28727:20:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28697:50:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28674:73:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7347,"nodeType":"ExpressionStatement","src":"28674:73:39"},{"assignments":[7349],"declarations":[{"constant":false,"id":7349,"mutability":"mutable","name":"treasuryPercent","nameLocation":"28766:15:39","nodeType":"VariableDeclaration","scope":7435,"src":"28758:23:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7348,"name":"uint256","nodeType":"ElementaryTypeName","src":"28758:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7353,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7350,"name":"COMPTROLLER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5792,"src":"28784:11:39","typeDescriptions":{"typeIdentifier":"t_contract$_IComptroller_$5454","typeString":"contract IComptroller"}},"id":7351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28796:15:39","memberName":"treasuryPercent","nodeType":"MemberAccess","referencedDeclaration":5437,"src":"28784:27:39","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":7352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28784:29:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"28758:55:39"},{"assignments":[7355],"declarations":[{"constant":false,"id":7355,"mutability":"mutable","name":"redeemAmount","nameLocation":"28831:12:39","nodeType":"VariableDeclaration","scope":7435,"src":"28823:20:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7354,"name":"uint256","nodeType":"ElementaryTypeName","src":"28823:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7377,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7356,"name":"treasuryPercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7349,"src":"28846:15:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":7357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28864:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"28846:19:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":7375,"name":"flashLoanRepayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7288,"src":"29022:20:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"28846:196:39","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7359,"name":"flashLoanRepayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7288,"src":"28881:20:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7360,"name":"MANTISSA_ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5788,"src":"28904:12:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28881:35:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7362,"name":"MANTISSA_ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5788,"src":"28920:12:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7363,"name":"treasuryPercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7349,"src":"28935:15:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28920:30:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7365,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"28919:32:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28881:70:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":7367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28954:1:39","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"28881:74:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7369,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"28880:76:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7370,"name":"MANTISSA_ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5788,"src":"28976:12:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7371,"name":"treasuryPercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7349,"src":"28991:15:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28976:30:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7373,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"28975:32:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28880:127:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"28823:219:39"},{"assignments":[7379],"declarations":[{"constant":false,"id":7379,"mutability":"mutable","name":"userCollateralBalance","nameLocation":"29061:21:39","nodeType":"VariableDeclaration","scope":7435,"src":"29053:29:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7378,"name":"uint256","nodeType":"ElementaryTypeName","src":"29053:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7384,"initialValue":{"arguments":[{"id":7382,"name":"onBehalf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7278,"src":"29112:8:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":7380,"name":"market","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7281,"src":"29085:6:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":7381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29092:19:39","memberName":"balanceOfUnderlying","nodeType":"MemberAccess","referencedDeclaration":5211,"src":"29085:26:39","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$_t_uint256_$","typeString":"function (address) external returns (uint256)"}},"id":7383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29085:36:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"29053:68:39"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7385,"name":"redeemAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7355,"src":"29135:12:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":7386,"name":"userCollateralBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7379,"src":"29150:21:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29135:36:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7393,"nodeType":"IfStatement","src":"29131:103:39","trueBody":{"id":7392,"nodeType":"Block","src":"29173:61:39","statements":[{"expression":{"id":7390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7388,"name":"redeemAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7355,"src":"29187:12:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7389,"name":"userCollateralBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7379,"src":"29202:21:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29187:36:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7391,"nodeType":"ExpressionStatement","src":"29187:36:39"}]}},{"expression":{"id":7400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7394,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7326,"src":"29244:3:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7397,"name":"onBehalf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7278,"src":"29280:8:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7398,"name":"redeemAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7355,"src":"29290:12:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7395,"name":"market","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7281,"src":"29250:6:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":7396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29257:22:39","memberName":"redeemUnderlyingBehalf","nodeType":"MemberAccess","referencedDeclaration":5258,"src":"29250:29:39","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) external returns (uint256)"}},"id":7399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29250:53:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29244:59:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7401,"nodeType":"ExpressionStatement","src":"29244:59:39"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7402,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7326,"src":"29317:3:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":7403,"name":"SUCCESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5784,"src":"29324:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29317:14:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7410,"nodeType":"IfStatement","src":"29313:75:39","trueBody":{"id":7409,"nodeType":"Block","src":"29333:55:39","statements":[{"errorCall":{"arguments":[{"id":7406,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7326,"src":"29373:3:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7405,"name":"RedeemBehalfFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5532,"src":"29354:18:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":7407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29354:23:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7408,"nodeType":"RevertStatement","src":"29347:30:39"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":7415,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"29436:4:39","typeDescriptions":{"typeIdentifier":"t_contract$_LeverageStrategiesManager_$7828","typeString":"contract LeverageStrategiesManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LeverageStrategiesManager_$7828","typeString":"contract LeverageStrategiesManager"}],"id":7414,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29428:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7413,"name":"address","nodeType":"ElementaryTypeName","src":"29428:7:39","typeDescriptions":{}}},"id":7416,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29428:13:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":7411,"name":"collateralAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7292,"src":"29402:15:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"id":7412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29418:9:39","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":574,"src":"29402:25:39","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":7417,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29402:40:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7418,"name":"flashLoanRepayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7288,"src":"29445:20:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29402:63:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7424,"nodeType":"IfStatement","src":"29398:136:39","trueBody":{"id":7423,"nodeType":"Block","src":"29467:67:39","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7420,"name":"InsufficientFundsToRepayFlashloan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5555,"src":"29488:33:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29488:35:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7422,"nodeType":"RevertStatement","src":"29481:42:39"}]}},{"expression":{"arguments":[{"arguments":[{"id":7430,"name":"market","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7281,"src":"29581:6:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}],"id":7429,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29573:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7428,"name":"address","nodeType":"ElementaryTypeName","src":"29573:7:39","typeDescriptions":{}}},"id":7431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29573:15:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7432,"name":"flashLoanRepayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7288,"src":"29590:20:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7425,"name":"collateralAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7292,"src":"29544:15:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"id":7427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29560:12:39","memberName":"forceApprove","nodeType":"MemberAccess","referencedDeclaration":886,"src":"29544:28:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$617_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20Upgradeable_$617_$","typeString":"function (contract IERC20Upgradeable,address,uint256)"}},"id":7433,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29544:67:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7434,"nodeType":"ExpressionStatement","src":"29544:67:39"}]},"documentation":{"id":7276,"nodeType":"StructuredDocumentation","src":"26376:1514:39","text":" @notice Executes the exit leveraged position with single collateral operation during flash loan callback\n @dev This function performs the following steps:\n      1. Queries actual debt and caps repayment to min(flashLoanAmount, actualDebt)\n         to handle cases where UI flash loans slightly more than current debt\n      2. Repays user's debt (up to actual debt amount) in the market\n      3. Calculates redeem amount accounting for treasury fee (if any)\n      4. Caps redeem amount to user's actual collateral balance to prevent revert\n         when user entered with zero seed (collateral equals borrowed amount)\n      5. Redeems collateral (up to user's balance) to repay flash loan\n      6. Approves the collateral asset for repayment to the flash loan\n @param onBehalf Address on whose behalf the operation is performed\n @param market The vToken market for both collateral and borrowed assets\n @param flashloanedCollateralAmount The amount borrowed via flash loan for debt repayment\n @param collateralAmountFees The fees to be paid on the flash loaned collateral amount\n @return flashLoanRepayAmount The total amount of collateral assets to repay\n @custom:error RepayBehalfFailed if repayment of borrowed assets fails\n @custom:error RedeemBehalfFailed if redeem operations fail\n @custom:error InsufficientFundsToRepayFlashloan if insufficient funds are available to repay the flash loan"},"id":7436,"implemented":true,"kind":"function","modifiers":[],"name":"_handleExitSingleAsset","nameLocation":"27904:22:39","nodeType":"FunctionDefinition","parameters":{"id":7286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7278,"mutability":"mutable","name":"onBehalf","nameLocation":"27944:8:39","nodeType":"VariableDeclaration","scope":7436,"src":"27936:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7277,"name":"address","nodeType":"ElementaryTypeName","src":"27936:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7281,"mutability":"mutable","name":"market","nameLocation":"27970:6:39","nodeType":"VariableDeclaration","scope":7436,"src":"27962:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":7280,"nodeType":"UserDefinedTypeName","pathNode":{"id":7279,"name":"IVToken","nameLocations":["27962:7:39"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"27962:7:39"},"referencedDeclaration":5277,"src":"27962:7:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"},{"constant":false,"id":7283,"mutability":"mutable","name":"flashloanedCollateralAmount","nameLocation":"27994:27:39","nodeType":"VariableDeclaration","scope":7436,"src":"27986:35:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7282,"name":"uint256","nodeType":"ElementaryTypeName","src":"27986:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7285,"mutability":"mutable","name":"collateralAmountFees","nameLocation":"28039:20:39","nodeType":"VariableDeclaration","scope":7436,"src":"28031:28:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7284,"name":"uint256","nodeType":"ElementaryTypeName","src":"28031:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"27926:139:39"},"returnParameters":{"id":7289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7288,"mutability":"mutable","name":"flashLoanRepayAmount","nameLocation":"28092:20:39","nodeType":"VariableDeclaration","scope":7436,"src":"28084:28:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7287,"name":"uint256","nodeType":"ElementaryTypeName","src":"28084:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"28083:30:39"},"scope":7828,"src":"27895:1723:39","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7517,"nodeType":"Block","src":"30656:539:39","statements":[{"expression":{"arguments":[{"arguments":[{"id":7459,"name":"swapHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5796,"src":"30695:10:39","typeDescriptions":{"typeIdentifier":"t_contract$_SwapHelper_$8322","typeString":"contract SwapHelper"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapHelper_$8322","typeString":"contract SwapHelper"}],"id":7458,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30687:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7457,"name":"address","nodeType":"ElementaryTypeName","src":"30687:7:39","typeDescriptions":{}}},"id":7460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30687:19:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7461,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7442,"src":"30708:8:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7454,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7440,"src":"30666:7:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"id":7456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30674:12:39","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":686,"src":"30666:20:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$617_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20Upgradeable_$617_$","typeString":"function (contract IERC20Upgradeable,address,uint256)"}},"id":7462,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30666:51:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7463,"nodeType":"ExpressionStatement","src":"30666:51:39"},{"assignments":[7465],"declarations":[{"constant":false,"id":7465,"mutability":"mutable","name":"tokenOutBalanceBefore","nameLocation":"30736:21:39","nodeType":"VariableDeclaration","scope":7517,"src":"30728:29:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7464,"name":"uint256","nodeType":"ElementaryTypeName","src":"30728:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7473,"initialValue":{"arguments":[{"arguments":[{"id":7470,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"30787:4:39","typeDescriptions":{"typeIdentifier":"t_contract$_LeverageStrategiesManager_$7828","typeString":"contract LeverageStrategiesManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LeverageStrategiesManager_$7828","typeString":"contract LeverageStrategiesManager"}],"id":7469,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30779:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7468,"name":"address","nodeType":"ElementaryTypeName","src":"30779:7:39","typeDescriptions":{}}},"id":7471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30779:13:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":7466,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7445,"src":"30760:8:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"id":7467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30769:9:39","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":574,"src":"30760:18:39","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":7472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30760:33:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"30728:65:39"},{"assignments":[7475,null],"declarations":[{"constant":false,"id":7475,"mutability":"mutable","name":"success","nameLocation":"30810:7:39","nodeType":"VariableDeclaration","scope":7517,"src":"30805:12:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7474,"name":"bool","nodeType":"ElementaryTypeName","src":"30805:4:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":7483,"initialValue":{"arguments":[{"id":7481,"name":"param","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7449,"src":"30848:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"arguments":[{"id":7478,"name":"swapHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5796,"src":"30831:10:39","typeDescriptions":{"typeIdentifier":"t_contract$_SwapHelper_$8322","typeString":"contract SwapHelper"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapHelper_$8322","typeString":"contract SwapHelper"}],"id":7477,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30823:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7476,"name":"address","nodeType":"ElementaryTypeName","src":"30823:7:39","typeDescriptions":{}}},"id":7479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30823:19:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30843:4:39","memberName":"call","nodeType":"MemberAccess","src":"30823:24:39","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":7482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30823:31:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"30804:50:39"},{"condition":{"id":7485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"30868:8:39","subExpression":{"id":7484,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7475,"src":"30869:7:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7490,"nodeType":"IfStatement","src":"30864:67:39","trueBody":{"id":7489,"nodeType":"Block","src":"30878:53:39","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7486,"name":"TokenSwapCallFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5540,"src":"30899:19:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7487,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30899:21:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7488,"nodeType":"RevertStatement","src":"30892:28:39"}]}},{"assignments":[7492],"declarations":[{"constant":false,"id":7492,"mutability":"mutable","name":"tokenOutBalanceAfter","nameLocation":"30949:20:39","nodeType":"VariableDeclaration","scope":7517,"src":"30941:28:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7491,"name":"uint256","nodeType":"ElementaryTypeName","src":"30941:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7500,"initialValue":{"arguments":[{"arguments":[{"id":7497,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"30999:4:39","typeDescriptions":{"typeIdentifier":"t_contract$_LeverageStrategiesManager_$7828","typeString":"contract LeverageStrategiesManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LeverageStrategiesManager_$7828","typeString":"contract LeverageStrategiesManager"}],"id":7496,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30991:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7495,"name":"address","nodeType":"ElementaryTypeName","src":"30991:7:39","typeDescriptions":{}}},"id":7498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30991:13:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":7493,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7445,"src":"30972:8:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"id":7494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30981:9:39","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":574,"src":"30972:18:39","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":7499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30972:33:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"30941:64:39"},{"expression":{"id":7505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7501,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7452,"src":"31016:9:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7502,"name":"tokenOutBalanceAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7492,"src":"31028:20:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7503,"name":"tokenOutBalanceBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7465,"src":"31051:21:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31028:44:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31016:56:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7506,"nodeType":"ExpressionStatement","src":"31016:56:39"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7507,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7452,"src":"31086:9:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7508,"name":"minAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7447,"src":"31098:12:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31086:24:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7514,"nodeType":"IfStatement","src":"31082:80:39","trueBody":{"id":7513,"nodeType":"Block","src":"31112:50:39","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7510,"name":"SlippageExceeded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5552,"src":"31133:16:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31133:18:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7512,"nodeType":"RevertStatement","src":"31126:25:39"}]}},{"expression":{"id":7515,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7452,"src":"31179:9:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7453,"id":7516,"nodeType":"Return","src":"31172:16:39"}]},"documentation":{"id":7437,"nodeType":"StructuredDocumentation","src":"29624:805:39","text":" @notice Performs token swap via the SwapHelper contract\n @dev Transfers tokens to SwapHelper and executes the swap operation.\n      The swap operation is expected to return the output tokens to this contract.\n @param tokenIn The input token to be swapped\n @param amountIn The amount of input tokens to swap\n @param tokenOut The output token to receive from the swap\n @param minAmountOut The minimum acceptable amount of output tokens\n @param param The encoded swap instructions/calldata for the SwapHelper\n @return amountOut The actual amount of output tokens received from the swap\n @custom:error TokenSwapCallFailed if the swap execution fails\n @custom:error SlippageExceeded if the swap output is below the minimum required"},"id":7518,"implemented":true,"kind":"function","modifiers":[],"name":"_performSwap","nameLocation":"30443:12:39","nodeType":"FunctionDefinition","parameters":{"id":7450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7440,"mutability":"mutable","name":"tokenIn","nameLocation":"30483:7:39","nodeType":"VariableDeclaration","scope":7518,"src":"30465:25:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"},"typeName":{"id":7439,"nodeType":"UserDefinedTypeName","pathNode":{"id":7438,"name":"IERC20Upgradeable","nameLocations":["30465:17:39"],"nodeType":"IdentifierPath","referencedDeclaration":617,"src":"30465:17:39"},"referencedDeclaration":617,"src":"30465:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":7442,"mutability":"mutable","name":"amountIn","nameLocation":"30508:8:39","nodeType":"VariableDeclaration","scope":7518,"src":"30500:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7441,"name":"uint256","nodeType":"ElementaryTypeName","src":"30500:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7445,"mutability":"mutable","name":"tokenOut","nameLocation":"30544:8:39","nodeType":"VariableDeclaration","scope":7518,"src":"30526:26:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"},"typeName":{"id":7444,"nodeType":"UserDefinedTypeName","pathNode":{"id":7443,"name":"IERC20Upgradeable","nameLocations":["30526:17:39"],"nodeType":"IdentifierPath","referencedDeclaration":617,"src":"30526:17:39"},"referencedDeclaration":617,"src":"30526:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":7447,"mutability":"mutable","name":"minAmountOut","nameLocation":"30570:12:39","nodeType":"VariableDeclaration","scope":7518,"src":"30562:20:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7446,"name":"uint256","nodeType":"ElementaryTypeName","src":"30562:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7449,"mutability":"mutable","name":"param","nameLocation":"30607:5:39","nodeType":"VariableDeclaration","scope":7518,"src":"30592:20:39","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7448,"name":"bytes","nodeType":"ElementaryTypeName","src":"30592:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"30455:163:39"},"returnParameters":{"id":7453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7452,"mutability":"mutable","name":"amountOut","nameLocation":"30645:9:39","nodeType":"VariableDeclaration","scope":7518,"src":"30637:17:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7451,"name":"uint256","nodeType":"ElementaryTypeName","src":"30637:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30636:19:39"},"scope":7828,"src":"30434:761:39","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7554,"nodeType":"Block","src":"31874:186:39","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7529,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7526,"src":"31888:6:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":7530,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31897:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"31888:10:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7553,"nodeType":"IfStatement","src":"31884:170:39","trueBody":{"id":7552,"nodeType":"Block","src":"31900:154:39","statements":[{"assignments":[7534],"declarations":[{"constant":false,"id":7534,"mutability":"mutable","name":"token","nameLocation":"31932:5:39","nodeType":"VariableDeclaration","scope":7552,"src":"31914:23:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"},"typeName":{"id":7533,"nodeType":"UserDefinedTypeName","pathNode":{"id":7532,"name":"IERC20Upgradeable","nameLocations":["31914:17:39"],"nodeType":"IdentifierPath","referencedDeclaration":617,"src":"31914:17:39"},"referencedDeclaration":617,"src":"31914:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"}],"id":7540,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7536,"name":"market","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7522,"src":"31958:6:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":7537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31965:10:39","memberName":"underlying","nodeType":"MemberAccess","referencedDeclaration":5276,"src":"31958:17:39","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":7538,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31958:19:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7535,"name":"IERC20Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"31940:17:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Upgradeable_$617_$","typeString":"type(contract IERC20Upgradeable)"}},"id":7539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31940:38:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"nodeType":"VariableDeclarationStatement","src":"31914:64:39"},{"expression":{"arguments":[{"id":7544,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7524,"src":"32015:4:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":7547,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"32029:4:39","typeDescriptions":{"typeIdentifier":"t_contract$_LeverageStrategiesManager_$7828","typeString":"contract LeverageStrategiesManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LeverageStrategiesManager_$7828","typeString":"contract LeverageStrategiesManager"}],"id":7546,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32021:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7545,"name":"address","nodeType":"ElementaryTypeName","src":"32021:7:39","typeDescriptions":{}}},"id":7548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32021:13:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7549,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7526,"src":"32036:6:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7541,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7534,"src":"31992:5:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"id":7543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31998:16:39","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":713,"src":"31992:22:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$617_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20Upgradeable_$617_$","typeString":"function (contract IERC20Upgradeable,address,address,uint256)"}},"id":7550,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31992:51:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7551,"nodeType":"ExpressionStatement","src":"31992:51:39"}]}}]},"documentation":{"id":7519,"nodeType":"StructuredDocumentation","src":"31201:576:39","text":" @notice Transfers tokens from the user to this contract if amount > 0\n @dev If the specified amount is greater than zero, transfers tokens from the user.\n      Reverts if the actual transferred amount does not match the expected amount.\n @param market The vToken market whose underlying asset is to be transferred\n @param user The address of the user to transfer tokens from\n @param amount The amount of tokens to transfer\n @custom:error TransferFromUserFailed if the transferred amount does not match the expected amount"},"id":7555,"implemented":true,"kind":"function","modifiers":[],"name":"_transferSeedAmountFromUser","nameLocation":"31791:27:39","nodeType":"FunctionDefinition","parameters":{"id":7527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7522,"mutability":"mutable","name":"market","nameLocation":"31827:6:39","nodeType":"VariableDeclaration","scope":7555,"src":"31819:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":7521,"nodeType":"UserDefinedTypeName","pathNode":{"id":7520,"name":"IVToken","nameLocations":["31819:7:39"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"31819:7:39"},"referencedDeclaration":5277,"src":"31819:7:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"},{"constant":false,"id":7524,"mutability":"mutable","name":"user","nameLocation":"31843:4:39","nodeType":"VariableDeclaration","scope":7555,"src":"31835:12:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7523,"name":"address","nodeType":"ElementaryTypeName","src":"31835:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7526,"mutability":"mutable","name":"amount","nameLocation":"31857:6:39","nodeType":"VariableDeclaration","scope":7555,"src":"31849:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7525,"name":"uint256","nodeType":"ElementaryTypeName","src":"31849:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31818:46:39"},"returnParameters":{"id":7528,"nodeType":"ParameterList","parameters":[],"src":"31874:0:39"},"scope":7828,"src":"31782:278:39","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7606,"nodeType":"Block","src":"32514:449:39","statements":[{"assignments":[7564],"declarations":[{"constant":false,"id":7564,"mutability":"mutable","name":"asset","nameLocation":"32542:5:39","nodeType":"VariableDeclaration","scope":7606,"src":"32524:23:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"},"typeName":{"id":7563,"nodeType":"UserDefinedTypeName","pathNode":{"id":7562,"name":"IERC20Upgradeable","nameLocations":["32524:17:39"],"nodeType":"IdentifierPath","referencedDeclaration":617,"src":"32524:17:39"},"referencedDeclaration":617,"src":"32524:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"}],"id":7570,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7566,"name":"market","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7559,"src":"32568:6:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":7567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"32575:10:39","memberName":"underlying","nodeType":"MemberAccess","referencedDeclaration":5276,"src":"32568:17:39","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":7568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32568:19:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7565,"name":"IERC20Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"32550:17:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Upgradeable_$617_$","typeString":"type(contract IERC20Upgradeable)"}},"id":7569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32550:38:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"nodeType":"VariableDeclarationStatement","src":"32524:64:39"},{"assignments":[7572],"declarations":[{"constant":false,"id":7572,"mutability":"mutable","name":"dustAmount","nameLocation":"32607:10:39","nodeType":"VariableDeclaration","scope":7606,"src":"32599:18:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7571,"name":"uint256","nodeType":"ElementaryTypeName","src":"32599:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7580,"initialValue":{"arguments":[{"arguments":[{"id":7577,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"32644:4:39","typeDescriptions":{"typeIdentifier":"t_contract$_LeverageStrategiesManager_$7828","typeString":"contract LeverageStrategiesManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LeverageStrategiesManager_$7828","typeString":"contract LeverageStrategiesManager"}],"id":7576,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32636:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7575,"name":"address","nodeType":"ElementaryTypeName","src":"32636:7:39","typeDescriptions":{}}},"id":7578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32636:13:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":7573,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7564,"src":"32620:5:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"id":7574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"32626:9:39","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":574,"src":"32620:15:39","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":7579,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32620:30:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"32599:51:39"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7581,"name":"dustAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7572,"src":"32664:10:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":7582,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32677:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"32664:14:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7605,"nodeType":"IfStatement","src":"32660:297:39","trueBody":{"id":7604,"nodeType":"Block","src":"32680:277:39","statements":[{"assignments":[7585],"declarations":[{"constant":false,"id":7585,"mutability":"mutable","name":"_operationInitiator","nameLocation":"32758:19:39","nodeType":"VariableDeclaration","scope":7604,"src":"32750:27:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7584,"name":"address","nodeType":"ElementaryTypeName","src":"32750:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":7587,"initialValue":{"id":7586,"name":"operationInitiator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5807,"src":"32780:18:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"32750:48:39"},{"expression":{"arguments":[{"id":7591,"name":"_operationInitiator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7585,"src":"32831:19:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7592,"name":"dustAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7572,"src":"32852:10:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7588,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7564,"src":"32812:5:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"id":7590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"32818:12:39","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":686,"src":"32812:18:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$617_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20Upgradeable_$617_$","typeString":"function (contract IERC20Upgradeable,address,uint256)"}},"id":7593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32812:51:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7594,"nodeType":"ExpressionStatement","src":"32812:51:39"},{"eventCall":{"arguments":[{"id":7596,"name":"_operationInitiator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7585,"src":"32898:19:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":7599,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7564,"src":"32927:5:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}],"id":7598,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32919:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7597,"name":"address","nodeType":"ElementaryTypeName","src":"32919:7:39","typeDescriptions":{}}},"id":7600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32919:14:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7601,"name":"dustAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7572,"src":"32935:10:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7595,"name":"DustTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5600,"src":"32882:15:39","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32882:64:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7603,"nodeType":"EmitStatement","src":"32877:69:39"}]}}]},"documentation":{"id":7556,"nodeType":"StructuredDocumentation","src":"32066:384:39","text":" @notice Transfers any remaining dust amounts back to the operation initiator\n @dev This function returns small remaining balances to the user who initiated the operation.\n      Should be called after leverage operations to ensure no funds are left in the contract.\n @param market The vToken market whose underlying asset dust should be transferred"},"id":7607,"implemented":true,"kind":"function","modifiers":[],"name":"_transferDustToInitiator","nameLocation":"32464:24:39","nodeType":"FunctionDefinition","parameters":{"id":7560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7559,"mutability":"mutable","name":"market","nameLocation":"32497:6:39","nodeType":"VariableDeclaration","scope":7607,"src":"32489:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":7558,"nodeType":"UserDefinedTypeName","pathNode":{"id":7557,"name":"IVToken","nameLocations":["32489:7:39"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"32489:7:39"},"referencedDeclaration":5277,"src":"32489:7:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"}],"src":"32488:16:39"},"returnParameters":{"id":7561,"nodeType":"ParameterList","parameters":[],"src":"32514:0:39"},"scope":7828,"src":"32455:508:39","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7684,"nodeType":"Block","src":"34014:646:39","statements":[{"expression":{"id":7625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7623,"name":"flashLoanRepayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7621,"src":"34024:20:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7624,"name":"borrowedAssetFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7618,"src":"34047:17:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34024:40:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7626,"nodeType":"ExpressionStatement","src":"34024:40:39"},{"assignments":[7628],"declarations":[{"constant":false,"id":7628,"mutability":"mutable","name":"marketBalanceBeforeBorrow","nameLocation":"34083:25:39","nodeType":"VariableDeclaration","scope":7684,"src":"34075:33:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7627,"name":"uint256","nodeType":"ElementaryTypeName","src":"34075:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7636,"initialValue":{"arguments":[{"arguments":[{"id":7633,"name":"borrowMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7613,"src":"34143:12:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}],"id":7632,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34135:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7631,"name":"address","nodeType":"ElementaryTypeName","src":"34135:7:39","typeDescriptions":{}}},"id":7634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34135:21:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":7629,"name":"borrowedAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7616,"src":"34111:13:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"id":7630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"34125:9:39","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":574,"src":"34111:23:39","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":7635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34111:46:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"34075:82:39"},{"assignments":[7638],"declarations":[{"constant":false,"id":7638,"mutability":"mutable","name":"err","nameLocation":"34175:3:39","nodeType":"VariableDeclaration","scope":7684,"src":"34167:11:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7637,"name":"uint256","nodeType":"ElementaryTypeName","src":"34167:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7644,"initialValue":{"arguments":[{"id":7641,"name":"onBehalf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7610,"src":"34207:8:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7642,"name":"flashLoanRepayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7621,"src":"34217:20:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7639,"name":"borrowMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7613,"src":"34181:12:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":7640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"34194:12:39","memberName":"borrowBehalf","nodeType":"MemberAccess","referencedDeclaration":5240,"src":"34181:25:39","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) external returns (uint256)"}},"id":7643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34181:57:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"34167:71:39"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7645,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7638,"src":"34252:3:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":7646,"name":"SUCCESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5784,"src":"34259:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34252:14:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7653,"nodeType":"IfStatement","src":"34248:75:39","trueBody":{"id":7652,"nodeType":"Block","src":"34268:55:39","statements":[{"errorCall":{"arguments":[{"id":7649,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7638,"src":"34308:3:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7648,"name":"BorrowBehalfFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5522,"src":"34289:18:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":7650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34289:23:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7651,"nodeType":"RevertStatement","src":"34282:30:39"}]}},{"assignments":[7655],"declarations":[{"constant":false,"id":7655,"mutability":"mutable","name":"marketBalanceAfterBorrow","nameLocation":"34340:24:39","nodeType":"VariableDeclaration","scope":7684,"src":"34332:32:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7654,"name":"uint256","nodeType":"ElementaryTypeName","src":"34332:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7663,"initialValue":{"arguments":[{"arguments":[{"id":7660,"name":"borrowMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7613,"src":"34399:12:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}],"id":7659,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34391:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7658,"name":"address","nodeType":"ElementaryTypeName","src":"34391:7:39","typeDescriptions":{}}},"id":7661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34391:21:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":7656,"name":"borrowedAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7616,"src":"34367:13:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"id":7657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"34381:9:39","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":574,"src":"34367:23:39","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":7662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34367:46:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"34332:81:39"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7664,"name":"marketBalanceBeforeBorrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7628,"src":"34428:25:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7665,"name":"marketBalanceAfterBorrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7655,"src":"34456:24:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34428:52:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7667,"name":"flashLoanRepayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7621,"src":"34483:20:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34428:75:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7673,"nodeType":"IfStatement","src":"34424:148:39","trueBody":{"id":7672,"nodeType":"Block","src":"34505:67:39","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7669,"name":"InsufficientFundsToRepayFlashloan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5555,"src":"34526:33:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34526:35:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7671,"nodeType":"RevertStatement","src":"34519:42:39"}]}},{"expression":{"arguments":[{"arguments":[{"id":7679,"name":"borrowMarket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7613,"src":"34617:12:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}],"id":7678,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34609:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7677,"name":"address","nodeType":"ElementaryTypeName","src":"34609:7:39","typeDescriptions":{}}},"id":7680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34609:21:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7681,"name":"flashLoanRepayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7621,"src":"34632:20:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7674,"name":"borrowedAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7616,"src":"34582:13:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"id":7676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"34596:12:39","memberName":"forceApprove","nodeType":"MemberAccess","referencedDeclaration":886,"src":"34582:26:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$617_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20Upgradeable_$617_$","typeString":"function (contract IERC20Upgradeable,address,uint256)"}},"id":7682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34582:71:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7683,"nodeType":"ExpressionStatement","src":"34582:71:39"}]},"documentation":{"id":7608,"nodeType":"StructuredDocumentation","src":"32969:817:39","text":" @notice Borrows assets on behalf of the user to repay the flash loan fee\n @dev Borrows the total amount needed to repay the flash loan fee\n      and approves the borrowed asset for repayment to the flash loan.\n @param onBehalf Address on whose behalf assets will be borrowed\n @param borrowMarket The vToken market from which assets will be borrowed\n @param borrowedAsset The underlying asset being borrowed\n @param borrowedAssetFees The fees to be paid on the borrowed asset amount\n @return flashLoanRepayAmount The total amount of borrowed assets to repay (only fees)\n @custom:error BorrowBehalfFailed if borrow behalf operation fails\n @custom:error InsufficientFundsToRepayFlashloan if insufficient funds are available to repay the flash loan"},"id":7685,"implemented":true,"kind":"function","modifiers":[],"name":"_borrowAndRepayFlashLoanFee","nameLocation":"33800:27:39","nodeType":"FunctionDefinition","parameters":{"id":7619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7610,"mutability":"mutable","name":"onBehalf","nameLocation":"33845:8:39","nodeType":"VariableDeclaration","scope":7685,"src":"33837:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7609,"name":"address","nodeType":"ElementaryTypeName","src":"33837:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7613,"mutability":"mutable","name":"borrowMarket","nameLocation":"33871:12:39","nodeType":"VariableDeclaration","scope":7685,"src":"33863:20:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":7612,"nodeType":"UserDefinedTypeName","pathNode":{"id":7611,"name":"IVToken","nameLocations":["33863:7:39"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"33863:7:39"},"referencedDeclaration":5277,"src":"33863:7:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"},{"constant":false,"id":7616,"mutability":"mutable","name":"borrowedAsset","nameLocation":"33911:13:39","nodeType":"VariableDeclaration","scope":7685,"src":"33893:31:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"},"typeName":{"id":7615,"nodeType":"UserDefinedTypeName","pathNode":{"id":7614,"name":"IERC20Upgradeable","nameLocations":["33893:17:39"],"nodeType":"IdentifierPath","referencedDeclaration":617,"src":"33893:17:39"},"referencedDeclaration":617,"src":"33893:17:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":7618,"mutability":"mutable","name":"borrowedAssetFees","nameLocation":"33942:17:39","nodeType":"VariableDeclaration","scope":7685,"src":"33934:25:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7617,"name":"uint256","nodeType":"ElementaryTypeName","src":"33934:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33827:138:39"},"returnParameters":{"id":7622,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7621,"mutability":"mutable","name":"flashLoanRepayAmount","nameLocation":"33992:20:39","nodeType":"VariableDeclaration","scope":7685,"src":"33984:28:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7620,"name":"uint256","nodeType":"ElementaryTypeName","src":"33984:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33983:30:39"},"scope":7828,"src":"33791:869:39","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7706,"nodeType":"Block","src":"35046:116:39","statements":[{"assignments":[7693],"declarations":[{"constant":false,"id":7693,"mutability":"mutable","name":"err","nameLocation":"35064:3:39","nodeType":"VariableDeclaration","scope":7706,"src":"35056:11:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7692,"name":"uint256","nodeType":"ElementaryTypeName","src":"35056:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7697,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7694,"name":"market","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7689,"src":"35070:6:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"id":7695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"35077:14:39","memberName":"accrueInterest","nodeType":"MemberAccess","referencedDeclaration":5183,"src":"35070:21:39","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$_t_uint256_$","typeString":"function () external returns (uint256)"}},"id":7696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35070:23:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"35056:37:39"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7698,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7693,"src":"35107:3:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":7699,"name":"SUCCESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5784,"src":"35114:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"35107:14:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7705,"nodeType":"IfStatement","src":"35103:52:39","trueBody":{"errorCall":{"arguments":[{"id":7702,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7693,"src":"35151:3:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7701,"name":"AccrueInterestFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5588,"src":"35130:20:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":7703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35130:25:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7704,"nodeType":"RevertStatement","src":"35123:32:39"}}]},"documentation":{"id":7686,"nodeType":"StructuredDocumentation","src":"34666:325:39","text":" @notice Accrues interest on a vToken market\n @dev Must be called before safety checks to ensure borrow balances reflect accumulated interest\n @param market The vToken market to accrue interest on\n @custom:error AccrueInterestFailed if the accrueInterest call returns a non-zero error code"},"id":7707,"implemented":true,"kind":"function","modifiers":[],"name":"_accrueInterest","nameLocation":"35005:15:39","nodeType":"FunctionDefinition","parameters":{"id":7690,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7689,"mutability":"mutable","name":"market","nameLocation":"35029:6:39","nodeType":"VariableDeclaration","scope":7707,"src":"35021:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":7688,"nodeType":"UserDefinedTypeName","pathNode":{"id":7687,"name":"IVToken","nameLocations":["35021:7:39"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"35021:7:39"},"referencedDeclaration":5277,"src":"35021:7:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"}],"src":"35020:16:39"},"returnParameters":{"id":7691,"nodeType":"ParameterList","parameters":[],"src":"35046:0:39"},"scope":7828,"src":"34996:166:39","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7743,"nodeType":"Block","src":"35676:218:39","statements":[{"condition":{"id":7721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"35690:42:39","subExpression":{"arguments":[{"id":7718,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7710,"src":"35719:4:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7719,"name":"market","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7713,"src":"35725:6:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}],"expression":{"id":7716,"name":"COMPTROLLER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5792,"src":"35691:11:39","typeDescriptions":{"typeIdentifier":"t_contract$_IComptroller_$5454","typeString":"contract IComptroller"}},"id":7717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"35703:15:39","memberName":"checkMembership","nodeType":"MemberAccess","referencedDeclaration":5421,"src":"35691:27:39","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_contract$_IVToken_$5277_$returns$_t_bool_$","typeString":"function (address,contract IVToken) view external returns (bool)"}},"id":7720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35691:41:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7742,"nodeType":"IfStatement","src":"35686:202:39","trueBody":{"id":7741,"nodeType":"Block","src":"35734:154:39","statements":[{"assignments":[7723],"declarations":[{"constant":false,"id":7723,"mutability":"mutable","name":"err","nameLocation":"35756:3:39","nodeType":"VariableDeclaration","scope":7741,"src":"35748:11:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7722,"name":"uint256","nodeType":"ElementaryTypeName","src":"35748:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7732,"initialValue":{"arguments":[{"id":7726,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7710,"src":"35792:4:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":7729,"name":"market","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7713,"src":"35806:6:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}],"id":7728,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"35798:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7727,"name":"address","nodeType":"ElementaryTypeName","src":"35798:7:39","typeDescriptions":{}}},"id":7730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35798:15:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":7724,"name":"COMPTROLLER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5792,"src":"35762:11:39","typeDescriptions":{"typeIdentifier":"t_contract$_IComptroller_$5454","typeString":"contract IComptroller"}},"id":7725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"35774:17:39","memberName":"enterMarketBehalf","nodeType":"MemberAccess","referencedDeclaration":5333,"src":"35762:29:39","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) external returns (uint256)"}},"id":7731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35762:52:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"35748:66:39"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7733,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7723,"src":"35832:3:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":7734,"name":"SUCCESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5784,"src":"35839:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"35832:14:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7740,"nodeType":"IfStatement","src":"35828:49:39","trueBody":{"errorCall":{"arguments":[{"id":7737,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7723,"src":"35873:3:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7736,"name":"EnterMarketFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5566,"src":"35855:17:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":7738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35855:22:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7739,"nodeType":"RevertStatement","src":"35848:29:39"}}]}}]},"documentation":{"id":7708,"nodeType":"StructuredDocumentation","src":"35168:431:39","text":" @notice Ensures the user has entered the market before operations\n @dev If user is not a member of market the function calls Comptroller to enter market on behalf of user\n @param user The account for which membership is validated/updated\n @param market The vToken market the user must enter\n @custom:error EnterMarketFailed when Comptroller.enterMarketBehalf returns a non-zero error code"},"id":7744,"implemented":true,"kind":"function","modifiers":[],"name":"_validateAndEnterMarket","nameLocation":"35613:23:39","nodeType":"FunctionDefinition","parameters":{"id":7714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7710,"mutability":"mutable","name":"user","nameLocation":"35645:4:39","nodeType":"VariableDeclaration","scope":7744,"src":"35637:12:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7709,"name":"address","nodeType":"ElementaryTypeName","src":"35637:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7713,"mutability":"mutable","name":"market","nameLocation":"35659:6:39","nodeType":"VariableDeclaration","scope":7744,"src":"35651:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":7712,"nodeType":"UserDefinedTypeName","pathNode":{"id":7711,"name":"IVToken","nameLocations":["35651:7:39"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"35651:7:39"},"referencedDeclaration":5277,"src":"35651:7:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"}],"src":"35636:30:39"},"returnParameters":{"id":7715,"nodeType":"ParameterList","parameters":[],"src":"35676:0:39"},"scope":7828,"src":"35604:290:39","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7763,"nodeType":"Block","src":"36140:134:39","statements":[{"condition":{"id":7757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"36154:57:39","subExpression":{"arguments":[{"expression":{"id":7750,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"36185:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"36189:6:39","memberName":"sender","nodeType":"MemberAccess","src":"36185:10:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":7754,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"36205:4:39","typeDescriptions":{"typeIdentifier":"t_contract$_LeverageStrategiesManager_$7828","typeString":"contract LeverageStrategiesManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LeverageStrategiesManager_$7828","typeString":"contract LeverageStrategiesManager"}],"id":7753,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"36197:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7752,"name":"address","nodeType":"ElementaryTypeName","src":"36197:7:39","typeDescriptions":{}}},"id":7755,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36197:13:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":7748,"name":"COMPTROLLER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5792,"src":"36155:11:39","typeDescriptions":{"typeIdentifier":"t_contract$_IComptroller_$5454","typeString":"contract IComptroller"}},"id":7749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"36167:17:39","memberName":"approvedDelegates","nodeType":"MemberAccess","referencedDeclaration":5400,"src":"36155:29:39","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view external returns (bool)"}},"id":7756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36155:56:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7762,"nodeType":"IfStatement","src":"36150:118:39","trueBody":{"id":7761,"nodeType":"Block","src":"36213:55:39","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7758,"name":"NotAnApprovedDelegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5580,"src":"36234:21:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36234:23:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7760,"nodeType":"RevertStatement","src":"36227:30:39"}]}}]},"documentation":{"id":7745,"nodeType":"StructuredDocumentation","src":"35900:190:39","text":" @notice Checks if the caller has delegated this contract in the Comptroller\n @custom:error NotAnApprovedDelegate if caller has not approved this contract as delegate"},"id":7764,"implemented":true,"kind":"function","modifiers":[],"name":"_checkUserDelegated","nameLocation":"36104:19:39","nodeType":"FunctionDefinition","parameters":{"id":7746,"nodeType":"ParameterList","parameters":[],"src":"36123:2:39"},"returnParameters":{"id":7747,"nodeType":"ParameterList","parameters":[],"src":"36140:0:39"},"scope":7828,"src":"36095:179:39","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7791,"nodeType":"Block","src":"36847:174:39","statements":[{"assignments":[7771,null,7773],"declarations":[{"constant":false,"id":7771,"mutability":"mutable","name":"err","nameLocation":"36866:3:39","nodeType":"VariableDeclaration","scope":7791,"src":"36858:11:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7770,"name":"uint256","nodeType":"ElementaryTypeName","src":"36858:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null,{"constant":false,"id":7773,"mutability":"mutable","name":"shortfall","nameLocation":"36881:9:39","nodeType":"VariableDeclaration","scope":7791,"src":"36873:17:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7772,"name":"uint256","nodeType":"ElementaryTypeName","src":"36873:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7778,"initialValue":{"arguments":[{"id":7776,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7767,"src":"36924:4:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":7774,"name":"COMPTROLLER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5792,"src":"36894:11:39","typeDescriptions":{"typeIdentifier":"t_contract$_IComptroller_$5454","typeString":"contract IComptroller"}},"id":7775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"36906:17:39","memberName":"getBorrowingPower","nodeType":"MemberAccess","referencedDeclaration":5432,"src":"36894:29:39","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"function (address) view external returns (uint256,uint256,uint256)"}},"id":7777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36894:35:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"36857:72:39"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7779,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7771,"src":"36943:3:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":7780,"name":"SUCCESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5784,"src":"36950:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"36943:14:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7782,"name":"shortfall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7773,"src":"36961:9:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":7783,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"36973:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"36961:13:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"36943:31:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7790,"nodeType":"IfStatement","src":"36939:75:39","trueBody":{"errorCall":{"arguments":[{"id":7787,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7771,"src":"37010:3:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7786,"name":"OperationCausesLiquidation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5537,"src":"36983:26:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":7788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36983:31:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7789,"nodeType":"RevertStatement","src":"36976:38:39"}}]},"documentation":{"id":7765,"nodeType":"StructuredDocumentation","src":"36280:507:39","text":" @notice Checks if a `user` account is safe from liquidation\n @dev Verifies that the user's account has no liquidity shortfall and the comptroller\n      returned no errors when calculating account liquidity. This ensures the account\n      won't be immediately liquidatable after the leverage operation.\n @param user The address to check account safety for\n @custom:error OperationCausesLiquidation if the account has a liquidity shortfall or comptroller error"},"id":7792,"implemented":true,"kind":"function","modifiers":[],"name":"_checkAccountSafe","nameLocation":"36801:17:39","nodeType":"FunctionDefinition","parameters":{"id":7768,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7767,"mutability":"mutable","name":"user","nameLocation":"36827:4:39","nodeType":"VariableDeclaration","scope":7792,"src":"36819:12:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7766,"name":"address","nodeType":"ElementaryTypeName","src":"36819:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"36818:14:39"},"returnParameters":{"id":7769,"nodeType":"ParameterList","parameters":[],"src":"36847:0:39"},"scope":7828,"src":"36792:229:39","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7826,"nodeType":"Block","src":"37592:206:39","statements":[{"assignments":[7800,null,null],"declarations":[{"constant":false,"id":7800,"mutability":"mutable","name":"isMarketListed","nameLocation":"37608:14:39","nodeType":"VariableDeclaration","scope":7826,"src":"37603:19:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7799,"name":"bool","nodeType":"ElementaryTypeName","src":"37603:4:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null,null],"id":7808,"initialValue":{"arguments":[{"arguments":[{"id":7805,"name":"market","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7796,"src":"37658:6:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}],"id":7804,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37650:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7803,"name":"address","nodeType":"ElementaryTypeName","src":"37650:7:39","typeDescriptions":{}}},"id":7806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37650:15:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":7801,"name":"COMPTROLLER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5792,"src":"37630:11:39","typeDescriptions":{"typeIdentifier":"t_contract$_IComptroller_$5454","typeString":"contract IComptroller"}},"id":7802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37642:7:39","memberName":"markets","nodeType":"MemberAccess","referencedDeclaration":5384,"src":"37630:19:39","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_bool_$_t_uint256_$_t_bool_$","typeString":"function (address) view external returns (bool,uint256,bool)"}},"id":7807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37630:36:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$_t_bool_$","typeString":"tuple(bool,uint256,bool)"}},"nodeType":"VariableDeclarationStatement","src":"37602:64:39"},{"condition":{"id":7810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"37680:15:39","subExpression":{"id":7809,"name":"isMarketListed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7800,"src":"37681:14:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7818,"nodeType":"IfStatement","src":"37676:60:39","trueBody":{"errorCall":{"arguments":[{"arguments":[{"id":7814,"name":"market","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7796,"src":"37728:6:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}],"id":7813,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37720:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7812,"name":"address","nodeType":"ElementaryTypeName","src":"37720:7:39","typeDescriptions":{}}},"id":7815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37720:15:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7811,"name":"MarketNotListed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5571,"src":"37704:15:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":7816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37704:32:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7817,"nodeType":"RevertStatement","src":"37697:39:39"}},{"condition":{"commonType":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"id":7821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7819,"name":"market","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7796,"src":"37750:6:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":7820,"name":"vBNB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5800,"src":"37760:4:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"src":"37750:14:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7825,"nodeType":"IfStatement","src":"37746:45:39","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7822,"name":"VBNBNotSupported","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5574,"src":"37773:16:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7823,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37773:18:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7824,"nodeType":"RevertStatement","src":"37766:25:39"}}]},"documentation":{"id":7793,"nodeType":"StructuredDocumentation","src":"37027:499:39","text":" @notice Ensures that the given market is supported for leverage operations\n @dev A market must be listed in the Comptroller and must not be vBNB.\n      vBNB is excluded because it uses native BNB which requires special handling\n      that this contract does not support.\n @param market The vToken address to validate\n @custom:error MarketNotListed if the market is not listed in Comptroller\n @custom:error VBNBNotSupported if the market is vBNB"},"id":7827,"implemented":true,"kind":"function","modifiers":[],"name":"_checkMarketSupported","nameLocation":"37540:21:39","nodeType":"FunctionDefinition","parameters":{"id":7797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7796,"mutability":"mutable","name":"market","nameLocation":"37570:6:39","nodeType":"VariableDeclaration","scope":7827,"src":"37562:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"},"typeName":{"id":7795,"nodeType":"UserDefinedTypeName","pathNode":{"id":7794,"name":"IVToken","nameLocations":["37562:7:39"],"nodeType":"IdentifierPath","referencedDeclaration":5277,"src":"37562:7:39"},"referencedDeclaration":5277,"src":"37562:7:39","typeDescriptions":{"typeIdentifier":"t_contract$_IVToken_$5277","typeString":"contract IVToken"}},"visibility":"internal"}],"src":"37561:16:39"},"returnParameters":{"id":7798,"nodeType":"ParameterList","parameters":[],"src":"37592:0:39"},"scope":7828,"src":"37531:267:39","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":7829,"src":"825:36975:39","usedErrors":[5517,5522,5527,5532,5537,5540,5543,5546,5549,5552,5555,5558,5561,5566,5571,5574,5577,5580,5583,5588,5591],"usedEvents":[63,170,300,5600,5612,5627,5642,5657,5667]}],"src":"41:37760:39"},"id":39},"contracts/SwapHelper/SwapHelper.sol":{"ast":{"absolutePath":"contracts/SwapHelper/SwapHelper.sol","exportedSymbols":{"AddressUpgradeable":[1359],"ECDSA":[3565],"EIP712":[3769],"IERC20Upgradeable":[617],"Ownable2Step":[1679],"ReentrancyGuard":[1769],"SafeERC20Upgradeable":[1029],"SwapHelper":[8322]},"id":8323,"license":"BSD-3-Clause","nodeType":"SourceUnit","nodes":[{"id":7830,"literals":["solidity","0.8",".28"],"nodeType":"PragmaDirective","src":"41:23:40"},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol","id":7833,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8323,"sourceUnit":1030,"src":"66:145:40","symbolAliases":[{"foreign":{"id":7831,"name":"SafeERC20Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1029,"src":"79:20:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":7832,"name":"IERC20Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"105:17:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol","id":7835,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8323,"sourceUnit":1360,"src":"212:102:40","symbolAliases":[{"foreign":{"id":7834,"name":"AddressUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"221:18:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/cryptography/EIP712.sol","file":"@openzeppelin/contracts/utils/cryptography/EIP712.sol","id":7837,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8323,"sourceUnit":3770,"src":"315:79:40","symbolAliases":[{"foreign":{"id":7836,"name":"EIP712","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3769,"src":"324:6:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/cryptography/ECDSA.sol","file":"@openzeppelin/contracts/utils/cryptography/ECDSA.sol","id":7839,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8323,"sourceUnit":3566,"src":"395:77:40","symbolAliases":[{"foreign":{"id":7838,"name":"ECDSA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3565,"src":"404:5:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/access/Ownable2Step.sol","file":"@openzeppelin/contracts/access/Ownable2Step.sol","id":7841,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8323,"sourceUnit":1680,"src":"473:79:40","symbolAliases":[{"foreign":{"id":7840,"name":"Ownable2Step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1679,"src":"482:12:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/security/ReentrancyGuard.sol","file":"@openzeppelin/contracts/security/ReentrancyGuard.sol","id":7843,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8323,"sourceUnit":1770,"src":"553:87:40","symbolAliases":[{"foreign":{"id":7842,"name":"ReentrancyGuard","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1769,"src":"562:15:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7845,"name":"EIP712","nameLocations":["1155:6:40"],"nodeType":"IdentifierPath","referencedDeclaration":3769,"src":"1155:6:40"},"id":7846,"nodeType":"InheritanceSpecifier","src":"1155:6:40"},{"baseName":{"id":7847,"name":"Ownable2Step","nameLocations":["1163:12:40"],"nodeType":"IdentifierPath","referencedDeclaration":1679,"src":"1163:12:40"},"id":7848,"nodeType":"InheritanceSpecifier","src":"1163:12:40"},{"baseName":{"id":7849,"name":"ReentrancyGuard","nameLocations":["1177:15:40"],"nodeType":"IdentifierPath","referencedDeclaration":1769,"src":"1177:15:40"},"id":7850,"nodeType":"InheritanceSpecifier","src":"1177:15:40"}],"canonicalName":"SwapHelper","contractDependencies":[],"contractKind":"contract","documentation":{"id":7844,"nodeType":"StructuredDocumentation","src":"642:489:40","text":" @title SwapHelper\n @author Venus Protocol\n @notice Helper contract for executing multiple token operations atomically\n @dev This contract provides utilities for managing approvals,\n      and executing arbitrary calls in a single transaction. It supports\n      signature verification using EIP-712 for backend-authorized operations.\n      All functions except multicall are designed to be called internally via multicall.\n @custom:security-contact security@venus.io"},"fullyImplemented":true,"id":8322,"linearizedBaseContracts":[8322,1769,1679,1596,2644,3769,1704],"name":"SwapHelper","nameLocation":"1141:10:40","nodeType":"ContractDefinition","nodes":[{"global":false,"id":7854,"libraryName":{"id":7851,"name":"SafeERC20Upgradeable","nameLocations":["1205:20:40"],"nodeType":"IdentifierPath","referencedDeclaration":1029,"src":"1205:20:40"},"nodeType":"UsingForDirective","src":"1199:49:40","typeName":{"id":7853,"nodeType":"UserDefinedTypeName","pathNode":{"id":7852,"name":"IERC20Upgradeable","nameLocations":["1230:17:40"],"nodeType":"IdentifierPath","referencedDeclaration":617,"src":"1230:17:40"},"referencedDeclaration":617,"src":"1230:17:40","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}}},{"global":false,"id":7857,"libraryName":{"id":7855,"name":"AddressUpgradeable","nameLocations":["1259:18:40"],"nodeType":"IdentifierPath","referencedDeclaration":1359,"src":"1259:18:40"},"nodeType":"UsingForDirective","src":"1253:37:40","typeName":{"id":7856,"name":"address","nodeType":"ElementaryTypeName","src":"1282:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"constant":true,"documentation":{"id":7858,"nodeType":"StructuredDocumentation","src":"1296:176:40","text":"@notice EIP-712 typehash for Multicall struct used in signature verification\n @dev keccak256(\"Multicall(address caller,bytes[] calls,uint256 deadline,bytes32 salt)\")"},"id":7863,"mutability":"constant","name":"MULTICALL_TYPEHASH","nameLocation":"1503:18:40","nodeType":"VariableDeclaration","scope":8322,"src":"1477:137:40","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7859,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1477:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"4d756c746963616c6c28616464726573732063616c6c65722c62797465735b5d2063616c6c732c75696e7432353620646561646c696e652c627974657333322073616c7429","id":7861,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1542:71:40","typeDescriptions":{"typeIdentifier":"t_stringliteral_0c545221cb71dea46b10349167d787bba14b050610e9eab8d78f64fe47b58136","typeString":"literal_string \"Multicall(address caller,bytes[] calls,uint256 deadline,bytes32 salt)\""},"value":"Multicall(address caller,bytes[] calls,uint256 deadline,bytes32 salt)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_0c545221cb71dea46b10349167d787bba14b050610e9eab8d78f64fe47b58136","typeString":"literal_string \"Multicall(address caller,bytes[] calls,uint256 deadline,bytes32 salt)\""}],"id":7860,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1532:9:40","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1532:82:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"documentation":{"id":7864,"nodeType":"StructuredDocumentation","src":"1621:126:40","text":"@notice Address authorized to sign multicall operations\n @dev Can be updated by contract owner via setBackendSigner"},"functionSelector":"65d65e86","id":7866,"mutability":"mutable","name":"backendSigner","nameLocation":"1767:13:40","nodeType":"VariableDeclaration","scope":8322,"src":"1752:28:40","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7865,"name":"address","nodeType":"ElementaryTypeName","src":"1752:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"documentation":{"id":7867,"nodeType":"StructuredDocumentation","src":"1787:122:40","text":"@notice Mapping to track used salts for replay protection\n @dev Maps salt => bool to prevent reuse of same salt"},"functionSelector":"0b0fdb3d","id":7871,"mutability":"mutable","name":"usedSalts","nameLocation":"1946:9:40","nodeType":"VariableDeclaration","scope":8322,"src":"1914:41:40","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"},"typeName":{"id":7870,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":7868,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1922:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"1914:24:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":7869,"name":"bool","nodeType":"ElementaryTypeName","src":"1933:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"documentation":{"id":7872,"nodeType":"StructuredDocumentation","src":"1962:127:40","text":"@notice Error thrown when transaction deadline has passed\n @dev Emitted when block.timestamp > deadline in multicall"},"errorSelector":"b08ce5b3","id":7874,"name":"DeadlineReached","nameLocation":"2100:15:40","nodeType":"ErrorDefinition","parameters":{"id":7873,"nodeType":"ParameterList","parameters":[],"src":"2115:2:40"},"src":"2094:24:40"},{"documentation":{"id":7875,"nodeType":"StructuredDocumentation","src":"2124:129:40","text":"@notice Error thrown when signature verification fails\n @dev Emitted when recovered signer doesn't match backendSigner"},"errorSelector":"82b42900","id":7877,"name":"Unauthorized","nameLocation":"2264:12:40","nodeType":"ErrorDefinition","parameters":{"id":7876,"nodeType":"ParameterList","parameters":[],"src":"2276:2:40"},"src":"2258:21:40"},{"documentation":{"id":7878,"nodeType":"StructuredDocumentation","src":"2285:132:40","text":"@notice Error thrown when zero address is provided as parameter\n @dev Used in constructor and setBackendSigner validation"},"errorSelector":"d92e233d","id":7880,"name":"ZeroAddress","nameLocation":"2428:11:40","nodeType":"ErrorDefinition","parameters":{"id":7879,"nodeType":"ParameterList","parameters":[],"src":"2439:2:40"},"src":"2422:20:40"},{"documentation":{"id":7881,"nodeType":"StructuredDocumentation","src":"2448:133:40","text":"@notice Error thrown when salt has already been used\n @dev Prevents replay attacks by ensuring each salt is used only once"},"errorSelector":"0ced3043","id":7883,"name":"SaltAlreadyUsed","nameLocation":"2592:15:40","nodeType":"ErrorDefinition","parameters":{"id":7882,"nodeType":"ParameterList","parameters":[],"src":"2607:2:40"},"src":"2586:24:40"},{"documentation":{"id":7884,"nodeType":"StructuredDocumentation","src":"2616:126:40","text":"@notice Error thrown when caller is not authorized\n @dev Only owner or contract itself can call protected functions"},"errorSelector":"c183bcef","id":7886,"name":"CallerNotAuthorized","nameLocation":"2753:19:40","nodeType":"ErrorDefinition","parameters":{"id":7885,"nodeType":"ParameterList","parameters":[],"src":"2772:2:40"},"src":"2747:28:40"},{"documentation":{"id":7887,"nodeType":"StructuredDocumentation","src":"2781:124:40","text":"@notice Error thrown when no calls are provided to multicall\n @dev Emitted when calls array is empty in multicall"},"errorSelector":"79cc2d22","id":7889,"name":"NoCallsProvided","nameLocation":"2916:15:40","nodeType":"ErrorDefinition","parameters":{"id":7888,"nodeType":"ParameterList","parameters":[],"src":"2931:2:40"},"src":"2910:24:40"},{"documentation":{"id":7890,"nodeType":"StructuredDocumentation","src":"2940:143:40","text":"@notice Error thrown when signature is missing but required\n @dev Emitted when signature length is zero but verification is expected"},"errorSelector":"59b1c034","id":7892,"name":"MissingSignature","nameLocation":"3094:16:40","nodeType":"ErrorDefinition","parameters":{"id":7891,"nodeType":"ParameterList","parameters":[],"src":"3110:2:40"},"src":"3088:25:40"},{"anonymous":false,"documentation":{"id":7893,"nodeType":"StructuredDocumentation","src":"3119:165:40","text":"@notice Event emitted when backend signer is updated\n @param oldSigner Previous backend signer address\n @param newSigner New backend signer address"},"eventSelector":"93f9d0472cb0fc12887bf8f1f15cc7a197a5acd122ab23b8dcc25de0191e0d5e","id":7899,"name":"BackendSignerUpdated","nameLocation":"3295:20:40","nodeType":"EventDefinition","parameters":{"id":7898,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7895,"indexed":true,"mutability":"mutable","name":"oldSigner","nameLocation":"3332:9:40","nodeType":"VariableDeclaration","scope":7899,"src":"3316:25:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7894,"name":"address","nodeType":"ElementaryTypeName","src":"3316:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7897,"indexed":true,"mutability":"mutable","name":"newSigner","nameLocation":"3359:9:40","nodeType":"VariableDeclaration","scope":7899,"src":"3343:25:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7896,"name":"address","nodeType":"ElementaryTypeName","src":"3343:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3315:54:40"},"src":"3289:81:40"},{"anonymous":false,"documentation":{"id":7900,"nodeType":"StructuredDocumentation","src":"3376:306:40","text":"@notice Event emitted when multicall is successfully executed\n @param caller Address that initiated the multicall\n @param callsCount Number of calls executed in the batch\n @param deadline Deadline timestamp used for the operation\n @param salt Salt used for replay protection"},"eventSelector":"704d392ae0677a1e26b4358b06346bfa8e93d60615e56c3764c867b35c147463","id":7910,"name":"MulticallExecuted","nameLocation":"3693:17:40","nodeType":"EventDefinition","parameters":{"id":7909,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7902,"indexed":true,"mutability":"mutable","name":"caller","nameLocation":"3727:6:40","nodeType":"VariableDeclaration","scope":7910,"src":"3711:22:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7901,"name":"address","nodeType":"ElementaryTypeName","src":"3711:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7904,"indexed":false,"mutability":"mutable","name":"callsCount","nameLocation":"3743:10:40","nodeType":"VariableDeclaration","scope":7910,"src":"3735:18:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7903,"name":"uint256","nodeType":"ElementaryTypeName","src":"3735:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7906,"indexed":false,"mutability":"mutable","name":"deadline","nameLocation":"3763:8:40","nodeType":"VariableDeclaration","scope":7910,"src":"3755:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7905,"name":"uint256","nodeType":"ElementaryTypeName","src":"3755:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7908,"indexed":false,"mutability":"mutable","name":"salt","nameLocation":"3781:4:40","nodeType":"VariableDeclaration","scope":7910,"src":"3773:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7907,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3773:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3710:76:40"},"src":"3687:100:40"},{"anonymous":false,"documentation":{"id":7911,"nodeType":"StructuredDocumentation","src":"3793:194:40","text":"@notice Event emitted when tokens are swept from the contract\n @param token Address of the token swept\n @param to Recipient address\n @param amount Amount of tokens swept"},"eventSelector":"7b09c29f9106defeccc9ac3b823f3aad0b470d120e5df7aed033b5c43a4bf718","id":7919,"name":"Swept","nameLocation":"3998:5:40","nodeType":"EventDefinition","parameters":{"id":7918,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7913,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"4020:5:40","nodeType":"VariableDeclaration","scope":7919,"src":"4004:21:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7912,"name":"address","nodeType":"ElementaryTypeName","src":"4004:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7915,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"4043:2:40","nodeType":"VariableDeclaration","scope":7919,"src":"4027:18:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7914,"name":"address","nodeType":"ElementaryTypeName","src":"4027:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7917,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"4055:6:40","nodeType":"VariableDeclaration","scope":7919,"src":"4047:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7916,"name":"uint256","nodeType":"ElementaryTypeName","src":"4047:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4003:59:40"},"src":"3992:71:40"},{"anonymous":false,"documentation":{"id":7920,"nodeType":"StructuredDocumentation","src":"4069:161:40","text":"@notice Event emitted when maximum approval is granted\n @param token Address of the token approved\n @param spender Address granted the approval"},"eventSelector":"c98957213fcf2b4a542a2f88d854c847b00e87d84fc4a7e66a009196f1cf2240","id":7926,"name":"ApprovedMax","nameLocation":"4241:11:40","nodeType":"EventDefinition","parameters":{"id":7925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7922,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"4269:5:40","nodeType":"VariableDeclaration","scope":7926,"src":"4253:21:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7921,"name":"address","nodeType":"ElementaryTypeName","src":"4253:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7924,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"4292:7:40","nodeType":"VariableDeclaration","scope":7926,"src":"4276:23:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7923,"name":"address","nodeType":"ElementaryTypeName","src":"4276:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4252:48:40"},"src":"4235:66:40"},{"anonymous":false,"documentation":{"id":7927,"nodeType":"StructuredDocumentation","src":"4307:155:40","text":"@notice Event emitted when generic call is executed\n @param target Address of the contract called\n @param data Encoded function call data"},"eventSelector":"9bef3e449f25221aa6ab339a3eb184cfc318ea4ac85512f02e6c22b913324eb2","id":7933,"name":"GenericCallExecuted","nameLocation":"4473:19:40","nodeType":"EventDefinition","parameters":{"id":7932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7929,"indexed":true,"mutability":"mutable","name":"target","nameLocation":"4509:6:40","nodeType":"VariableDeclaration","scope":7933,"src":"4493:22:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7928,"name":"address","nodeType":"ElementaryTypeName","src":"4493:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7931,"indexed":false,"mutability":"mutable","name":"data","nameLocation":"4523:4:40","nodeType":"VariableDeclaration","scope":7933,"src":"4517:10:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7930,"name":"bytes","nodeType":"ElementaryTypeName","src":"4517:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4492:36:40"},"src":"4467:62:40"},{"body":{"id":7958,"nodeType":"Block","src":"4958:136:40","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7943,"name":"backendSigner_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7936,"src":"4972:14:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":7946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4998:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7945,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4990:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7944,"name":"address","nodeType":"ElementaryTypeName","src":"4990:7:40","typeDescriptions":{}}},"id":7947,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4990:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4972:28:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7953,"nodeType":"IfStatement","src":"4968:79:40","trueBody":{"id":7952,"nodeType":"Block","src":"5002:45:40","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7949,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7880,"src":"5023:11:40","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5023:13:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7951,"nodeType":"RevertStatement","src":"5016:20:40"}]}},{"expression":{"id":7956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7954,"name":"backendSigner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7866,"src":"5057:13:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7955,"name":"backendSigner_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7936,"src":"5073:14:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5057:30:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7957,"nodeType":"ExpressionStatement","src":"5057:30:40"}]},"documentation":{"id":7934,"nodeType":"StructuredDocumentation","src":"4535:357:40","text":"@notice Constructor\n @param backendSigner_ Address authorized to sign multicall operations\n @dev Initializes EIP-712 domain with name \"VenusSwap\" and version \"1\"\n @dev Transfers ownership to msg.sender\n @dev Reverts with ZeroAddress if parameter is address(0)\n @custom:error ZeroAddress if backendSigner_ is address(0)"},"id":7959,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"56656e757353776170","id":7939,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4940:11:40","typeDescriptions":{"typeIdentifier":"t_stringliteral_520e43d29dc649a52a88349813fd00d0f034d061699e99e50c1125ca8be4ee16","typeString":"literal_string \"VenusSwap\""},"value":"VenusSwap"},{"hexValue":"31","id":7940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4953:3:40","typeDescriptions":{"typeIdentifier":"t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6","typeString":"literal_string \"1\""},"value":"1"}],"id":7941,"kind":"baseConstructorSpecifier","modifierName":{"id":7938,"name":"EIP712","nameLocations":["4933:6:40"],"nodeType":"IdentifierPath","referencedDeclaration":3769,"src":"4933:6:40"},"nodeType":"ModifierInvocation","src":"4933:24:40"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":7937,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7936,"mutability":"mutable","name":"backendSigner_","nameLocation":"4917:14:40","nodeType":"VariableDeclaration","scope":7959,"src":"4909:22:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7935,"name":"address","nodeType":"ElementaryTypeName","src":"4909:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4908:24:40"},"returnParameters":{"id":7942,"nodeType":"ParameterList","parameters":[],"src":"4958:0:40"},"scope":8322,"src":"4897:197:40","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":7981,"nodeType":"Block","src":"5290:138:40","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7962,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5304:3:40","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5308:6:40","memberName":"sender","nodeType":"MemberAccess","src":"5304:10:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":7964,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1524,"src":"5318:5:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":7965,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5318:7:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5304:21:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7967,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5329:3:40","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5333:6:40","memberName":"sender","nodeType":"MemberAccess","src":"5329:10:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":7971,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5351:4:40","typeDescriptions":{"typeIdentifier":"t_contract$_SwapHelper_$8322","typeString":"contract SwapHelper"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapHelper_$8322","typeString":"contract SwapHelper"}],"id":7970,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5343:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7969,"name":"address","nodeType":"ElementaryTypeName","src":"5343:7:40","typeDescriptions":{}}},"id":7972,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5343:13:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5329:27:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5304:52:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7979,"nodeType":"IfStatement","src":"5300:111:40","trueBody":{"id":7978,"nodeType":"Block","src":"5358:53:40","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7975,"name":"CallerNotAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7886,"src":"5379:19:40","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5379:21:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7977,"nodeType":"RevertStatement","src":"5372:28:40"}]}},{"id":7980,"nodeType":"PlaceholderStatement","src":"5420:1:40"}]},"documentation":{"id":7960,"nodeType":"StructuredDocumentation","src":"5100:158:40","text":"@notice Modifier to restrict access to owner or contract itself\n @dev Reverts with CallerNotAuthorized if caller is neither owner nor this contract"},"id":7982,"name":"onlyOwnerOrSelf","nameLocation":"5272:15:40","nodeType":"ModifierDefinition","parameters":{"id":7961,"nodeType":"ParameterList","parameters":[],"src":"5287:2:40"},"src":"5263:165:40","virtual":false,"visibility":"internal"},{"body":{"id":8105,"nodeType":"Block","src":"7034:976:40","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7997,"name":"calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7986,"src":"7048:5:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":7998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7054:6:40","memberName":"length","nodeType":"MemberAccess","src":"7048:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7064:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7048:17:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8005,"nodeType":"IfStatement","src":"7044:72:40","trueBody":{"id":8004,"nodeType":"Block","src":"7067:49:40","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8001,"name":"NoCallsProvided","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7889,"src":"7088:15:40","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7088:17:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8003,"nodeType":"RevertStatement","src":"7081:24:40"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8006,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"7130:5:40","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":8007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7136:9:40","memberName":"timestamp","nodeType":"MemberAccess","src":"7130:15:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":8008,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7988,"src":"7148:8:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7130:26:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8014,"nodeType":"IfStatement","src":"7126:81:40","trueBody":{"id":8013,"nodeType":"Block","src":"7158:49:40","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8010,"name":"DeadlineReached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7874,"src":"7179:15:40","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8011,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7179:17:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8012,"nodeType":"RevertStatement","src":"7172:24:40"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8015,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7992,"src":"7221:9:40","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":8016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7231:6:40","memberName":"length","nodeType":"MemberAccess","src":"7221:16:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8017,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7241:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7221:21:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8023,"nodeType":"IfStatement","src":"7217:77:40","trueBody":{"id":8022,"nodeType":"Block","src":"7244:50:40","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8019,"name":"MissingSignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7892,"src":"7265:16:40","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7265:18:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8021,"nodeType":"RevertStatement","src":"7258:25:40"}]}},{"condition":{"baseExpression":{"id":8024,"name":"usedSalts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7871,"src":"7307:9:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"}},"id":8026,"indexExpression":{"id":8025,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7990,"src":"7317:4:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7307:15:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8031,"nodeType":"IfStatement","src":"7303:70:40","trueBody":{"id":8030,"nodeType":"Block","src":"7324:49:40","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8027,"name":"SaltAlreadyUsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7883,"src":"7345:15:40","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7345:17:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8029,"nodeType":"RevertStatement","src":"7338:24:40"}]}},{"expression":{"id":8036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8032,"name":"usedSalts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7871,"src":"7382:9:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"}},"id":8034,"indexExpression":{"id":8033,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7990,"src":"7392:4:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7382:15:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":8035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7400:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"7382:22:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8037,"nodeType":"ExpressionStatement","src":"7382:22:40"},{"assignments":[8039],"declarations":[{"constant":false,"id":8039,"mutability":"mutable","name":"digest","nameLocation":"7423:6:40","nodeType":"VariableDeclaration","scope":8105,"src":"7415:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8038,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7415:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":8047,"initialValue":{"arguments":[{"expression":{"id":8041,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7447:3:40","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7451:6:40","memberName":"sender","nodeType":"MemberAccess","src":"7447:10:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8043,"name":"calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7986,"src":"7459:5:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},{"id":8044,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7988,"src":"7466:8:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8045,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7990,"src":"7476:4:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":8040,"name":"_hashMulticall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8321,"src":"7432:14:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$_t_uint256_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (address,bytes calldata[] calldata,uint256,bytes32) view returns (bytes32)"}},"id":8046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7432:49:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"7415:66:40"},{"assignments":[8049],"declarations":[{"constant":false,"id":8049,"mutability":"mutable","name":"signer","nameLocation":"7499:6:40","nodeType":"VariableDeclaration","scope":8105,"src":"7491:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8048,"name":"address","nodeType":"ElementaryTypeName","src":"7491:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8055,"initialValue":{"arguments":[{"id":8052,"name":"digest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8039,"src":"7522:6:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8053,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7992,"src":"7530:9:40","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":8050,"name":"ECDSA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3565,"src":"7508:5:40","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ECDSA_$3565_$","typeString":"type(library ECDSA)"}},"id":8051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7514:7:40","memberName":"recover","nodeType":"MemberAccess","referencedDeclaration":3326,"src":"7508:13:40","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$","typeString":"function (bytes32,bytes memory) pure returns (address)"}},"id":8054,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7508:32:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"7491:49:40"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8056,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8049,"src":"7554:6:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8057,"name":"backendSigner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7866,"src":"7564:13:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7554:23:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8063,"nodeType":"IfStatement","src":"7550:75:40","trueBody":{"id":8062,"nodeType":"Block","src":"7579:46:40","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8059,"name":"Unauthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7877,"src":"7600:12:40","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7600:14:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8061,"nodeType":"RevertStatement","src":"7593:21:40"}]}},{"body":{"id":8094,"nodeType":"Block","src":"7678:251:40","statements":[{"assignments":[8076,8078],"declarations":[{"constant":false,"id":8076,"mutability":"mutable","name":"success","nameLocation":"7698:7:40","nodeType":"VariableDeclaration","scope":8094,"src":"7693:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8075,"name":"bool","nodeType":"ElementaryTypeName","src":"7693:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":8078,"mutability":"mutable","name":"returnData","nameLocation":"7720:10:40","nodeType":"VariableDeclaration","scope":8094,"src":"7707:23:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8077,"name":"bytes","nodeType":"ElementaryTypeName","src":"7707:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":8088,"initialValue":{"arguments":[{"baseExpression":{"id":8084,"name":"calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7986,"src":"7753:5:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":8086,"indexExpression":{"id":8085,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8065,"src":"7759:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7753:8:40","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"arguments":[{"id":8081,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7742:4:40","typeDescriptions":{"typeIdentifier":"t_contract$_SwapHelper_$8322","typeString":"contract SwapHelper"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapHelper_$8322","typeString":"contract SwapHelper"}],"id":8080,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7734:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8079,"name":"address","nodeType":"ElementaryTypeName","src":"7734:7:40","typeDescriptions":{}}},"id":8082,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7734:13:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7748:4:40","memberName":"call","nodeType":"MemberAccess","src":"7734:18:40","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":8087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7734:28:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7692:70:40"},{"condition":{"id":8090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7780:8:40","subExpression":{"id":8089,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8076,"src":"7781:7:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8093,"nodeType":"IfStatement","src":"7776:143:40","trueBody":{"id":8092,"nodeType":"Block","src":"7790:129:40","statements":[{"AST":{"nativeSrc":"7817:88:40","nodeType":"YulBlock","src":"7817:88:40","statements":[{"expression":{"arguments":[{"arguments":[{"name":"returnData","nativeSrc":"7850:10:40","nodeType":"YulIdentifier","src":"7850:10:40"},{"kind":"number","nativeSrc":"7862:4:40","nodeType":"YulLiteral","src":"7862:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"7846:3:40","nodeType":"YulIdentifier","src":"7846:3:40"},"nativeSrc":"7846:21:40","nodeType":"YulFunctionCall","src":"7846:21:40"},{"arguments":[{"name":"returnData","nativeSrc":"7875:10:40","nodeType":"YulIdentifier","src":"7875:10:40"}],"functionName":{"name":"mload","nativeSrc":"7869:5:40","nodeType":"YulIdentifier","src":"7869:5:40"},"nativeSrc":"7869:17:40","nodeType":"YulFunctionCall","src":"7869:17:40"}],"functionName":{"name":"revert","nativeSrc":"7839:6:40","nodeType":"YulIdentifier","src":"7839:6:40"},"nativeSrc":"7839:48:40","nodeType":"YulFunctionCall","src":"7839:48:40"},"nativeSrc":"7839:48:40","nodeType":"YulExpressionStatement","src":"7839:48:40"}]},"evmVersion":"cancun","externalReferences":[{"declaration":8078,"isOffset":false,"isSlot":false,"src":"7850:10:40","valueSize":1},{"declaration":8078,"isOffset":false,"isSlot":false,"src":"7875:10:40","valueSize":1}],"id":8091,"nodeType":"InlineAssembly","src":"7808:97:40"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8068,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8065,"src":"7655:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":8069,"name":"calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7986,"src":"7659:5:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":8070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7665:6:40","memberName":"length","nodeType":"MemberAccess","src":"7659:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7655:16:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8095,"initializationExpression":{"assignments":[8065],"declarations":[{"constant":false,"id":8065,"mutability":"mutable","name":"i","nameLocation":"7648:1:40","nodeType":"VariableDeclaration","scope":8095,"src":"7640:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8064,"name":"uint256","nodeType":"ElementaryTypeName","src":"7640:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8067,"initialValue":{"hexValue":"30","id":8066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7652:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"7640:13:40"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":8073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"7673:3:40","subExpression":{"id":8072,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8065,"src":"7673:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8074,"nodeType":"ExpressionStatement","src":"7673:3:40"},"nodeType":"ForStatement","src":"7635:294:40"},{"eventCall":{"arguments":[{"expression":{"id":8097,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7962:3:40","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7966:6:40","memberName":"sender","nodeType":"MemberAccess","src":"7962:10:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":8099,"name":"calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7986,"src":"7974:5:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":8100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7980:6:40","memberName":"length","nodeType":"MemberAccess","src":"7974:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8101,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7988,"src":"7988:8:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8102,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7990,"src":"7998:4:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":8096,"name":"MulticallExecuted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7910,"src":"7944:17:40","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes32_$returns$__$","typeString":"function (address,uint256,uint256,bytes32)"}},"id":8103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7944:59:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8104,"nodeType":"EmitStatement","src":"7939:64:40"}]},"documentation":{"id":7983,"nodeType":"StructuredDocumentation","src":"5434:1434:40","text":"@notice Multicall function to execute multiple calls in a single transaction.\n @param calls Array of encoded function calls to execute on this contract\n @param deadline Unix timestamp after which the transaction will revert\n @param salt Unique value to ensure this exact multicall can only be executed once\n @param signature EIP-712 signature from backend signer\n @dev All calls are executed atomically - if any call fails, entire transaction reverts\n @dev Calls must be to functions on this contract (address(this))\n @dev Protected by nonReentrant modifier to prevent reentrancy attacks\n @dev This function should be called as a part of a transaction that sends tokens to this contract and verifies if they received desired tokens after execution.\n @dev EOA that calls this function should not send tokens directly nor approve this contract to spend tokens on their behalf.\n @custom:event MulticallExecuted emitted upon successful execution\n @custom:security Only the contract itself can call sweep, approveMax, and genericCall\n @custom:error NoCallsProvided if calls array is empty\n @custom:error DeadlineReached if block.timestamp > deadline\n @custom:error SaltAlreadyUsed if salt has been used before\n @custom:error Unauthorized if signature verification fails\n @custom:error MissingSignature if signature is empty"},"functionSelector":"a0e06909","id":8106,"implemented":true,"kind":"function","modifiers":[{"id":7995,"kind":"modifierInvocation","modifierName":{"id":7994,"name":"nonReentrant","nameLocations":["7021:12:40"],"nodeType":"IdentifierPath","referencedDeclaration":1734,"src":"7021:12:40"},"nodeType":"ModifierInvocation","src":"7021:12:40"}],"name":"multicall","nameLocation":"6882:9:40","nodeType":"FunctionDefinition","parameters":{"id":7993,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7986,"mutability":"mutable","name":"calls","nameLocation":"6918:5:40","nodeType":"VariableDeclaration","scope":8106,"src":"6901:22:40","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":7984,"name":"bytes","nodeType":"ElementaryTypeName","src":"6901:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":7985,"nodeType":"ArrayTypeName","src":"6901:7:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":7988,"mutability":"mutable","name":"deadline","nameLocation":"6941:8:40","nodeType":"VariableDeclaration","scope":8106,"src":"6933:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7987,"name":"uint256","nodeType":"ElementaryTypeName","src":"6933:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7990,"mutability":"mutable","name":"salt","nameLocation":"6967:4:40","nodeType":"VariableDeclaration","scope":8106,"src":"6959:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7989,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6959:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7992,"mutability":"mutable","name":"signature","nameLocation":"6996:9:40","nodeType":"VariableDeclaration","scope":8106,"src":"6981:24:40","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7991,"name":"bytes","nodeType":"ElementaryTypeName","src":"6981:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6891:120:40"},"returnParameters":{"id":7996,"nodeType":"ParameterList","parameters":[],"src":"7034:0:40"},"scope":8322,"src":"6873:1137:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8127,"nodeType":"Block","src":"8706:90:40","statements":[{"expression":{"arguments":[{"id":8119,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8111,"src":"8736:4:40","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":8116,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8109,"src":"8716:6:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8723:12:40","memberName":"functionCall","nodeType":"MemberAccess","referencedDeclaration":1099,"src":"8716:19:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$attached_to$_t_address_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":8120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8716:25:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":8121,"nodeType":"ExpressionStatement","src":"8716:25:40"},{"eventCall":{"arguments":[{"id":8123,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8109,"src":"8776:6:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8124,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8111,"src":"8784:4:40","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":8122,"name":"GenericCallExecuted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7933,"src":"8756:19:40","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":8125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8756:33:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8126,"nodeType":"EmitStatement","src":"8751:38:40"}]},"documentation":{"id":8107,"nodeType":"StructuredDocumentation","src":"8016:602:40","text":"@notice Generic call function to execute a call to an arbitrary address\n @param target Address of the contract to call\n @param data Encoded function call data\n @dev This function can interact with any external contract\n @dev Should only be called via multicall for safety, but can be called directly by owner\n @custom:security Use with extreme caution - can call any contract with any data\n @custom:security Ensure proper validation of target and data in off-chain systems\n @custom:error CallerNotAuthorized if caller is not owner or contract itself"},"functionSelector":"4650c308","id":8128,"implemented":true,"kind":"function","modifiers":[{"id":8114,"kind":"modifierInvocation","modifierName":{"id":8113,"name":"onlyOwnerOrSelf","nameLocations":["8690:15:40"],"nodeType":"IdentifierPath","referencedDeclaration":7982,"src":"8690:15:40"},"nodeType":"ModifierInvocation","src":"8690:15:40"}],"name":"genericCall","nameLocation":"8632:11:40","nodeType":"FunctionDefinition","parameters":{"id":8112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8109,"mutability":"mutable","name":"target","nameLocation":"8652:6:40","nodeType":"VariableDeclaration","scope":8128,"src":"8644:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8108,"name":"address","nodeType":"ElementaryTypeName","src":"8644:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8111,"mutability":"mutable","name":"data","nameLocation":"8675:4:40","nodeType":"VariableDeclaration","scope":8128,"src":"8660:19:40","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":8110,"name":"bytes","nodeType":"ElementaryTypeName","src":"8660:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8643:37:40"},"returnParameters":{"id":8115,"nodeType":"ParameterList","parameters":[],"src":"8706:0:40"},"scope":8322,"src":"8623:173:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8191,"nodeType":"Block","src":"9456:300:40","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":8141,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8132,"src":"9478:5:40","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}],"id":8140,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9470:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8139,"name":"address","nodeType":"ElementaryTypeName","src":"9470:7:40","typeDescriptions":{}}},"id":8142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9470:14:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":8145,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9496:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8144,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9488:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8143,"name":"address","nodeType":"ElementaryTypeName","src":"9488:7:40","typeDescriptions":{}}},"id":8146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9488:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9470:28:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8148,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8134,"src":"9502:2:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":8151,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9516:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8150,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9508:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8149,"name":"address","nodeType":"ElementaryTypeName","src":"9508:7:40","typeDescriptions":{}}},"id":8152,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9508:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9502:16:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9470:48:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8159,"nodeType":"IfStatement","src":"9466:99:40","trueBody":{"id":8158,"nodeType":"Block","src":"9520:45:40","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8155,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7880,"src":"9541:11:40","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8156,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9541:13:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8157,"nodeType":"RevertStatement","src":"9534:20:40"}]}},{"assignments":[8161],"declarations":[{"constant":false,"id":8161,"mutability":"mutable","name":"amount","nameLocation":"9582:6:40","nodeType":"VariableDeclaration","scope":8191,"src":"9574:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8160,"name":"uint256","nodeType":"ElementaryTypeName","src":"9574:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8169,"initialValue":{"arguments":[{"arguments":[{"id":8166,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"9615:4:40","typeDescriptions":{"typeIdentifier":"t_contract$_SwapHelper_$8322","typeString":"contract SwapHelper"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapHelper_$8322","typeString":"contract SwapHelper"}],"id":8165,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9607:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8164,"name":"address","nodeType":"ElementaryTypeName","src":"9607:7:40","typeDescriptions":{}}},"id":8167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9607:13:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8162,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8132,"src":"9591:5:40","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"id":8163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9597:9:40","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":574,"src":"9591:15:40","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":8168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9591:30:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9574:47:40"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8170,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8161,"src":"9635:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8171,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9644:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9635:10:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8181,"nodeType":"IfStatement","src":"9631:71:40","trueBody":{"id":8180,"nodeType":"Block","src":"9647:55:40","statements":[{"expression":{"arguments":[{"id":8176,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8134,"src":"9680:2:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8177,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8161,"src":"9684:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8173,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8132,"src":"9661:5:40","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"id":8175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9667:12:40","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":686,"src":"9661:18:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$617_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20Upgradeable_$617_$","typeString":"function (contract IERC20Upgradeable,address,uint256)"}},"id":8178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9661:30:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8179,"nodeType":"ExpressionStatement","src":"9661:30:40"}]}},{"eventCall":{"arguments":[{"arguments":[{"id":8185,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8132,"src":"9730:5:40","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}],"id":8184,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9722:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8183,"name":"address","nodeType":"ElementaryTypeName","src":"9722:7:40","typeDescriptions":{}}},"id":8186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9722:14:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8187,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8134,"src":"9738:2:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8188,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8161,"src":"9742:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8182,"name":"Swept","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7919,"src":"9716:5:40","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8189,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9716:33:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8190,"nodeType":"EmitStatement","src":"9711:38:40"}]},"documentation":{"id":8129,"nodeType":"StructuredDocumentation","src":"8802:572:40","text":"@notice Sweeps entire balance of an ERC-20 token to a specified address\n @param token ERC-20 token contract to sweep\n @param to Recipient address for the swept tokens\n @dev Transfers the entire balance of token held by this contract\n @dev Uses SafeERC20 for safe transfer operations\n @dev Should only be called via multicall for safety, but can be called directly by owner\n @custom:error CallerNotAuthorized if caller is not owner or contract itself\n @custom:error ZeroAddress if token is address(0) or to is address(0)"},"functionSelector":"b8dc491b","id":8192,"implemented":true,"kind":"function","modifiers":[{"id":8137,"kind":"modifierInvocation","modifierName":{"id":8136,"name":"onlyOwnerOrSelf","nameLocations":["9440:15:40"],"nodeType":"IdentifierPath","referencedDeclaration":7982,"src":"9440:15:40"},"nodeType":"ModifierInvocation","src":"9440:15:40"}],"name":"sweep","nameLocation":"9388:5:40","nodeType":"FunctionDefinition","parameters":{"id":8135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8132,"mutability":"mutable","name":"token","nameLocation":"9412:5:40","nodeType":"VariableDeclaration","scope":8192,"src":"9394:23:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"},"typeName":{"id":8131,"nodeType":"UserDefinedTypeName","pathNode":{"id":8130,"name":"IERC20Upgradeable","nameLocations":["9394:17:40"],"nodeType":"IdentifierPath","referencedDeclaration":617,"src":"9394:17:40"},"referencedDeclaration":617,"src":"9394:17:40","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":8134,"mutability":"mutable","name":"to","nameLocation":"9427:2:40","nodeType":"VariableDeclaration","scope":8192,"src":"9419:10:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8133,"name":"address","nodeType":"ElementaryTypeName","src":"9419:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9393:37:40"},"returnParameters":{"id":8138,"nodeType":"ParameterList","parameters":[],"src":"9456:0:40"},"scope":8322,"src":"9379:377:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8222,"nodeType":"Block","src":"10446:114:40","statements":[{"expression":{"arguments":[{"id":8206,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8198,"src":"10475:7:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"arguments":[{"id":8209,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10489:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":8208,"name":"uint256","nodeType":"ElementaryTypeName","src":"10489:7:40","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":8207,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10484:4:40","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8210,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10484:13:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":8211,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10498:3:40","memberName":"max","nodeType":"MemberAccess","src":"10484:17:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8203,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8196,"src":"10456:5:40","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"id":8205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10462:12:40","memberName":"forceApprove","nodeType":"MemberAccess","referencedDeclaration":886,"src":"10456:18:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$617_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20Upgradeable_$617_$","typeString":"function (contract IERC20Upgradeable,address,uint256)"}},"id":8212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10456:46:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8213,"nodeType":"ExpressionStatement","src":"10456:46:40"},{"eventCall":{"arguments":[{"arguments":[{"id":8217,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8196,"src":"10537:5:40","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}],"id":8216,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10529:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8215,"name":"address","nodeType":"ElementaryTypeName","src":"10529:7:40","typeDescriptions":{}}},"id":8218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10529:14:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8219,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8198,"src":"10545:7:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8214,"name":"ApprovedMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7926,"src":"10517:11:40","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":8220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10517:36:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8221,"nodeType":"EmitStatement","src":"10512:41:40"}]},"documentation":{"id":8193,"nodeType":"StructuredDocumentation","src":"9762:592:40","text":"@notice Approves maximum amount of an ERC-20 token to a specified spender\n @param token ERC-20 token contract to approve\n @param spender Address to grant approval to\n @dev Sets approval to type(uint256).max for unlimited spending\n @dev Uses forceApprove to handle tokens that require 0 approval first\n @dev Should only be called via multicall for safety, but can be called directly by owner\n @custom:security Grants unlimited approval - ensure spender is trusted\n @custom:error CallerNotAuthorized if caller is not owner or contract itself"},"functionSelector":"aec42a17","id":8223,"implemented":true,"kind":"function","modifiers":[{"id":8201,"kind":"modifierInvocation","modifierName":{"id":8200,"name":"onlyOwnerOrSelf","nameLocations":["10430:15:40"],"nodeType":"IdentifierPath","referencedDeclaration":7982,"src":"10430:15:40"},"nodeType":"ModifierInvocation","src":"10430:15:40"}],"name":"approveMax","nameLocation":"10368:10:40","nodeType":"FunctionDefinition","parameters":{"id":8199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8196,"mutability":"mutable","name":"token","nameLocation":"10397:5:40","nodeType":"VariableDeclaration","scope":8223,"src":"10379:23:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"},"typeName":{"id":8195,"nodeType":"UserDefinedTypeName","pathNode":{"id":8194,"name":"IERC20Upgradeable","nameLocations":["10379:17:40"],"nodeType":"IdentifierPath","referencedDeclaration":617,"src":"10379:17:40"},"referencedDeclaration":617,"src":"10379:17:40","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Upgradeable_$617","typeString":"contract IERC20Upgradeable"}},"visibility":"internal"},{"constant":false,"id":8198,"mutability":"mutable","name":"spender","nameLocation":"10412:7:40","nodeType":"VariableDeclaration","scope":8223,"src":"10404:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8197,"name":"address","nodeType":"ElementaryTypeName","src":"10404:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10378:42:40"},"returnParameters":{"id":8202,"nodeType":"ParameterList","parameters":[],"src":"10446:0:40"},"scope":8322,"src":"10359:201:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8251,"nodeType":"Block","src":"11033:187:40","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8231,"name":"newSigner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8226,"src":"11047:9:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":8234,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11068:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8233,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11060:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8232,"name":"address","nodeType":"ElementaryTypeName","src":"11060:7:40","typeDescriptions":{}}},"id":8235,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11060:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11047:23:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8241,"nodeType":"IfStatement","src":"11043:74:40","trueBody":{"id":8240,"nodeType":"Block","src":"11072:45:40","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8237,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7880,"src":"11093:11:40","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11093:13:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8239,"nodeType":"RevertStatement","src":"11086:20:40"}]}},{"eventCall":{"arguments":[{"id":8243,"name":"backendSigner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7866,"src":"11153:13:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8244,"name":"newSigner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8226,"src":"11168:9:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8242,"name":"BackendSignerUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7899,"src":"11132:20:40","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":8245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11132:46:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8246,"nodeType":"EmitStatement","src":"11127:51:40"},{"expression":{"id":8249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8247,"name":"backendSigner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7866,"src":"11188:13:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8248,"name":"newSigner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8226,"src":"11204:9:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11188:25:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8250,"nodeType":"ExpressionStatement","src":"11188:25:40"}]},"documentation":{"id":8224,"nodeType":"StructuredDocumentation","src":"10566:398:40","text":"@notice Updates the backend signer address\n @param newSigner New backend signer address\n @dev Only callable by contract owner\n @dev Reverts with ZeroAddress if newSigner is address(0)\n @dev Emits BackendSignerUpdated event\n @custom:error ZeroAddress if newSigner is address(0)\n @custom:error Ownable: caller is not the owner (from OpenZeppelin Ownable)"},"functionSelector":"36f95670","id":8252,"implemented":true,"kind":"function","modifiers":[{"id":8229,"kind":"modifierInvocation","modifierName":{"id":8228,"name":"onlyOwner","nameLocations":["11023:9:40"],"nodeType":"IdentifierPath","referencedDeclaration":1515,"src":"11023:9:40"},"nodeType":"ModifierInvocation","src":"11023:9:40"}],"name":"setBackendSigner","nameLocation":"10978:16:40","nodeType":"FunctionDefinition","parameters":{"id":8227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8226,"mutability":"mutable","name":"newSigner","nameLocation":"11003:9:40","nodeType":"VariableDeclaration","scope":8252,"src":"10995:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8225,"name":"address","nodeType":"ElementaryTypeName","src":"10995:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10994:19:40"},"returnParameters":{"id":8230,"nodeType":"ParameterList","parameters":[],"src":"11033:0:40"},"scope":8322,"src":"10969:251:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8320,"nodeType":"Block","src":"11922:407:40","statements":[{"assignments":[8271],"declarations":[{"constant":false,"id":8271,"mutability":"mutable","name":"callHashes","nameLocation":"11949:10:40","nodeType":"VariableDeclaration","scope":8320,"src":"11932:27:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":8269,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11932:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":8270,"nodeType":"ArrayTypeName","src":"11932:9:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":8278,"initialValue":{"arguments":[{"expression":{"id":8275,"name":"calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8258,"src":"11976:5:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":8276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11982:6:40","memberName":"length","nodeType":"MemberAccess","src":"11976:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8274,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"11962:13:40","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bytes32[] memory)"},"typeName":{"baseType":{"id":8272,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11966:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":8273,"nodeType":"ArrayTypeName","src":"11966:9:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}}},"id":8277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11962:27:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"11932:57:40"},{"body":{"id":8300,"nodeType":"Block","src":"12042:60:40","statements":[{"expression":{"id":8298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8290,"name":"callHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8271,"src":"12056:10:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":8292,"indexExpression":{"id":8291,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8280,"src":"12067:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12056:13:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":8294,"name":"calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8258,"src":"12082:5:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":8296,"indexExpression":{"id":8295,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8280,"src":"12088:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12082:8:40","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":8293,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"12072:9:40","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":8297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12072:19:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"12056:35:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":8299,"nodeType":"ExpressionStatement","src":"12056:35:40"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8283,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8280,"src":"12019:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":8284,"name":"calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8258,"src":"12023:5:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":8285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12029:6:40","memberName":"length","nodeType":"MemberAccess","src":"12023:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12019:16:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8301,"initializationExpression":{"assignments":[8280],"declarations":[{"constant":false,"id":8280,"mutability":"mutable","name":"i","nameLocation":"12012:1:40","nodeType":"VariableDeclaration","scope":8301,"src":"12004:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8279,"name":"uint256","nodeType":"ElementaryTypeName","src":"12004:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8282,"initialValue":{"hexValue":"30","id":8281,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12016:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12004:13:40"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":8288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"12037:3:40","subExpression":{"id":8287,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8280,"src":"12037:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8289,"nodeType":"ExpressionStatement","src":"12037:3:40"},"nodeType":"ForStatement","src":"11999:103:40"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":8306,"name":"MULTICALL_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7863,"src":"12206:18:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8307,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8255,"src":"12226:6:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"id":8311,"name":"callHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8271,"src":"12261:10:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}],"expression":{"id":8309,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"12244:3:40","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8310,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12248:12:40","memberName":"encodePacked","nodeType":"MemberAccess","src":"12244:16:40","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":8312,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12244:28:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8308,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"12234:9:40","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":8313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12234:39:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8314,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8260,"src":"12275:8:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8315,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8262,"src":"12285:4:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":8304,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"12195:3:40","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8305,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12199:6:40","memberName":"encode","nodeType":"MemberAccess","src":"12195:10:40","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":8316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12195:95:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8303,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"12164:9:40","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":8317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12164:144:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":8302,"name":"_hashTypedDataV4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3721,"src":"12130:16:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":8318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12130:192:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":8266,"id":8319,"nodeType":"Return","src":"12111:211:40"}]},"documentation":{"id":8253,"nodeType":"StructuredDocumentation","src":"11226:525:40","text":"@notice Produces an EIP-712 digest of the multicall data\n @param caller Address of the authorized caller\n @param calls Array of encoded function calls\n @param deadline Unix timestamp deadline\n @param salt Unique value to ensure replay protection\n @return EIP-712 typed data hash for signature verification\n @dev Hashes each call individually, then encodes with MULTICALL_TYPEHASH, caller, deadline, and salt\n @dev Uses EIP-712 _hashTypedDataV4 for domain-separated hashing"},"id":8321,"implemented":true,"kind":"function","modifiers":[],"name":"_hashMulticall","nameLocation":"11765:14:40","nodeType":"FunctionDefinition","parameters":{"id":8263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8255,"mutability":"mutable","name":"caller","nameLocation":"11797:6:40","nodeType":"VariableDeclaration","scope":8321,"src":"11789:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8254,"name":"address","nodeType":"ElementaryTypeName","src":"11789:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8258,"mutability":"mutable","name":"calls","nameLocation":"11830:5:40","nodeType":"VariableDeclaration","scope":8321,"src":"11813:22:40","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":8256,"name":"bytes","nodeType":"ElementaryTypeName","src":"11813:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":8257,"nodeType":"ArrayTypeName","src":"11813:7:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":8260,"mutability":"mutable","name":"deadline","nameLocation":"11853:8:40","nodeType":"VariableDeclaration","scope":8321,"src":"11845:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8259,"name":"uint256","nodeType":"ElementaryTypeName","src":"11845:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8262,"mutability":"mutable","name":"salt","nameLocation":"11879:4:40","nodeType":"VariableDeclaration","scope":8321,"src":"11871:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8261,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11871:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"11779:110:40"},"returnParameters":{"id":8266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8265,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8321,"src":"11913:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8264,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11913:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"11912:9:40"},"scope":8322,"src":"11756:573:40","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":8323,"src":"1132:11199:40","usedErrors":[2657,2659,7874,7877,7880,7883,7886,7889,7892],"usedEvents":[1497,1610,1684,7899,7910,7919,7926,7933]}],"src":"41:12291:40"},"id":40},"contracts/hardhat-dependency-compiler/hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/ProxyAdmin.sol":{"ast":{"absolutePath":"contracts/hardhat-dependency-compiler/hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/ProxyAdmin.sol","exportedSymbols":{"Address":[9481],"Context":[9503],"ERC1967Proxy":[8497],"ERC1967Upgrade":[8815],"IBeacon":[8877],"IERC1822Proxiable":[8444],"Ownable":[8434],"Proxy":[8867],"ProxyAdmin":[9022],"StorageSlot":[9563],"TransparentUpgradeableProxy":[9186]},"id":8326,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":8324,"literals":["solidity",">","0.0",".0"],"nodeType":"PragmaDirective","src":"39:23:41"},{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/ProxyAdmin.sol","file":"hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/ProxyAdmin.sol","id":8325,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8326,"sourceUnit":9023,"src":"63:79:41","symbolAliases":[],"unitAlias":""}],"src":"39:104:41"},"id":41},"contracts/hardhat-dependency-compiler/hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol":{"ast":{"absolutePath":"contracts/hardhat-dependency-compiler/hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol","exportedSymbols":{"Address":[9481],"ERC1967Proxy":[8497],"ERC1967Upgrade":[8815],"IBeacon":[8877],"IERC1822Proxiable":[8444],"OptimizedTransparentUpgradeableProxy":[9738],"Proxy":[8867],"StorageSlot":[9563]},"id":8329,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":8327,"literals":["solidity",">","0.0",".0"],"nodeType":"PragmaDirective","src":"39:23:42"},{"absolutePath":"hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol","file":"hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol","id":8328,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8329,"sourceUnit":9739,"src":"63:80:42","symbolAliases":[],"unitAlias":""}],"src":"39:105:42"},"id":42},"hardhat-deploy/solc_0.8/openzeppelin/access/Ownable.sol":{"ast":{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/access/Ownable.sol","exportedSymbols":{"Context":[9503],"Ownable":[8434]},"id":8435,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8330,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"87:23:43"},{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/utils/Context.sol","file":"../utils/Context.sol","id":8331,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8435,"sourceUnit":9504,"src":"112:30:43","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":8333,"name":"Context","nameLocations":["668:7:43"],"nodeType":"IdentifierPath","referencedDeclaration":9503,"src":"668:7:43"},"id":8334,"nodeType":"InheritanceSpecifier","src":"668:7:43"}],"canonicalName":"Ownable","contractDependencies":[],"contractKind":"contract","documentation":{"id":8332,"nodeType":"StructuredDocumentation","src":"144:494:43","text":" @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 By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\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."},"fullyImplemented":true,"id":8434,"linearizedBaseContracts":[8434,9503],"name":"Ownable","nameLocation":"657:7:43","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":8336,"mutability":"mutable","name":"_owner","nameLocation":"698:6:43","nodeType":"VariableDeclaration","scope":8434,"src":"682:22:43","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8335,"name":"address","nodeType":"ElementaryTypeName","src":"682:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"anonymous":false,"eventSelector":"8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","id":8342,"name":"OwnershipTransferred","nameLocation":"717:20:43","nodeType":"EventDefinition","parameters":{"id":8341,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8338,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"754:13:43","nodeType":"VariableDeclaration","scope":8342,"src":"738:29:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8337,"name":"address","nodeType":"ElementaryTypeName","src":"738:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8340,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"785:8:43","nodeType":"VariableDeclaration","scope":8342,"src":"769:24:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8339,"name":"address","nodeType":"ElementaryTypeName","src":"769:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"737:57:43"},"src":"711:84:43"},{"body":{"id":8352,"nodeType":"Block","src":"932:49:43","statements":[{"expression":{"arguments":[{"id":8349,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8345,"src":"961:12:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8348,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8433,"src":"942:18:43","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":8350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"942:32:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8351,"nodeType":"ExpressionStatement","src":"942:32:43"}]},"documentation":{"id":8343,"nodeType":"StructuredDocumentation","src":"801:91:43","text":" @dev Initializes the contract setting the deployer as the initial owner."},"id":8353,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":8346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8345,"mutability":"mutable","name":"initialOwner","nameLocation":"918:12:43","nodeType":"VariableDeclaration","scope":8353,"src":"910:20:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8344,"name":"address","nodeType":"ElementaryTypeName","src":"910:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"909:22:43"},"returnParameters":{"id":8347,"nodeType":"ParameterList","parameters":[],"src":"932:0:43"},"scope":8434,"src":"897:84:43","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8361,"nodeType":"Block","src":"1112:30:43","statements":[{"expression":{"id":8359,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8336,"src":"1129:6:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":8358,"id":8360,"nodeType":"Return","src":"1122:13:43"}]},"documentation":{"id":8354,"nodeType":"StructuredDocumentation","src":"987:65:43","text":" @dev Returns the address of the current owner."},"functionSelector":"8da5cb5b","id":8362,"implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"1066:5:43","nodeType":"FunctionDefinition","parameters":{"id":8355,"nodeType":"ParameterList","parameters":[],"src":"1071:2:43"},"returnParameters":{"id":8358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8357,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8362,"src":"1103:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8356,"name":"address","nodeType":"ElementaryTypeName","src":"1103:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1102:9:43"},"scope":8434,"src":"1057:85:43","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":8375,"nodeType":"Block","src":"1251:96:43","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":8366,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8362,"src":"1269:5:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":8367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1269:7:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":8368,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9493,"src":"1280:10:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":8369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1280:12:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1269:23:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","id":8371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1294:34:43","typeDescriptions":{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""},"value":"Ownable: caller is not the owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""}],"id":8365,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1261:7:43","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1261:68:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8373,"nodeType":"ExpressionStatement","src":"1261:68:43"},{"id":8374,"nodeType":"PlaceholderStatement","src":"1339:1:43"}]},"documentation":{"id":8363,"nodeType":"StructuredDocumentation","src":"1148:77:43","text":" @dev Throws if called by any account other than the owner."},"id":8376,"name":"onlyOwner","nameLocation":"1239:9:43","nodeType":"ModifierDefinition","parameters":{"id":8364,"nodeType":"ParameterList","parameters":[],"src":"1248:2:43"},"src":"1230:117:43","virtual":false,"visibility":"internal"},{"body":{"id":8389,"nodeType":"Block","src":"1743:47:43","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":8385,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1780:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8384,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1772:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8383,"name":"address","nodeType":"ElementaryTypeName","src":"1772:7:43","typeDescriptions":{}}},"id":8386,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1772:10:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8382,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8433,"src":"1753:18:43","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":8387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1753:30:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8388,"nodeType":"ExpressionStatement","src":"1753:30:43"}]},"documentation":{"id":8377,"nodeType":"StructuredDocumentation","src":"1353:331:43","text":" @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 NOTE: Renouncing ownership will leave the contract without an owner,\n thereby removing any functionality that is only available to the owner."},"functionSelector":"715018a6","id":8390,"implemented":true,"kind":"function","modifiers":[{"id":8380,"kind":"modifierInvocation","modifierName":{"id":8379,"name":"onlyOwner","nameLocations":["1733:9:43"],"nodeType":"IdentifierPath","referencedDeclaration":8376,"src":"1733:9:43"},"nodeType":"ModifierInvocation","src":"1733:9:43"}],"name":"renounceOwnership","nameLocation":"1698:17:43","nodeType":"FunctionDefinition","parameters":{"id":8378,"nodeType":"ParameterList","parameters":[],"src":"1715:2:43"},"returnParameters":{"id":8381,"nodeType":"ParameterList","parameters":[],"src":"1743:0:43"},"scope":8434,"src":"1689:101:43","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":8412,"nodeType":"Block","src":"2009:128:43","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8399,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8393,"src":"2027:8:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":8402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2047:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8401,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2039:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8400,"name":"address","nodeType":"ElementaryTypeName","src":"2039:7:43","typeDescriptions":{}}},"id":8403,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2039:10:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2027:22:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373","id":8405,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2051:40:43","typeDescriptions":{"typeIdentifier":"t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","typeString":"literal_string \"Ownable: new owner is the zero address\""},"value":"Ownable: new owner is the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","typeString":"literal_string \"Ownable: new owner is the zero address\""}],"id":8398,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2019:7:43","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8406,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2019:73:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8407,"nodeType":"ExpressionStatement","src":"2019:73:43"},{"expression":{"arguments":[{"id":8409,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8393,"src":"2121:8:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8408,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8433,"src":"2102:18:43","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":8410,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2102:28:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8411,"nodeType":"ExpressionStatement","src":"2102:28:43"}]},"documentation":{"id":8391,"nodeType":"StructuredDocumentation","src":"1796:138:43","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."},"functionSelector":"f2fde38b","id":8413,"implemented":true,"kind":"function","modifiers":[{"id":8396,"kind":"modifierInvocation","modifierName":{"id":8395,"name":"onlyOwner","nameLocations":["1999:9:43"],"nodeType":"IdentifierPath","referencedDeclaration":8376,"src":"1999:9:43"},"nodeType":"ModifierInvocation","src":"1999:9:43"}],"name":"transferOwnership","nameLocation":"1948:17:43","nodeType":"FunctionDefinition","parameters":{"id":8394,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8393,"mutability":"mutable","name":"newOwner","nameLocation":"1974:8:43","nodeType":"VariableDeclaration","scope":8413,"src":"1966:16:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8392,"name":"address","nodeType":"ElementaryTypeName","src":"1966:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1965:18:43"},"returnParameters":{"id":8397,"nodeType":"ParameterList","parameters":[],"src":"2009:0:43"},"scope":8434,"src":"1939:198:43","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":8432,"nodeType":"Block","src":"2354:124:43","statements":[{"assignments":[8420],"declarations":[{"constant":false,"id":8420,"mutability":"mutable","name":"oldOwner","nameLocation":"2372:8:43","nodeType":"VariableDeclaration","scope":8432,"src":"2364:16:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8419,"name":"address","nodeType":"ElementaryTypeName","src":"2364:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8422,"initialValue":{"id":8421,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8336,"src":"2383:6:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2364:25:43"},{"expression":{"id":8425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8423,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8336,"src":"2399:6:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8424,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8416,"src":"2408:8:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2399:17:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8426,"nodeType":"ExpressionStatement","src":"2399:17:43"},{"eventCall":{"arguments":[{"id":8428,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8420,"src":"2452:8:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8429,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8416,"src":"2462:8:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8427,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8342,"src":"2431:20:43","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":8430,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2431:40:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8431,"nodeType":"EmitStatement","src":"2426:45:43"}]},"documentation":{"id":8414,"nodeType":"StructuredDocumentation","src":"2143:143:43","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."},"id":8433,"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"2300:18:43","nodeType":"FunctionDefinition","parameters":{"id":8417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8416,"mutability":"mutable","name":"newOwner","nameLocation":"2327:8:43","nodeType":"VariableDeclaration","scope":8433,"src":"2319:16:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8415,"name":"address","nodeType":"ElementaryTypeName","src":"2319:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2318:18:43"},"returnParameters":{"id":8418,"nodeType":"ParameterList","parameters":[],"src":"2354:0:43"},"scope":8434,"src":"2291:187:43","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":8435,"src":"639:1841:43","usedErrors":[],"usedEvents":[8342]}],"src":"87:2394:43"},"id":43},"hardhat-deploy/solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol":{"ast":{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol","exportedSymbols":{"IERC1822Proxiable":[8444]},"id":8445,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8436,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"118:23:44"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1822Proxiable","contractDependencies":[],"contractKind":"interface","documentation":{"id":8437,"nodeType":"StructuredDocumentation","src":"143:203:44","text":" @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n proxy whose upgrades are fully controlled by the current implementation."},"fullyImplemented":false,"id":8444,"linearizedBaseContracts":[8444],"name":"IERC1822Proxiable","nameLocation":"357:17:44","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":8438,"nodeType":"StructuredDocumentation","src":"381:438:44","text":" @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n address.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy."},"functionSelector":"52d1902d","id":8443,"implemented":false,"kind":"function","modifiers":[],"name":"proxiableUUID","nameLocation":"833:13:44","nodeType":"FunctionDefinition","parameters":{"id":8439,"nodeType":"ParameterList","parameters":[],"src":"846:2:44"},"returnParameters":{"id":8442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8441,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8443,"src":"872:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8440,"name":"bytes32","nodeType":"ElementaryTypeName","src":"872:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"871:9:44"},"scope":8444,"src":"824:57:44","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":8445,"src":"347:536:44","usedErrors":[],"usedEvents":[]}],"src":"118:766:44"},"id":44},"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol":{"ast":{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol","exportedSymbols":{"Address":[9481],"ERC1967Proxy":[8497],"ERC1967Upgrade":[8815],"IBeacon":[8877],"IERC1822Proxiable":[8444],"Proxy":[8867],"StorageSlot":[9563]},"id":8498,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8446,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"99:23:45"},{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/proxy/Proxy.sol","file":"../Proxy.sol","id":8447,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8498,"sourceUnit":8868,"src":"124:22:45","symbolAliases":[],"unitAlias":""},{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol","file":"./ERC1967Upgrade.sol","id":8448,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8498,"sourceUnit":8816,"src":"147:30:45","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":8450,"name":"Proxy","nameLocations":["577:5:45"],"nodeType":"IdentifierPath","referencedDeclaration":8867,"src":"577:5:45"},"id":8451,"nodeType":"InheritanceSpecifier","src":"577:5:45"},{"baseName":{"id":8452,"name":"ERC1967Upgrade","nameLocations":["584:14:45"],"nodeType":"IdentifierPath","referencedDeclaration":8815,"src":"584:14:45"},"id":8453,"nodeType":"InheritanceSpecifier","src":"584:14:45"}],"canonicalName":"ERC1967Proxy","contractDependencies":[],"contractKind":"contract","documentation":{"id":8449,"nodeType":"StructuredDocumentation","src":"179:372:45","text":" @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n implementation address that can be changed. This address is stored in storage in the location specified by\n https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\n implementation behind the proxy."},"fullyImplemented":true,"id":8497,"linearizedBaseContracts":[8497,8815,8867],"name":"ERC1967Proxy","nameLocation":"561:12:45","nodeType":"ContractDefinition","nodes":[{"body":{"id":8483,"nodeType":"Block","src":"1001:161:45","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":8474,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":8462,"name":"_IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8511,"src":"1018:20:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e70726f78792e696d706c656d656e746174696f6e","id":8468,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1068:30:45","typeDescriptions":{"typeIdentifier":"t_stringliteral_360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd","typeString":"literal_string \"eip1967.proxy.implementation\""},"value":"eip1967.proxy.implementation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd","typeString":"literal_string \"eip1967.proxy.implementation\""}],"id":8467,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1058:9:45","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":8469,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1058:41:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":8466,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1050:7:45","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":8465,"name":"uint256","nodeType":"ElementaryTypeName","src":"1050:7:45","typeDescriptions":{}}},"id":8470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1050:50:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":8471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1103:1:45","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1050:54:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8464,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1042:7:45","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":8463,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1042:7:45","typeDescriptions":{}}},"id":8473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1042:63:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1018:87:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8461,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1011:6:45","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":8475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1011:95:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8476,"nodeType":"ExpressionStatement","src":"1011:95:45"},{"expression":{"arguments":[{"id":8478,"name":"_logic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8456,"src":"1134:6:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8479,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8458,"src":"1142:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"66616c7365","id":8480,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1149:5:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8477,"name":"_upgradeToAndCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8598,"src":"1116:17:45","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$","typeString":"function (address,bytes memory,bool)"}},"id":8481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1116:39:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8482,"nodeType":"ExpressionStatement","src":"1116:39:45"}]},"documentation":{"id":8454,"nodeType":"StructuredDocumentation","src":"605:335:45","text":" @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\n If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\n function call, and allows initializating the storage of the proxy like a Solidity constructor."},"id":8484,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":8459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8456,"mutability":"mutable","name":"_logic","nameLocation":"965:6:45","nodeType":"VariableDeclaration","scope":8484,"src":"957:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8455,"name":"address","nodeType":"ElementaryTypeName","src":"957:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8458,"mutability":"mutable","name":"_data","nameLocation":"986:5:45","nodeType":"VariableDeclaration","scope":8484,"src":"973:18:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8457,"name":"bytes","nodeType":"ElementaryTypeName","src":"973:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"956:36:45"},"returnParameters":{"id":8460,"nodeType":"ParameterList","parameters":[],"src":"1001:0:45"},"scope":8497,"src":"945:217:45","stateMutability":"payable","virtual":false,"visibility":"public"},{"baseFunctions":[8832],"body":{"id":8495,"nodeType":"Block","src":"1321:59:45","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8491,"name":"ERC1967Upgrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8815,"src":"1338:14:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Upgrade_$8815_$","typeString":"type(contract ERC1967Upgrade)"}},"id":8492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1353:18:45","memberName":"_getImplementation","nodeType":"MemberAccess","referencedDeclaration":8529,"src":"1338:33:45","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":8493,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1338:35:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":8490,"id":8494,"nodeType":"Return","src":"1331:42:45"}]},"documentation":{"id":8485,"nodeType":"StructuredDocumentation","src":"1168:67:45","text":" @dev Returns the current implementation address."},"id":8496,"implemented":true,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"1249:15:45","nodeType":"FunctionDefinition","overrides":{"id":8487,"nodeType":"OverrideSpecifier","overrides":[],"src":"1289:8:45"},"parameters":{"id":8486,"nodeType":"ParameterList","parameters":[],"src":"1264:2:45"},"returnParameters":{"id":8490,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8489,"mutability":"mutable","name":"impl","nameLocation":"1315:4:45","nodeType":"VariableDeclaration","scope":8496,"src":"1307:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8488,"name":"address","nodeType":"ElementaryTypeName","src":"1307:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1306:14:45"},"scope":8497,"src":"1240:140:45","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":8498,"src":"552:830:45","usedErrors":[],"usedEvents":[8516,8662,8727]}],"src":"99:1284:45"},"id":45},"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol":{"ast":{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol","exportedSymbols":{"Address":[9481],"ERC1967Upgrade":[8815],"IBeacon":[8877],"IERC1822Proxiable":[8444],"StorageSlot":[9563]},"id":8816,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8499,"literals":["solidity","^","0.8",".2"],"nodeType":"PragmaDirective","src":"121:23:46"},{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol","file":"../beacon/IBeacon.sol","id":8500,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8816,"sourceUnit":8878,"src":"146:31:46","symbolAliases":[],"unitAlias":""},{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol","file":"../../interfaces/draft-IERC1822.sol","id":8501,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8816,"sourceUnit":8445,"src":"178:45:46","symbolAliases":[],"unitAlias":""},{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/utils/Address.sol","file":"../../utils/Address.sol","id":8502,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8816,"sourceUnit":9482,"src":"224:33:46","symbolAliases":[],"unitAlias":""},{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/utils/StorageSlot.sol","file":"../../utils/StorageSlot.sol","id":8503,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8816,"sourceUnit":9564,"src":"258:37:46","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[],"canonicalName":"ERC1967Upgrade","contractDependencies":[],"contractKind":"contract","documentation":{"id":8504,"nodeType":"StructuredDocumentation","src":"297:236:46","text":" @dev This abstract contract provides getters and event emitting update functions for\n https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n _Available since v4.1._\n @custom:oz-upgrades-unsafe-allow delegatecall"},"fullyImplemented":true,"id":8815,"linearizedBaseContracts":[8815],"name":"ERC1967Upgrade","nameLocation":"552:14:46","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":8507,"mutability":"constant","name":"_ROLLBACK_SLOT","nameLocation":"677:14:46","nodeType":"VariableDeclaration","scope":8815,"src":"652:108:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8505,"name":"bytes32","nodeType":"ElementaryTypeName","src":"652:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307834393130666466613136666564333236306564306537313437663763633664613131613630323038623562393430366431326136333536313466666439313433","id":8506,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"694:66:46","typeDescriptions":{"typeIdentifier":"t_rational_33048860383849004559742813297059419343339852917517107368639918720169455489347_by_1","typeString":"int_const 3304...(69 digits omitted)...9347"},"value":"0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143"},"visibility":"private"},{"constant":true,"documentation":{"id":8508,"nodeType":"StructuredDocumentation","src":"767:214:46","text":" @dev Storage slot with the address of the current implementation.\n This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n validated in the constructor."},"id":8511,"mutability":"constant","name":"_IMPLEMENTATION_SLOT","nameLocation":"1012:20:46","nodeType":"VariableDeclaration","scope":8815,"src":"986:115:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8509,"name":"bytes32","nodeType":"ElementaryTypeName","src":"986:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307833363038393461313362613161333231303636376338323834393264623938646361336532303736636333373335613932306133636135303564333832626263","id":8510,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1035:66:46","typeDescriptions":{"typeIdentifier":"t_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by_1","typeString":"int_const 2444...(69 digits omitted)...5612"},"value":"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"},"visibility":"internal"},{"anonymous":false,"documentation":{"id":8512,"nodeType":"StructuredDocumentation","src":"1108:68:46","text":" @dev Emitted when the implementation is upgraded."},"eventSelector":"bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","id":8516,"name":"Upgraded","nameLocation":"1187:8:46","nodeType":"EventDefinition","parameters":{"id":8515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8514,"indexed":true,"mutability":"mutable","name":"implementation","nameLocation":"1212:14:46","nodeType":"VariableDeclaration","scope":8516,"src":"1196:30:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8513,"name":"address","nodeType":"ElementaryTypeName","src":"1196:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1195:32:46"},"src":"1181:47:46"},{"body":{"id":8528,"nodeType":"Block","src":"1368:78:46","statements":[{"expression":{"expression":{"arguments":[{"id":8524,"name":"_IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8511,"src":"1412:20:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":8522,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9563,"src":"1385:11:46","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$9563_$","typeString":"type(library StorageSlot)"}},"id":8523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1397:14:46","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":9529,"src":"1385:26:46","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$9509_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":8525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1385:48:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$9509_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":8526,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1434:5:46","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":9508,"src":"1385:54:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":8521,"id":8527,"nodeType":"Return","src":"1378:61:46"}]},"documentation":{"id":8517,"nodeType":"StructuredDocumentation","src":"1234:67:46","text":" @dev Returns the current implementation address."},"id":8529,"implemented":true,"kind":"function","modifiers":[],"name":"_getImplementation","nameLocation":"1315:18:46","nodeType":"FunctionDefinition","parameters":{"id":8518,"nodeType":"ParameterList","parameters":[],"src":"1333:2:46"},"returnParameters":{"id":8521,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8520,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8529,"src":"1359:7:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8519,"name":"address","nodeType":"ElementaryTypeName","src":"1359:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1358:9:46"},"scope":8815,"src":"1306:140:46","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8552,"nodeType":"Block","src":"1600:196:46","statements":[{"expression":{"arguments":[{"arguments":[{"id":8538,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8532,"src":"1637:17:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8536,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9481,"src":"1618:7:46","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$9481_$","typeString":"type(library Address)"}},"id":8537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1626:10:46","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":9204,"src":"1618:18:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":8539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1618:37:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374","id":8540,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1657:47:46","typeDescriptions":{"typeIdentifier":"t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65","typeString":"literal_string \"ERC1967: new implementation is not a contract\""},"value":"ERC1967: new implementation is not a contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65","typeString":"literal_string \"ERC1967: new implementation is not a contract\""}],"id":8535,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1610:7:46","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8541,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1610:95:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8542,"nodeType":"ExpressionStatement","src":"1610:95:46"},{"expression":{"id":8550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":8546,"name":"_IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8511,"src":"1742:20:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":8543,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9563,"src":"1715:11:46","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$9563_$","typeString":"type(library StorageSlot)"}},"id":8545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1727:14:46","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":9529,"src":"1715:26:46","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$9509_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":8547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1715:48:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$9509_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":8548,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1764:5:46","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":9508,"src":"1715:54:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8549,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8532,"src":"1772:17:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1715:74:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8551,"nodeType":"ExpressionStatement","src":"1715:74:46"}]},"documentation":{"id":8530,"nodeType":"StructuredDocumentation","src":"1452:80:46","text":" @dev Stores a new address in the EIP1967 implementation slot."},"id":8553,"implemented":true,"kind":"function","modifiers":[],"name":"_setImplementation","nameLocation":"1546:18:46","nodeType":"FunctionDefinition","parameters":{"id":8533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8532,"mutability":"mutable","name":"newImplementation","nameLocation":"1573:17:46","nodeType":"VariableDeclaration","scope":8553,"src":"1565:25:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8531,"name":"address","nodeType":"ElementaryTypeName","src":"1565:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1564:27:46"},"returnParameters":{"id":8534,"nodeType":"ParameterList","parameters":[],"src":"1600:0:46"},"scope":8815,"src":"1537:259:46","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":8567,"nodeType":"Block","src":"1958:96:46","statements":[{"expression":{"arguments":[{"id":8560,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8556,"src":"1987:17:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8559,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8553,"src":"1968:18:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":8561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1968:37:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8562,"nodeType":"ExpressionStatement","src":"1968:37:46"},{"eventCall":{"arguments":[{"id":8564,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8556,"src":"2029:17:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8563,"name":"Upgraded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8516,"src":"2020:8:46","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":8565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2020:27:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8566,"nodeType":"EmitStatement","src":"2015:32:46"}]},"documentation":{"id":8554,"nodeType":"StructuredDocumentation","src":"1802:95:46","text":" @dev Perform implementation upgrade\n Emits an {Upgraded} event."},"id":8568,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeTo","nameLocation":"1911:10:46","nodeType":"FunctionDefinition","parameters":{"id":8557,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8556,"mutability":"mutable","name":"newImplementation","nameLocation":"1930:17:46","nodeType":"VariableDeclaration","scope":8568,"src":"1922:25:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8555,"name":"address","nodeType":"ElementaryTypeName","src":"1922:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1921:27:46"},"returnParameters":{"id":8558,"nodeType":"ParameterList","parameters":[],"src":"1958:0:46"},"scope":8815,"src":"1902:152:46","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8597,"nodeType":"Block","src":"2316:167:46","statements":[{"expression":{"arguments":[{"id":8579,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8571,"src":"2337:17:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8578,"name":"_upgradeTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8568,"src":"2326:10:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":8580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2326:29:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8581,"nodeType":"ExpressionStatement","src":"2326:29:46"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8582,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8573,"src":"2369:4:46","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":8583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2374:6:46","memberName":"length","nodeType":"MemberAccess","src":"2369:11:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2383:1:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2369:15:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":8586,"name":"forceCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8575,"src":"2388:9:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2369:28:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8596,"nodeType":"IfStatement","src":"2365:112:46","trueBody":{"id":8595,"nodeType":"Block","src":"2399:78:46","statements":[{"expression":{"arguments":[{"id":8591,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8571,"src":"2442:17:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8592,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8573,"src":"2461:4:46","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":8588,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9481,"src":"2413:7:46","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$9481_$","typeString":"type(library Address)"}},"id":8590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2421:20:46","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":9414,"src":"2413:28:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":8593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2413:53:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":8594,"nodeType":"ExpressionStatement","src":"2413:53:46"}]}}]},"documentation":{"id":8569,"nodeType":"StructuredDocumentation","src":"2060:123:46","text":" @dev Perform implementation upgrade with additional setup call.\n Emits an {Upgraded} event."},"id":8598,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeToAndCall","nameLocation":"2197:17:46","nodeType":"FunctionDefinition","parameters":{"id":8576,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8571,"mutability":"mutable","name":"newImplementation","nameLocation":"2232:17:46","nodeType":"VariableDeclaration","scope":8598,"src":"2224:25:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8570,"name":"address","nodeType":"ElementaryTypeName","src":"2224:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8573,"mutability":"mutable","name":"data","nameLocation":"2272:4:46","nodeType":"VariableDeclaration","scope":8598,"src":"2259:17:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8572,"name":"bytes","nodeType":"ElementaryTypeName","src":"2259:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":8575,"mutability":"mutable","name":"forceCall","nameLocation":"2291:9:46","nodeType":"VariableDeclaration","scope":8598,"src":"2286:14:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8574,"name":"bool","nodeType":"ElementaryTypeName","src":"2286:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2214:92:46"},"returnParameters":{"id":8577,"nodeType":"ParameterList","parameters":[],"src":"2316:0:46"},"scope":8815,"src":"2188:295:46","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8650,"nodeType":"Block","src":"2787:820:46","statements":[{"condition":{"expression":{"arguments":[{"id":8610,"name":"_ROLLBACK_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8507,"src":"3128:14:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":8608,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9563,"src":"3101:11:46","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$9563_$","typeString":"type(library StorageSlot)"}},"id":8609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3113:14:46","memberName":"getBooleanSlot","nodeType":"MemberAccess","referencedDeclaration":9540,"src":"3101:26:46","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_BooleanSlot_$9512_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.BooleanSlot storage pointer)"}},"id":8611,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3101:42:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$9512_storage_ptr","typeString":"struct StorageSlot.BooleanSlot storage pointer"}},"id":8612,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3144:5:46","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":9511,"src":"3101:48:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8648,"nodeType":"Block","src":"3219:382:46","statements":[{"clauses":[{"block":{"id":8633,"nodeType":"Block","src":"3313:115:46","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":8629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8627,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8624,"src":"3339:4:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":8628,"name":"_IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8511,"src":"3347:20:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3339:28:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524331393637557067726164653a20756e737570706f727465642070726f786961626c6555554944","id":8630,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3369:43:46","typeDescriptions":{"typeIdentifier":"t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c","typeString":"literal_string \"ERC1967Upgrade: unsupported proxiableUUID\""},"value":"ERC1967Upgrade: unsupported proxiableUUID"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_76b6b6debfc5febf101145a79ecf0b0d2e89e397dfdab2bca99888370411152c","typeString":"literal_string \"ERC1967Upgrade: unsupported proxiableUUID\""}],"id":8626,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"3331:7:46","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8631,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3331:82:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8632,"nodeType":"ExpressionStatement","src":"3331:82:46"}]},"errorName":"","id":8634,"nodeType":"TryCatchClause","parameters":{"id":8625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8624,"mutability":"mutable","name":"slot","nameLocation":"3307:4:46","nodeType":"VariableDeclaration","scope":8634,"src":"3299:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8623,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3299:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3298:14:46"},"src":"3290:138:46"},{"block":{"id":8639,"nodeType":"Block","src":"3435:89:46","statements":[{"expression":{"arguments":[{"hexValue":"45524331393637557067726164653a206e657720696d706c656d656e746174696f6e206973206e6f742055555053","id":8636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3460:48:46","typeDescriptions":{"typeIdentifier":"t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24","typeString":"literal_string \"ERC1967Upgrade: new implementation is not UUPS\""},"value":"ERC1967Upgrade: new implementation is not UUPS"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8e8e2fbcb586f700b5b14e2c4a650c8d83b9773c31c5fe8962070ea544e11f24","typeString":"literal_string \"ERC1967Upgrade: new implementation is not UUPS\""}],"id":8635,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"3453:6:46","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":8637,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3453:56:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8638,"nodeType":"ExpressionStatement","src":"3453:56:46"}]},"errorName":"","id":8640,"nodeType":"TryCatchClause","src":"3429:95:46"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":8619,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8601,"src":"3255:17:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8618,"name":"IERC1822Proxiable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8444,"src":"3237:17:46","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1822Proxiable_$8444_$","typeString":"type(contract IERC1822Proxiable)"}},"id":8620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3237:36:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC1822Proxiable_$8444","typeString":"contract IERC1822Proxiable"}},"id":8621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3274:13:46","memberName":"proxiableUUID","nodeType":"MemberAccess","referencedDeclaration":8443,"src":"3237:50:46","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bytes32_$","typeString":"function () view external returns (bytes32)"}},"id":8622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3237:52:46","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":8641,"nodeType":"TryStatement","src":"3233:291:46"},{"expression":{"arguments":[{"id":8643,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8601,"src":"3555:17:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8644,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8603,"src":"3574:4:46","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":8645,"name":"forceCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8605,"src":"3580:9:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8642,"name":"_upgradeToAndCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8598,"src":"3537:17:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$","typeString":"function (address,bytes memory,bool)"}},"id":8646,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3537:53:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8647,"nodeType":"ExpressionStatement","src":"3537:53:46"}]},"id":8649,"nodeType":"IfStatement","src":"3097:504:46","trueBody":{"id":8617,"nodeType":"Block","src":"3151:62:46","statements":[{"expression":{"arguments":[{"id":8614,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8601,"src":"3184:17:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8613,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8553,"src":"3165:18:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":8615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3165:37:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8616,"nodeType":"ExpressionStatement","src":"3165:37:46"}]}}]},"documentation":{"id":8599,"nodeType":"StructuredDocumentation","src":"2489:161:46","text":" @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\n Emits an {Upgraded} event."},"id":8651,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeToAndCallUUPS","nameLocation":"2664:21:46","nodeType":"FunctionDefinition","parameters":{"id":8606,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8601,"mutability":"mutable","name":"newImplementation","nameLocation":"2703:17:46","nodeType":"VariableDeclaration","scope":8651,"src":"2695:25:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8600,"name":"address","nodeType":"ElementaryTypeName","src":"2695:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8603,"mutability":"mutable","name":"data","nameLocation":"2743:4:46","nodeType":"VariableDeclaration","scope":8651,"src":"2730:17:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8602,"name":"bytes","nodeType":"ElementaryTypeName","src":"2730:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":8605,"mutability":"mutable","name":"forceCall","nameLocation":"2762:9:46","nodeType":"VariableDeclaration","scope":8651,"src":"2757:14:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8604,"name":"bool","nodeType":"ElementaryTypeName","src":"2757:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2685:92:46"},"returnParameters":{"id":8607,"nodeType":"ParameterList","parameters":[],"src":"2787:0:46"},"scope":8815,"src":"2655:952:46","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":8652,"nodeType":"StructuredDocumentation","src":"3613:189:46","text":" @dev Storage slot with the admin of the contract.\n This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is\n validated in the constructor."},"id":8655,"mutability":"constant","name":"_ADMIN_SLOT","nameLocation":"3833:11:46","nodeType":"VariableDeclaration","scope":8815,"src":"3807:106:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8653,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3807:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307862353331323736383461353638623331373361653133623966386136303136653234336536336236653865653131373864366137313738353062356436313033","id":8654,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3847:66:46","typeDescriptions":{"typeIdentifier":"t_rational_81955473079516046949633743016697847541294818689821282749996681496272635257091_by_1","typeString":"int_const 8195...(69 digits omitted)...7091"},"value":"0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"},"visibility":"internal"},{"anonymous":false,"documentation":{"id":8656,"nodeType":"StructuredDocumentation","src":"3920:67:46","text":" @dev Emitted when the admin account has changed."},"eventSelector":"7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f","id":8662,"name":"AdminChanged","nameLocation":"3998:12:46","nodeType":"EventDefinition","parameters":{"id":8661,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8658,"indexed":false,"mutability":"mutable","name":"previousAdmin","nameLocation":"4019:13:46","nodeType":"VariableDeclaration","scope":8662,"src":"4011:21:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8657,"name":"address","nodeType":"ElementaryTypeName","src":"4011:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8660,"indexed":false,"mutability":"mutable","name":"newAdmin","nameLocation":"4042:8:46","nodeType":"VariableDeclaration","scope":8662,"src":"4034:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8659,"name":"address","nodeType":"ElementaryTypeName","src":"4034:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4010:41:46"},"src":"3992:60:46"},{"body":{"id":8674,"nodeType":"Block","src":"4174:69:46","statements":[{"expression":{"expression":{"arguments":[{"id":8670,"name":"_ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"4218:11:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":8668,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9563,"src":"4191:11:46","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$9563_$","typeString":"type(library StorageSlot)"}},"id":8669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4203:14:46","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":9529,"src":"4191:26:46","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$9509_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":8671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4191:39:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$9509_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":8672,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4231:5:46","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":9508,"src":"4191:45:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":8667,"id":8673,"nodeType":"Return","src":"4184:52:46"}]},"documentation":{"id":8663,"nodeType":"StructuredDocumentation","src":"4058:50:46","text":" @dev Returns the current admin."},"id":8675,"implemented":true,"kind":"function","modifiers":[],"name":"_getAdmin","nameLocation":"4122:9:46","nodeType":"FunctionDefinition","parameters":{"id":8664,"nodeType":"ParameterList","parameters":[],"src":"4131:2:46"},"returnParameters":{"id":8667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8666,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8675,"src":"4165:7:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8665,"name":"address","nodeType":"ElementaryTypeName","src":"4165:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4164:9:46"},"scope":8815,"src":"4113:130:46","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":8700,"nodeType":"Block","src":"4370:156:46","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8682,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8678,"src":"4388:8:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":8685,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4408:1:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8684,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4400:7:46","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8683,"name":"address","nodeType":"ElementaryTypeName","src":"4400:7:46","typeDescriptions":{}}},"id":8686,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4400:10:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4388:22:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a206e65772061646d696e20697320746865207a65726f2061646472657373","id":8688,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4412:40:46","typeDescriptions":{"typeIdentifier":"t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5","typeString":"literal_string \"ERC1967: new admin is the zero address\""},"value":"ERC1967: new admin is the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5","typeString":"literal_string \"ERC1967: new admin is the zero address\""}],"id":8681,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4380:7:46","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4380:73:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8690,"nodeType":"ExpressionStatement","src":"4380:73:46"},{"expression":{"id":8698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":8694,"name":"_ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"4490:11:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":8691,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9563,"src":"4463:11:46","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$9563_$","typeString":"type(library StorageSlot)"}},"id":8693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4475:14:46","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":9529,"src":"4463:26:46","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$9509_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":8695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4463:39:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$9509_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":8696,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4503:5:46","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":9508,"src":"4463:45:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8697,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8678,"src":"4511:8:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4463:56:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8699,"nodeType":"ExpressionStatement","src":"4463:56:46"}]},"documentation":{"id":8676,"nodeType":"StructuredDocumentation","src":"4249:71:46","text":" @dev Stores a new address in the EIP1967 admin slot."},"id":8701,"implemented":true,"kind":"function","modifiers":[],"name":"_setAdmin","nameLocation":"4334:9:46","nodeType":"FunctionDefinition","parameters":{"id":8679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8678,"mutability":"mutable","name":"newAdmin","nameLocation":"4352:8:46","nodeType":"VariableDeclaration","scope":8701,"src":"4344:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8677,"name":"address","nodeType":"ElementaryTypeName","src":"4344:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4343:18:46"},"returnParameters":{"id":8680,"nodeType":"ParameterList","parameters":[],"src":"4370:0:46"},"scope":8815,"src":"4325:201:46","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":8717,"nodeType":"Block","src":"4686:86:46","statements":[{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":8708,"name":"_getAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8675,"src":"4714:9:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":8709,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4714:11:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8710,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8704,"src":"4727:8:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8707,"name":"AdminChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8662,"src":"4701:12:46","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":8711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4701:35:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8712,"nodeType":"EmitStatement","src":"4696:40:46"},{"expression":{"arguments":[{"id":8714,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8704,"src":"4756:8:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8713,"name":"_setAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8701,"src":"4746:9:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":8715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4746:19:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8716,"nodeType":"ExpressionStatement","src":"4746:19:46"}]},"documentation":{"id":8702,"nodeType":"StructuredDocumentation","src":"4532:100:46","text":" @dev Changes the admin of the proxy.\n Emits an {AdminChanged} event."},"id":8718,"implemented":true,"kind":"function","modifiers":[],"name":"_changeAdmin","nameLocation":"4646:12:46","nodeType":"FunctionDefinition","parameters":{"id":8705,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8704,"mutability":"mutable","name":"newAdmin","nameLocation":"4667:8:46","nodeType":"VariableDeclaration","scope":8718,"src":"4659:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8703,"name":"address","nodeType":"ElementaryTypeName","src":"4659:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4658:18:46"},"returnParameters":{"id":8706,"nodeType":"ParameterList","parameters":[],"src":"4686:0:46"},"scope":8815,"src":"4637:135:46","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":8719,"nodeType":"StructuredDocumentation","src":"4778:232:46","text":" @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor."},"id":8722,"mutability":"constant","name":"_BEACON_SLOT","nameLocation":"5041:12:46","nodeType":"VariableDeclaration","scope":8815,"src":"5015:107:46","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8720,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5015:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307861336630616437346535343233616562666438306433656634333436353738333335613961373261656165653539666636636233353832623335313333643530","id":8721,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5056:66:46","typeDescriptions":{"typeIdentifier":"t_rational_74152234768234802001998023604048924213078445070507226371336425913862612794704_by_1","typeString":"int_const 7415...(69 digits omitted)...4704"},"value":"0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50"},"visibility":"internal"},{"anonymous":false,"documentation":{"id":8723,"nodeType":"StructuredDocumentation","src":"5129:60:46","text":" @dev Emitted when the beacon is upgraded."},"eventSelector":"1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e","id":8727,"name":"BeaconUpgraded","nameLocation":"5200:14:46","nodeType":"EventDefinition","parameters":{"id":8726,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8725,"indexed":true,"mutability":"mutable","name":"beacon","nameLocation":"5231:6:46","nodeType":"VariableDeclaration","scope":8727,"src":"5215:22:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8724,"name":"address","nodeType":"ElementaryTypeName","src":"5215:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5214:24:46"},"src":"5194:45:46"},{"body":{"id":8739,"nodeType":"Block","src":"5355:70:46","statements":[{"expression":{"expression":{"arguments":[{"id":8735,"name":"_BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8722,"src":"5399:12:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":8733,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9563,"src":"5372:11:46","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$9563_$","typeString":"type(library StorageSlot)"}},"id":8734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5384:14:46","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":9529,"src":"5372:26:46","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$9509_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":8736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5372:40:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$9509_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":8737,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5413:5:46","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":9508,"src":"5372:46:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":8732,"id":8738,"nodeType":"Return","src":"5365:53:46"}]},"documentation":{"id":8728,"nodeType":"StructuredDocumentation","src":"5245:51:46","text":" @dev Returns the current beacon."},"id":8740,"implemented":true,"kind":"function","modifiers":[],"name":"_getBeacon","nameLocation":"5310:10:46","nodeType":"FunctionDefinition","parameters":{"id":8729,"nodeType":"ParameterList","parameters":[],"src":"5320:2:46"},"returnParameters":{"id":8732,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8731,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8740,"src":"5346:7:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8730,"name":"address","nodeType":"ElementaryTypeName","src":"5346:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5345:9:46"},"scope":8815,"src":"5301:124:46","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8775,"nodeType":"Block","src":"5554:290:46","statements":[{"expression":{"arguments":[{"arguments":[{"id":8749,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8743,"src":"5591:9:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8747,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9481,"src":"5572:7:46","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$9481_$","typeString":"type(library Address)"}},"id":8748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5580:10:46","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":9204,"src":"5572:18:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":8750,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5572:29:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a206e657720626561636f6e206973206e6f74206120636f6e7472616374","id":8751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5603:39:46","typeDescriptions":{"typeIdentifier":"t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470","typeString":"literal_string \"ERC1967: new beacon is not a contract\""},"value":"ERC1967: new beacon is not a contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9589b7809634e4928033de18bb696e9af4ef71b703652af5245f2dbebf2f4470","typeString":"literal_string \"ERC1967: new beacon is not a contract\""}],"id":8746,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5564:7:46","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5564:79:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8753,"nodeType":"ExpressionStatement","src":"5564:79:46"},{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":8758,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8743,"src":"5688:9:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8757,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8877,"src":"5680:7:46","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeacon_$8877_$","typeString":"type(contract IBeacon)"}},"id":8759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5680:18:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeacon_$8877","typeString":"contract IBeacon"}},"id":8760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5699:14:46","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":8876,"src":"5680:33:46","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":8761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5680:35:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8755,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9481,"src":"5661:7:46","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$9481_$","typeString":"type(library Address)"}},"id":8756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5669:10:46","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":9204,"src":"5661:18:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":8762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5661:55:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243313936373a20626561636f6e20696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374","id":8763,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5718:50:46","typeDescriptions":{"typeIdentifier":"t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8","typeString":"literal_string \"ERC1967: beacon implementation is not a contract\""},"value":"ERC1967: beacon implementation is not a contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f95fd1f5b5578816eb23f6ca0f2439b4b5e4094dc16e99c3b8e91603a83f93c8","typeString":"literal_string \"ERC1967: beacon implementation is not a contract\""}],"id":8754,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5653:7:46","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5653:116:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8765,"nodeType":"ExpressionStatement","src":"5653:116:46"},{"expression":{"id":8773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":8769,"name":"_BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8722,"src":"5806:12:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":8766,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9563,"src":"5779:11:46","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$9563_$","typeString":"type(library StorageSlot)"}},"id":8768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5791:14:46","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":9529,"src":"5779:26:46","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$9509_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":8770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5779:40:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$9509_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":8771,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5820:5:46","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":9508,"src":"5779:46:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8772,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8743,"src":"5828:9:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5779:58:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8774,"nodeType":"ExpressionStatement","src":"5779:58:46"}]},"documentation":{"id":8741,"nodeType":"StructuredDocumentation","src":"5431:71:46","text":" @dev Stores a new beacon in the EIP1967 beacon slot."},"id":8776,"implemented":true,"kind":"function","modifiers":[],"name":"_setBeacon","nameLocation":"5516:10:46","nodeType":"FunctionDefinition","parameters":{"id":8744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8743,"mutability":"mutable","name":"newBeacon","nameLocation":"5535:9:46","nodeType":"VariableDeclaration","scope":8776,"src":"5527:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8742,"name":"address","nodeType":"ElementaryTypeName","src":"5527:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5526:19:46"},"returnParameters":{"id":8745,"nodeType":"ParameterList","parameters":[],"src":"5554:0:46"},"scope":8815,"src":"5507:337:46","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":8813,"nodeType":"Block","src":"6273:217:46","statements":[{"expression":{"arguments":[{"id":8787,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8779,"src":"6294:9:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8786,"name":"_setBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8776,"src":"6283:10:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":8788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6283:21:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8789,"nodeType":"ExpressionStatement","src":"6283:21:46"},{"eventCall":{"arguments":[{"id":8791,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8779,"src":"6334:9:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8790,"name":"BeaconUpgraded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8727,"src":"6319:14:46","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":8792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6319:25:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8793,"nodeType":"EmitStatement","src":"6314:30:46"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8794,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8781,"src":"6358:4:46","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":8795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6363:6:46","memberName":"length","nodeType":"MemberAccess","src":"6358:11:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8796,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6372:1:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6358:15:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":8798,"name":"forceCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8783,"src":"6377:9:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6358:28:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8812,"nodeType":"IfStatement","src":"6354:130:46","trueBody":{"id":8811,"nodeType":"Block","src":"6388:96:46","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":8804,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8779,"src":"6439:9:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8803,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8877,"src":"6431:7:46","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeacon_$8877_$","typeString":"type(contract IBeacon)"}},"id":8805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6431:18:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeacon_$8877","typeString":"contract IBeacon"}},"id":8806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6450:14:46","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":8876,"src":"6431:33:46","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":8807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6431:35:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8808,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8781,"src":"6468:4:46","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":8800,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9481,"src":"6402:7:46","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$9481_$","typeString":"type(library Address)"}},"id":8802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6410:20:46","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":9414,"src":"6402:28:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":8809,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6402:71:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":8810,"nodeType":"ExpressionStatement","src":"6402:71:46"}]}}]},"documentation":{"id":8777,"nodeType":"StructuredDocumentation","src":"5850:292:46","text":" @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\n not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\n Emits a {BeaconUpgraded} event."},"id":8814,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeBeaconToAndCall","nameLocation":"6156:23:46","nodeType":"FunctionDefinition","parameters":{"id":8784,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8779,"mutability":"mutable","name":"newBeacon","nameLocation":"6197:9:46","nodeType":"VariableDeclaration","scope":8814,"src":"6189:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8778,"name":"address","nodeType":"ElementaryTypeName","src":"6189:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8781,"mutability":"mutable","name":"data","nameLocation":"6229:4:46","nodeType":"VariableDeclaration","scope":8814,"src":"6216:17:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8780,"name":"bytes","nodeType":"ElementaryTypeName","src":"6216:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":8783,"mutability":"mutable","name":"forceCall","nameLocation":"6248:9:46","nodeType":"VariableDeclaration","scope":8814,"src":"6243:14:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8782,"name":"bool","nodeType":"ElementaryTypeName","src":"6243:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6179:84:46"},"returnParameters":{"id":8785,"nodeType":"ParameterList","parameters":[],"src":"6273:0:46"},"scope":8815,"src":"6147:343:46","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":8816,"src":"534:5958:46","usedErrors":[],"usedEvents":[8516,8662,8727]}],"src":"121:6372:46"},"id":46},"hardhat-deploy/solc_0.8/openzeppelin/proxy/Proxy.sol":{"ast":{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/proxy/Proxy.sol","exportedSymbols":{"Proxy":[8867]},"id":8868,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8817,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"104:23:47"},{"abstract":true,"baseContracts":[],"canonicalName":"Proxy","contractDependencies":[],"contractKind":"contract","documentation":{"id":8818,"nodeType":"StructuredDocumentation","src":"129:598:47","text":" @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n be specified by overriding the virtual {_implementation} function.\n Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n different contract through the {_delegate} function.\n The success and return data of the delegated call will be returned back to the caller of the proxy."},"fullyImplemented":false,"id":8867,"linearizedBaseContracts":[8867],"name":"Proxy","nameLocation":"746:5:47","nodeType":"ContractDefinition","nodes":[{"body":{"id":8825,"nodeType":"Block","src":"1013:835:47","statements":[{"AST":{"nativeSrc":"1032:810:47","nodeType":"YulBlock","src":"1032:810:47","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1285:1:47","nodeType":"YulLiteral","src":"1285:1:47","type":"","value":"0"},{"kind":"number","nativeSrc":"1288:1:47","nodeType":"YulLiteral","src":"1288:1:47","type":"","value":"0"},{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"1291:12:47","nodeType":"YulIdentifier","src":"1291:12:47"},"nativeSrc":"1291:14:47","nodeType":"YulFunctionCall","src":"1291:14:47"}],"functionName":{"name":"calldatacopy","nativeSrc":"1272:12:47","nodeType":"YulIdentifier","src":"1272:12:47"},"nativeSrc":"1272:34:47","nodeType":"YulFunctionCall","src":"1272:34:47"},"nativeSrc":"1272:34:47","nodeType":"YulExpressionStatement","src":"1272:34:47"},{"nativeSrc":"1433:74:47","nodeType":"YulVariableDeclaration","src":"1433:74:47","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"1460:3:47","nodeType":"YulIdentifier","src":"1460:3:47"},"nativeSrc":"1460:5:47","nodeType":"YulFunctionCall","src":"1460:5:47"},{"name":"implementation","nativeSrc":"1467:14:47","nodeType":"YulIdentifier","src":"1467:14:47"},{"kind":"number","nativeSrc":"1483:1:47","nodeType":"YulLiteral","src":"1483:1:47","type":"","value":"0"},{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"1486:12:47","nodeType":"YulIdentifier","src":"1486:12:47"},"nativeSrc":"1486:14:47","nodeType":"YulFunctionCall","src":"1486:14:47"},{"kind":"number","nativeSrc":"1502:1:47","nodeType":"YulLiteral","src":"1502:1:47","type":"","value":"0"},{"kind":"number","nativeSrc":"1505:1:47","nodeType":"YulLiteral","src":"1505:1:47","type":"","value":"0"}],"functionName":{"name":"delegatecall","nativeSrc":"1447:12:47","nodeType":"YulIdentifier","src":"1447:12:47"},"nativeSrc":"1447:60:47","nodeType":"YulFunctionCall","src":"1447:60:47"},"variables":[{"name":"result","nativeSrc":"1437:6:47","nodeType":"YulTypedName","src":"1437:6:47","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1575:1:47","nodeType":"YulLiteral","src":"1575:1:47","type":"","value":"0"},{"kind":"number","nativeSrc":"1578:1:47","nodeType":"YulLiteral","src":"1578:1:47","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"1581:14:47","nodeType":"YulIdentifier","src":"1581:14:47"},"nativeSrc":"1581:16:47","nodeType":"YulFunctionCall","src":"1581:16:47"}],"functionName":{"name":"returndatacopy","nativeSrc":"1560:14:47","nodeType":"YulIdentifier","src":"1560:14:47"},"nativeSrc":"1560:38:47","nodeType":"YulFunctionCall","src":"1560:38:47"},"nativeSrc":"1560:38:47","nodeType":"YulExpressionStatement","src":"1560:38:47"},{"cases":[{"body":{"nativeSrc":"1693:59:47","nodeType":"YulBlock","src":"1693:59:47","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1718:1:47","nodeType":"YulLiteral","src":"1718:1:47","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"1721:14:47","nodeType":"YulIdentifier","src":"1721:14:47"},"nativeSrc":"1721:16:47","nodeType":"YulFunctionCall","src":"1721:16:47"}],"functionName":{"name":"revert","nativeSrc":"1711:6:47","nodeType":"YulIdentifier","src":"1711:6:47"},"nativeSrc":"1711:27:47","nodeType":"YulFunctionCall","src":"1711:27:47"},"nativeSrc":"1711:27:47","nodeType":"YulExpressionStatement","src":"1711:27:47"}]},"nativeSrc":"1686:66:47","nodeType":"YulCase","src":"1686:66:47","value":{"kind":"number","nativeSrc":"1691:1:47","nodeType":"YulLiteral","src":"1691:1:47","type":"","value":"0"}},{"body":{"nativeSrc":"1773:59:47","nodeType":"YulBlock","src":"1773:59:47","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1798:1:47","nodeType":"YulLiteral","src":"1798:1:47","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"1801:14:47","nodeType":"YulIdentifier","src":"1801:14:47"},"nativeSrc":"1801:16:47","nodeType":"YulFunctionCall","src":"1801:16:47"}],"functionName":{"name":"return","nativeSrc":"1791:6:47","nodeType":"YulIdentifier","src":"1791:6:47"},"nativeSrc":"1791:27:47","nodeType":"YulFunctionCall","src":"1791:27:47"},"nativeSrc":"1791:27:47","nodeType":"YulExpressionStatement","src":"1791:27:47"}]},"nativeSrc":"1765:67:47","nodeType":"YulCase","src":"1765:67:47","value":"default"}],"expression":{"name":"result","nativeSrc":"1619:6:47","nodeType":"YulIdentifier","src":"1619:6:47"},"nativeSrc":"1612:220:47","nodeType":"YulSwitch","src":"1612:220:47"}]},"evmVersion":"cancun","externalReferences":[{"declaration":8821,"isOffset":false,"isSlot":false,"src":"1467:14:47","valueSize":1}],"id":8824,"nodeType":"InlineAssembly","src":"1023:819:47"}]},"documentation":{"id":8819,"nodeType":"StructuredDocumentation","src":"758:190:47","text":" @dev Delegates the current call to `implementation`.\n This function does not return to its internal call site, it will return directly to the external caller."},"id":8826,"implemented":true,"kind":"function","modifiers":[],"name":"_delegate","nameLocation":"962:9:47","nodeType":"FunctionDefinition","parameters":{"id":8822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8821,"mutability":"mutable","name":"implementation","nameLocation":"980:14:47","nodeType":"VariableDeclaration","scope":8826,"src":"972:22:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8820,"name":"address","nodeType":"ElementaryTypeName","src":"972:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"971:24:47"},"returnParameters":{"id":8823,"nodeType":"ParameterList","parameters":[],"src":"1013:0:47"},"scope":8867,"src":"953:895:47","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"documentation":{"id":8827,"nodeType":"StructuredDocumentation","src":"1854:172:47","text":" @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\n and {_fallback} should delegate."},"id":8832,"implemented":false,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"2040:15:47","nodeType":"FunctionDefinition","parameters":{"id":8828,"nodeType":"ParameterList","parameters":[],"src":"2055:2:47"},"returnParameters":{"id":8831,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8830,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8832,"src":"2089:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8829,"name":"address","nodeType":"ElementaryTypeName","src":"2089:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2088:9:47"},"scope":8867,"src":"2031:67:47","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":8844,"nodeType":"Block","src":"2365:72:47","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8836,"name":"_beforeFallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8866,"src":"2375:15:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":8837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2375:17:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8838,"nodeType":"ExpressionStatement","src":"2375:17:47"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":8840,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8832,"src":"2412:15:47","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":8841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2412:17:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8839,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8826,"src":"2402:9:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":8842,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2402:28:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8843,"nodeType":"ExpressionStatement","src":"2402:28:47"}]},"documentation":{"id":8833,"nodeType":"StructuredDocumentation","src":"2104:218:47","text":" @dev Delegates the current call to the address returned by `_implementation()`.\n This function does not return to its internall call site, it will return directly to the external caller."},"id":8845,"implemented":true,"kind":"function","modifiers":[],"name":"_fallback","nameLocation":"2336:9:47","nodeType":"FunctionDefinition","parameters":{"id":8834,"nodeType":"ParameterList","parameters":[],"src":"2345:2:47"},"returnParameters":{"id":8835,"nodeType":"ParameterList","parameters":[],"src":"2365:0:47"},"scope":8867,"src":"2327:110:47","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":8852,"nodeType":"Block","src":"2670:28:47","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8849,"name":"_fallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8845,"src":"2680:9:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":8850,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2680:11:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8851,"nodeType":"ExpressionStatement","src":"2680:11:47"}]},"documentation":{"id":8846,"nodeType":"StructuredDocumentation","src":"2443:186:47","text":" @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n function in the contract matches the call data."},"id":8853,"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":8847,"nodeType":"ParameterList","parameters":[],"src":"2642:2:47"},"returnParameters":{"id":8848,"nodeType":"ParameterList","parameters":[],"src":"2670:0:47"},"scope":8867,"src":"2634:64:47","stateMutability":"payable","virtual":true,"visibility":"external"},{"body":{"id":8860,"nodeType":"Block","src":"2893:28:47","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8857,"name":"_fallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8845,"src":"2903:9:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":8858,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2903:11:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8859,"nodeType":"ExpressionStatement","src":"2903:11:47"}]},"documentation":{"id":8854,"nodeType":"StructuredDocumentation","src":"2704:149:47","text":" @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\n is empty."},"id":8861,"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":8855,"nodeType":"ParameterList","parameters":[],"src":"2865:2:47"},"returnParameters":{"id":8856,"nodeType":"ParameterList","parameters":[],"src":"2893:0:47"},"scope":8867,"src":"2858:63:47","stateMutability":"payable","virtual":true,"visibility":"external"},{"body":{"id":8865,"nodeType":"Block","src":"3246:2:47","statements":[]},"documentation":{"id":8862,"nodeType":"StructuredDocumentation","src":"2927:270:47","text":" @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\n call, or as part of the Solidity `fallback` or `receive` functions.\n If overriden should call `super._beforeFallback()`."},"id":8866,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeFallback","nameLocation":"3211:15:47","nodeType":"FunctionDefinition","parameters":{"id":8863,"nodeType":"ParameterList","parameters":[],"src":"3226:2:47"},"returnParameters":{"id":8864,"nodeType":"ParameterList","parameters":[],"src":"3246:0:47"},"scope":8867,"src":"3202:46:47","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":8868,"src":"728:2522:47","usedErrors":[],"usedEvents":[]}],"src":"104:3147:47"},"id":47},"hardhat-deploy/solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol":{"ast":{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol","exportedSymbols":{"IBeacon":[8877]},"id":8878,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8869,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"93:23:48"},{"abstract":false,"baseContracts":[],"canonicalName":"IBeacon","contractDependencies":[],"contractKind":"interface","documentation":{"id":8870,"nodeType":"StructuredDocumentation","src":"118:79:48","text":" @dev This is the interface that {BeaconProxy} expects of its beacon."},"fullyImplemented":false,"id":8877,"linearizedBaseContracts":[8877],"name":"IBeacon","nameLocation":"208:7:48","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":8871,"nodeType":"StructuredDocumentation","src":"222:162:48","text":" @dev Must return an address that can be used as a delegate call target.\n {BeaconProxy} will check that this address is a contract."},"functionSelector":"5c60da1b","id":8876,"implemented":false,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"398:14:48","nodeType":"FunctionDefinition","parameters":{"id":8872,"nodeType":"ParameterList","parameters":[],"src":"412:2:48"},"returnParameters":{"id":8875,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8874,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8876,"src":"438:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8873,"name":"address","nodeType":"ElementaryTypeName","src":"438:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"437:9:48"},"scope":8877,"src":"389:58:48","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":8878,"src":"198:251:48","usedErrors":[],"usedEvents":[]}],"src":"93:357:48"},"id":48},"hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/ProxyAdmin.sol":{"ast":{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/ProxyAdmin.sol","exportedSymbols":{"Address":[9481],"Context":[9503],"ERC1967Proxy":[8497],"ERC1967Upgrade":[8815],"IBeacon":[8877],"IERC1822Proxiable":[8444],"Ownable":[8434],"Proxy":[8867],"ProxyAdmin":[9022],"StorageSlot":[9563],"TransparentUpgradeableProxy":[9186]},"id":9023,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8879,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"101:23:49"},{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol","file":"./TransparentUpgradeableProxy.sol","id":8880,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9023,"sourceUnit":9187,"src":"126:43:49","symbolAliases":[],"unitAlias":""},{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/access/Ownable.sol","file":"../../access/Ownable.sol","id":8881,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9023,"sourceUnit":8435,"src":"170:34:49","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":8883,"name":"Ownable","nameLocations":["458:7:49"],"nodeType":"IdentifierPath","referencedDeclaration":8434,"src":"458:7:49"},"id":8884,"nodeType":"InheritanceSpecifier","src":"458:7:49"}],"canonicalName":"ProxyAdmin","contractDependencies":[],"contractKind":"contract","documentation":{"id":8882,"nodeType":"StructuredDocumentation","src":"206:228:49","text":" @dev This is an auxiliary contract meant to be assigned as the admin of a {TransparentUpgradeableProxy}. For an\n explanation of why you would want to use this see the documentation for {TransparentUpgradeableProxy}."},"fullyImplemented":true,"id":9022,"linearizedBaseContracts":[9022,8434,9503],"name":"ProxyAdmin","nameLocation":"444:10:49","nodeType":"ContractDefinition","nodes":[{"body":{"id":8892,"nodeType":"Block","src":"530:2:49","statements":[]},"id":8893,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":8889,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8886,"src":"516:12:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":8890,"kind":"baseConstructorSpecifier","modifierName":{"id":8888,"name":"Ownable","nameLocations":["508:7:49"],"nodeType":"IdentifierPath","referencedDeclaration":8434,"src":"508:7:49"},"nodeType":"ModifierInvocation","src":"508:21:49"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":8887,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8886,"mutability":"mutable","name":"initialOwner","nameLocation":"494:12:49","nodeType":"VariableDeclaration","scope":8893,"src":"486:20:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8885,"name":"address","nodeType":"ElementaryTypeName","src":"486:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"485:22:49"},"returnParameters":{"id":8891,"nodeType":"ParameterList","parameters":[],"src":"530:0:49"},"scope":9022,"src":"473:59:49","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":8926,"nodeType":"Block","src":"806:332:49","statements":[{"assignments":[8903,8905],"declarations":[{"constant":false,"id":8903,"mutability":"mutable","name":"success","nameLocation":"979:7:49","nodeType":"VariableDeclaration","scope":8926,"src":"974:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8902,"name":"bool","nodeType":"ElementaryTypeName","src":"974:4:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":8905,"mutability":"mutable","name":"returndata","nameLocation":"1001:10:49","nodeType":"VariableDeclaration","scope":8926,"src":"988:23:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8904,"name":"bytes","nodeType":"ElementaryTypeName","src":"988:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":8913,"initialValue":{"arguments":[{"hexValue":"5c60da1b","id":8911,"isConstant":false,"isLValue":false,"isPure":true,"kind":"hexString","lValueRequested":false,"nodeType":"Literal","src":"1041:13:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_96a4c6be7716f5be15d118c16bd1d464cb27f01187d0b9218993a5d488a47c29","typeString":"literal_string hex\"5c60da1b\""}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_96a4c6be7716f5be15d118c16bd1d464cb27f01187d0b9218993a5d488a47c29","typeString":"literal_string hex\"5c60da1b\""}],"expression":{"arguments":[{"id":8908,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8897,"src":"1023:5:49","typeDescriptions":{"typeIdentifier":"t_contract$_TransparentUpgradeableProxy_$9186","typeString":"contract TransparentUpgradeableProxy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_TransparentUpgradeableProxy_$9186","typeString":"contract TransparentUpgradeableProxy"}],"id":8907,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1015:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8906,"name":"address","nodeType":"ElementaryTypeName","src":"1015:7:49","typeDescriptions":{}}},"id":8909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1015:14:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1030:10:49","memberName":"staticcall","nodeType":"MemberAccess","src":"1015:25:49","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":8912,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1015:40:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"973:82:49"},{"expression":{"arguments":[{"id":8915,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8903,"src":"1073:7:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8914,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1065:7:49","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":8916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1065:16:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8917,"nodeType":"ExpressionStatement","src":"1065:16:49"},{"expression":{"arguments":[{"id":8920,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8905,"src":"1109:10:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":8922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1122:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8921,"name":"address","nodeType":"ElementaryTypeName","src":"1122:7:49","typeDescriptions":{}}}],"id":8923,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1121:9:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}],"expression":{"id":8918,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1098:3:49","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8919,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1102:6:49","memberName":"decode","nodeType":"MemberAccess","src":"1098:10:49","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":8924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1098:33:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"functionReturnParameters":8901,"id":8925,"nodeType":"Return","src":"1091:40:49"}]},"documentation":{"id":8894,"nodeType":"StructuredDocumentation","src":"538:158:49","text":" @dev Returns the current implementation of `proxy`.\n Requirements:\n - This contract must be the admin of `proxy`."},"functionSelector":"204e1c7a","id":8927,"implemented":true,"kind":"function","modifiers":[],"name":"getProxyImplementation","nameLocation":"710:22:49","nodeType":"FunctionDefinition","parameters":{"id":8898,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8897,"mutability":"mutable","name":"proxy","nameLocation":"761:5:49","nodeType":"VariableDeclaration","scope":8927,"src":"733:33:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_TransparentUpgradeableProxy_$9186","typeString":"contract TransparentUpgradeableProxy"},"typeName":{"id":8896,"nodeType":"UserDefinedTypeName","pathNode":{"id":8895,"name":"TransparentUpgradeableProxy","nameLocations":["733:27:49"],"nodeType":"IdentifierPath","referencedDeclaration":9186,"src":"733:27:49"},"referencedDeclaration":9186,"src":"733:27:49","typeDescriptions":{"typeIdentifier":"t_contract$_TransparentUpgradeableProxy_$9186","typeString":"contract TransparentUpgradeableProxy"}},"visibility":"internal"}],"src":"732:35:49"},"returnParameters":{"id":8901,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8900,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8927,"src":"797:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8899,"name":"address","nodeType":"ElementaryTypeName","src":"797:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"796:9:49"},"scope":9022,"src":"701:437:49","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":8960,"nodeType":"Block","src":"1394:323:49","statements":[{"assignments":[8937,8939],"declarations":[{"constant":false,"id":8937,"mutability":"mutable","name":"success","nameLocation":"1558:7:49","nodeType":"VariableDeclaration","scope":8960,"src":"1553:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8936,"name":"bool","nodeType":"ElementaryTypeName","src":"1553:4:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":8939,"mutability":"mutable","name":"returndata","nameLocation":"1580:10:49","nodeType":"VariableDeclaration","scope":8960,"src":"1567:23:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8938,"name":"bytes","nodeType":"ElementaryTypeName","src":"1567:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":8947,"initialValue":{"arguments":[{"hexValue":"f851a440","id":8945,"isConstant":false,"isLValue":false,"isPure":true,"kind":"hexString","lValueRequested":false,"nodeType":"Literal","src":"1620:13:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb23cf6c353ccb16f0d92c8e6b5c5b425654e65dd07e2d295b394de4cf15afb7","typeString":"literal_string hex\"f851a440\""}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_cb23cf6c353ccb16f0d92c8e6b5c5b425654e65dd07e2d295b394de4cf15afb7","typeString":"literal_string hex\"f851a440\""}],"expression":{"arguments":[{"id":8942,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8931,"src":"1602:5:49","typeDescriptions":{"typeIdentifier":"t_contract$_TransparentUpgradeableProxy_$9186","typeString":"contract TransparentUpgradeableProxy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_TransparentUpgradeableProxy_$9186","typeString":"contract TransparentUpgradeableProxy"}],"id":8941,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1594:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8940,"name":"address","nodeType":"ElementaryTypeName","src":"1594:7:49","typeDescriptions":{}}},"id":8943,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1594:14:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1609:10:49","memberName":"staticcall","nodeType":"MemberAccess","src":"1594:25:49","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":8946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1594:40:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"1552:82:49"},{"expression":{"arguments":[{"id":8949,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8937,"src":"1652:7:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8948,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1644:7:49","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":8950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1644:16:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8951,"nodeType":"ExpressionStatement","src":"1644:16:49"},{"expression":{"arguments":[{"id":8954,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8939,"src":"1688:10:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":8956,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1701:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8955,"name":"address","nodeType":"ElementaryTypeName","src":"1701:7:49","typeDescriptions":{}}}],"id":8957,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1700:9:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}],"expression":{"id":8952,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1677:3:49","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8953,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1681:6:49","memberName":"decode","nodeType":"MemberAccess","src":"1677:10:49","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":8958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1677:33:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"functionReturnParameters":8935,"id":8959,"nodeType":"Return","src":"1670:40:49"}]},"documentation":{"id":8928,"nodeType":"StructuredDocumentation","src":"1144:149:49","text":" @dev Returns the current admin of `proxy`.\n Requirements:\n - This contract must be the admin of `proxy`."},"functionSelector":"f3b7dead","id":8961,"implemented":true,"kind":"function","modifiers":[],"name":"getProxyAdmin","nameLocation":"1307:13:49","nodeType":"FunctionDefinition","parameters":{"id":8932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8931,"mutability":"mutable","name":"proxy","nameLocation":"1349:5:49","nodeType":"VariableDeclaration","scope":8961,"src":"1321:33:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_TransparentUpgradeableProxy_$9186","typeString":"contract TransparentUpgradeableProxy"},"typeName":{"id":8930,"nodeType":"UserDefinedTypeName","pathNode":{"id":8929,"name":"TransparentUpgradeableProxy","nameLocations":["1321:27:49"],"nodeType":"IdentifierPath","referencedDeclaration":9186,"src":"1321:27:49"},"referencedDeclaration":9186,"src":"1321:27:49","typeDescriptions":{"typeIdentifier":"t_contract$_TransparentUpgradeableProxy_$9186","typeString":"contract TransparentUpgradeableProxy"}},"visibility":"internal"}],"src":"1320:35:49"},"returnParameters":{"id":8935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8934,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8961,"src":"1385:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8933,"name":"address","nodeType":"ElementaryTypeName","src":"1385:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1384:9:49"},"scope":9022,"src":"1298:419:49","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":8978,"nodeType":"Block","src":"1995:44:49","statements":[{"expression":{"arguments":[{"id":8975,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8967,"src":"2023:8:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8972,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8965,"src":"2005:5:49","typeDescriptions":{"typeIdentifier":"t_contract$_TransparentUpgradeableProxy_$9186","typeString":"contract TransparentUpgradeableProxy"}},"id":8974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2011:11:49","memberName":"changeAdmin","nodeType":"MemberAccess","referencedDeclaration":9120,"src":"2005:17:49","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":8976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2005:27:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8977,"nodeType":"ExpressionStatement","src":"2005:27:49"}]},"documentation":{"id":8962,"nodeType":"StructuredDocumentation","src":"1723:163:49","text":" @dev Changes the admin of `proxy` to `newAdmin`.\n Requirements:\n - This contract must be the current admin of `proxy`."},"functionSelector":"7eff275e","id":8979,"implemented":true,"kind":"function","modifiers":[{"id":8970,"kind":"modifierInvocation","modifierName":{"id":8969,"name":"onlyOwner","nameLocations":["1985:9:49"],"nodeType":"IdentifierPath","referencedDeclaration":8376,"src":"1985:9:49"},"nodeType":"ModifierInvocation","src":"1985:9:49"}],"name":"changeProxyAdmin","nameLocation":"1900:16:49","nodeType":"FunctionDefinition","parameters":{"id":8968,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8965,"mutability":"mutable","name":"proxy","nameLocation":"1945:5:49","nodeType":"VariableDeclaration","scope":8979,"src":"1917:33:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_TransparentUpgradeableProxy_$9186","typeString":"contract TransparentUpgradeableProxy"},"typeName":{"id":8964,"nodeType":"UserDefinedTypeName","pathNode":{"id":8963,"name":"TransparentUpgradeableProxy","nameLocations":["1917:27:49"],"nodeType":"IdentifierPath","referencedDeclaration":9186,"src":"1917:27:49"},"referencedDeclaration":9186,"src":"1917:27:49","typeDescriptions":{"typeIdentifier":"t_contract$_TransparentUpgradeableProxy_$9186","typeString":"contract TransparentUpgradeableProxy"}},"visibility":"internal"},{"constant":false,"id":8967,"mutability":"mutable","name":"newAdmin","nameLocation":"1960:8:49","nodeType":"VariableDeclaration","scope":8979,"src":"1952:16:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8966,"name":"address","nodeType":"ElementaryTypeName","src":"1952:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1916:53:49"},"returnParameters":{"id":8971,"nodeType":"ParameterList","parameters":[],"src":"1995:0:49"},"scope":9022,"src":"1891:148:49","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":8996,"nodeType":"Block","src":"2345:48:49","statements":[{"expression":{"arguments":[{"id":8993,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8985,"src":"2371:14:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8990,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8983,"src":"2355:5:49","typeDescriptions":{"typeIdentifier":"t_contract$_TransparentUpgradeableProxy_$9186","typeString":"contract TransparentUpgradeableProxy"}},"id":8992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2361:9:49","memberName":"upgradeTo","nodeType":"MemberAccess","referencedDeclaration":9138,"src":"2355:15:49","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":8994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2355:31:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8995,"nodeType":"ExpressionStatement","src":"2355:31:49"}]},"documentation":{"id":8980,"nodeType":"StructuredDocumentation","src":"2045:194:49","text":" @dev Upgrades `proxy` to `implementation`. See {TransparentUpgradeableProxy-upgradeTo}.\n Requirements:\n - This contract must be the admin of `proxy`."},"functionSelector":"99a88ec4","id":8997,"implemented":true,"kind":"function","modifiers":[{"id":8988,"kind":"modifierInvocation","modifierName":{"id":8987,"name":"onlyOwner","nameLocations":["2335:9:49"],"nodeType":"IdentifierPath","referencedDeclaration":8376,"src":"2335:9:49"},"nodeType":"ModifierInvocation","src":"2335:9:49"}],"name":"upgrade","nameLocation":"2253:7:49","nodeType":"FunctionDefinition","parameters":{"id":8986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8983,"mutability":"mutable","name":"proxy","nameLocation":"2289:5:49","nodeType":"VariableDeclaration","scope":8997,"src":"2261:33:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_TransparentUpgradeableProxy_$9186","typeString":"contract TransparentUpgradeableProxy"},"typeName":{"id":8982,"nodeType":"UserDefinedTypeName","pathNode":{"id":8981,"name":"TransparentUpgradeableProxy","nameLocations":["2261:27:49"],"nodeType":"IdentifierPath","referencedDeclaration":9186,"src":"2261:27:49"},"referencedDeclaration":9186,"src":"2261:27:49","typeDescriptions":{"typeIdentifier":"t_contract$_TransparentUpgradeableProxy_$9186","typeString":"contract TransparentUpgradeableProxy"}},"visibility":"internal"},{"constant":false,"id":8985,"mutability":"mutable","name":"implementation","nameLocation":"2304:14:49","nodeType":"VariableDeclaration","scope":8997,"src":"2296:22:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8984,"name":"address","nodeType":"ElementaryTypeName","src":"2296:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2260:59:49"},"returnParameters":{"id":8989,"nodeType":"ParameterList","parameters":[],"src":"2345:0:49"},"scope":9022,"src":"2244:149:49","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":9020,"nodeType":"Block","src":"2824:79:49","statements":[{"expression":{"arguments":[{"id":9016,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9003,"src":"2875:14:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9017,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9005,"src":"2891:4:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":9010,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9001,"src":"2834:5:49","typeDescriptions":{"typeIdentifier":"t_contract$_TransparentUpgradeableProxy_$9186","typeString":"contract TransparentUpgradeableProxy"}},"id":9012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2840:16:49","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":9155,"src":"2834:22:49","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory) payable external"}},"id":9015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":9013,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2864:3:49","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2868:5:49","memberName":"value","nodeType":"MemberAccess","src":"2864:9:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2834:40:49","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$returns$__$value","typeString":"function (address,bytes memory) payable external"}},"id":9018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2834:62:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9019,"nodeType":"ExpressionStatement","src":"2834:62:49"}]},"documentation":{"id":8998,"nodeType":"StructuredDocumentation","src":"2399:255:49","text":" @dev Upgrades `proxy` to `implementation` and calls a function on the new implementation. See\n {TransparentUpgradeableProxy-upgradeToAndCall}.\n Requirements:\n - This contract must be the admin of `proxy`."},"functionSelector":"9623609d","id":9021,"implemented":true,"kind":"function","modifiers":[{"id":9008,"kind":"modifierInvocation","modifierName":{"id":9007,"name":"onlyOwner","nameLocations":["2814:9:49"],"nodeType":"IdentifierPath","referencedDeclaration":8376,"src":"2814:9:49"},"nodeType":"ModifierInvocation","src":"2814:9:49"}],"name":"upgradeAndCall","nameLocation":"2668:14:49","nodeType":"FunctionDefinition","parameters":{"id":9006,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9001,"mutability":"mutable","name":"proxy","nameLocation":"2720:5:49","nodeType":"VariableDeclaration","scope":9021,"src":"2692:33:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_TransparentUpgradeableProxy_$9186","typeString":"contract TransparentUpgradeableProxy"},"typeName":{"id":9000,"nodeType":"UserDefinedTypeName","pathNode":{"id":8999,"name":"TransparentUpgradeableProxy","nameLocations":["2692:27:49"],"nodeType":"IdentifierPath","referencedDeclaration":9186,"src":"2692:27:49"},"referencedDeclaration":9186,"src":"2692:27:49","typeDescriptions":{"typeIdentifier":"t_contract$_TransparentUpgradeableProxy_$9186","typeString":"contract TransparentUpgradeableProxy"}},"visibility":"internal"},{"constant":false,"id":9003,"mutability":"mutable","name":"implementation","nameLocation":"2743:14:49","nodeType":"VariableDeclaration","scope":9021,"src":"2735:22:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9002,"name":"address","nodeType":"ElementaryTypeName","src":"2735:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9005,"mutability":"mutable","name":"data","nameLocation":"2780:4:49","nodeType":"VariableDeclaration","scope":9021,"src":"2767:17:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9004,"name":"bytes","nodeType":"ElementaryTypeName","src":"2767:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2682:108:49"},"returnParameters":{"id":9009,"nodeType":"ParameterList","parameters":[],"src":"2824:0:49"},"scope":9022,"src":"2659:244:49","stateMutability":"payable","virtual":true,"visibility":"public"}],"scope":9023,"src":"435:2470:49","usedErrors":[],"usedEvents":[8342]}],"src":"101:2805:49"},"id":49},"hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol":{"ast":{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol","exportedSymbols":{"Address":[9481],"ERC1967Proxy":[8497],"ERC1967Upgrade":[8815],"IBeacon":[8877],"IERC1822Proxiable":[8444],"Proxy":[8867],"StorageSlot":[9563],"TransparentUpgradeableProxy":[9186]},"id":9187,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9024,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"118:23:50"},{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol","file":"../ERC1967/ERC1967Proxy.sol","id":9025,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9187,"sourceUnit":8498,"src":"143:37:50","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9027,"name":"ERC1967Proxy","nameLocations":["1674:12:50"],"nodeType":"IdentifierPath","referencedDeclaration":8497,"src":"1674:12:50"},"id":9028,"nodeType":"InheritanceSpecifier","src":"1674:12:50"}],"canonicalName":"TransparentUpgradeableProxy","contractDependencies":[],"contractKind":"contract","documentation":{"id":9026,"nodeType":"StructuredDocumentation","src":"182:1451:50","text":" @dev This contract implements a proxy that is upgradeable by an admin.\n To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\n clashing], which can potentially be used in an attack, this contract uses the\n https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\n things that go hand in hand:\n 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\n that call matches one of the admin functions exposed by the proxy itself.\n 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\n implementation. If the admin tries to call a function on the implementation it will fail with an error that says\n \"admin cannot fallback to proxy target\".\n These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\n the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\n to sudden errors when trying to call a function from the proxy implementation.\n Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\n you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy."},"fullyImplemented":true,"id":9186,"linearizedBaseContracts":[9186,8497,8815,8867],"name":"TransparentUpgradeableProxy","nameLocation":"1643:27:50","nodeType":"ContractDefinition","nodes":[{"body":{"id":9062,"nodeType":"Block","src":"2038:124:50","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":9055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":9043,"name":"_ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"2055:11:50","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9053,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e70726f78792e61646d696e","id":9049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2096:21:50","typeDescriptions":{"typeIdentifier":"t_stringliteral_b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104","typeString":"literal_string \"eip1967.proxy.admin\""},"value":"eip1967.proxy.admin"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104","typeString":"literal_string \"eip1967.proxy.admin\""}],"id":9048,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2086:9:50","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":9050,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2086:32:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":9047,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2078:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":9046,"name":"uint256","nodeType":"ElementaryTypeName","src":"2078:7:50","typeDescriptions":{}}},"id":9051,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2078:41:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":9052,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2122:1:50","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2078:45:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9045,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2070:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":9044,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2070:7:50","typeDescriptions":{}}},"id":9054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2070:54:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2055:69:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9042,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"2048:6:50","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2048:77:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9057,"nodeType":"ExpressionStatement","src":"2048:77:50"},{"expression":{"arguments":[{"id":9059,"name":"admin_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9033,"src":"2148:6:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9058,"name":"_changeAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8718,"src":"2135:12:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":9060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2135:20:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9061,"nodeType":"ExpressionStatement","src":"2135:20:50"}]},"documentation":{"id":9029,"nodeType":"StructuredDocumentation","src":"1693:210:50","text":" @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\n optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"id":9063,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":9038,"name":"_logic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9031,"src":"2023:6:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9039,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9035,"src":"2031:5:50","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":9040,"kind":"baseConstructorSpecifier","modifierName":{"id":9037,"name":"ERC1967Proxy","nameLocations":["2010:12:50"],"nodeType":"IdentifierPath","referencedDeclaration":8497,"src":"2010:12:50"},"nodeType":"ModifierInvocation","src":"2010:27:50"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":9036,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9031,"mutability":"mutable","name":"_logic","nameLocation":"1937:6:50","nodeType":"VariableDeclaration","scope":9063,"src":"1929:14:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9030,"name":"address","nodeType":"ElementaryTypeName","src":"1929:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9033,"mutability":"mutable","name":"admin_","nameLocation":"1961:6:50","nodeType":"VariableDeclaration","scope":9063,"src":"1953:14:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9032,"name":"address","nodeType":"ElementaryTypeName","src":"1953:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9035,"mutability":"mutable","name":"_data","nameLocation":"1990:5:50","nodeType":"VariableDeclaration","scope":9063,"src":"1977:18:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9034,"name":"bytes","nodeType":"ElementaryTypeName","src":"1977:5:50","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1919:82:50"},"returnParameters":{"id":9041,"nodeType":"ParameterList","parameters":[],"src":"2038:0:50"},"scope":9186,"src":"1908:254:50","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":9078,"nodeType":"Block","src":"2322:115:50","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9066,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2336:3:50","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2340:6:50","memberName":"sender","nodeType":"MemberAccess","src":"2336:10:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":9068,"name":"_getAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8675,"src":"2350:9:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":9069,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2350:11:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2336:25:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":9076,"nodeType":"Block","src":"2395:36:50","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":9073,"name":"_fallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8845,"src":"2409:9:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":9074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2409:11:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9075,"nodeType":"ExpressionStatement","src":"2409:11:50"}]},"id":9077,"nodeType":"IfStatement","src":"2332:99:50","trueBody":{"id":9072,"nodeType":"Block","src":"2363:26:50","statements":[{"id":9071,"nodeType":"PlaceholderStatement","src":"2377:1:50"}]}}]},"documentation":{"id":9064,"nodeType":"StructuredDocumentation","src":"2168:130:50","text":" @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin."},"id":9079,"name":"ifAdmin","nameLocation":"2312:7:50","nodeType":"ModifierDefinition","parameters":{"id":9065,"nodeType":"ParameterList","parameters":[],"src":"2319:2:50"},"src":"2303:134:50","virtual":false,"visibility":"internal"},{"body":{"id":9092,"nodeType":"Block","src":"2938:37:50","statements":[{"expression":{"id":9090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9087,"name":"admin_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9085,"src":"2948:6:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":9088,"name":"_getAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8675,"src":"2957:9:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":9089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2957:11:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2948:20:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9091,"nodeType":"ExpressionStatement","src":"2948:20:50"}]},"documentation":{"id":9080,"nodeType":"StructuredDocumentation","src":"2443:431:50","text":" @dev Returns the current admin.\n NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\n TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"functionSelector":"f851a440","id":9093,"implemented":true,"kind":"function","modifiers":[{"id":9083,"kind":"modifierInvocation","modifierName":{"id":9082,"name":"ifAdmin","nameLocations":["2905:7:50"],"nodeType":"IdentifierPath","referencedDeclaration":9079,"src":"2905:7:50"},"nodeType":"ModifierInvocation","src":"2905:7:50"}],"name":"admin","nameLocation":"2888:5:50","nodeType":"FunctionDefinition","parameters":{"id":9081,"nodeType":"ParameterList","parameters":[],"src":"2893:2:50"},"returnParameters":{"id":9086,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9085,"mutability":"mutable","name":"admin_","nameLocation":"2930:6:50","nodeType":"VariableDeclaration","scope":9093,"src":"2922:14:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9084,"name":"address","nodeType":"ElementaryTypeName","src":"2922:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2921:16:50"},"scope":9186,"src":"2879:96:50","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9106,"nodeType":"Block","src":"3512:52:50","statements":[{"expression":{"id":9104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9101,"name":"implementation_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9099,"src":"3522:15:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":9102,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[8496],"referencedDeclaration":8496,"src":"3540:15:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":9103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3540:17:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3522:35:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9105,"nodeType":"ExpressionStatement","src":"3522:35:50"}]},"documentation":{"id":9094,"nodeType":"StructuredDocumentation","src":"2981:449:50","text":" @dev Returns the current implementation.\n NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\n TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"functionSelector":"5c60da1b","id":9107,"implemented":true,"kind":"function","modifiers":[{"id":9097,"kind":"modifierInvocation","modifierName":{"id":9096,"name":"ifAdmin","nameLocations":["3470:7:50"],"nodeType":"IdentifierPath","referencedDeclaration":9079,"src":"3470:7:50"},"nodeType":"ModifierInvocation","src":"3470:7:50"}],"name":"implementation","nameLocation":"3444:14:50","nodeType":"FunctionDefinition","parameters":{"id":9095,"nodeType":"ParameterList","parameters":[],"src":"3458:2:50"},"returnParameters":{"id":9100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9099,"mutability":"mutable","name":"implementation_","nameLocation":"3495:15:50","nodeType":"VariableDeclaration","scope":9107,"src":"3487:23:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9098,"name":"address","nodeType":"ElementaryTypeName","src":"3487:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3486:25:50"},"scope":9186,"src":"3435:129:50","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9119,"nodeType":"Block","src":"3833:39:50","statements":[{"expression":{"arguments":[{"id":9116,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9110,"src":"3856:8:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9115,"name":"_changeAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8718,"src":"3843:12:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":9117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3843:22:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9118,"nodeType":"ExpressionStatement","src":"3843:22:50"}]},"documentation":{"id":9108,"nodeType":"StructuredDocumentation","src":"3570:194:50","text":" @dev Changes the admin of the proxy.\n Emits an {AdminChanged} event.\n NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}."},"functionSelector":"8f283970","id":9120,"implemented":true,"kind":"function","modifiers":[{"id":9113,"kind":"modifierInvocation","modifierName":{"id":9112,"name":"ifAdmin","nameLocations":["3825:7:50"],"nodeType":"IdentifierPath","referencedDeclaration":9079,"src":"3825:7:50"},"nodeType":"ModifierInvocation","src":"3825:7:50"}],"name":"changeAdmin","nameLocation":"3778:11:50","nodeType":"FunctionDefinition","parameters":{"id":9111,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9110,"mutability":"mutable","name":"newAdmin","nameLocation":"3798:8:50","nodeType":"VariableDeclaration","scope":9120,"src":"3790:16:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9109,"name":"address","nodeType":"ElementaryTypeName","src":"3790:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3789:18:50"},"returnParameters":{"id":9114,"nodeType":"ParameterList","parameters":[],"src":"3833:0:50"},"scope":9186,"src":"3769:103:50","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"body":{"id":9137,"nodeType":"Block","src":"4095:71:50","statements":[{"expression":{"arguments":[{"id":9129,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9123,"src":"4123:17:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"","id":9132,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4148:2:50","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":9131,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4142:5:50","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":9130,"name":"bytes","nodeType":"ElementaryTypeName","src":"4142:5:50","typeDescriptions":{}}},"id":9133,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4142:9:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"66616c7365","id":9134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4153:5:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9128,"name":"_upgradeToAndCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8598,"src":"4105:17:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$","typeString":"function (address,bytes memory,bool)"}},"id":9135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4105:54:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9136,"nodeType":"ExpressionStatement","src":"4105:54:50"}]},"documentation":{"id":9121,"nodeType":"StructuredDocumentation","src":"3878:149:50","text":" @dev Upgrade the implementation of the proxy.\n NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"functionSelector":"3659cfe6","id":9138,"implemented":true,"kind":"function","modifiers":[{"id":9126,"kind":"modifierInvocation","modifierName":{"id":9125,"name":"ifAdmin","nameLocations":["4087:7:50"],"nodeType":"IdentifierPath","referencedDeclaration":9079,"src":"4087:7:50"},"nodeType":"ModifierInvocation","src":"4087:7:50"}],"name":"upgradeTo","nameLocation":"4041:9:50","nodeType":"FunctionDefinition","parameters":{"id":9124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9123,"mutability":"mutable","name":"newImplementation","nameLocation":"4059:17:50","nodeType":"VariableDeclaration","scope":9138,"src":"4051:25:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9122,"name":"address","nodeType":"ElementaryTypeName","src":"4051:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4050:27:50"},"returnParameters":{"id":9127,"nodeType":"ParameterList","parameters":[],"src":"4095:0:50"},"scope":9186,"src":"4032:134:50","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9154,"nodeType":"Block","src":"4641:65:50","statements":[{"expression":{"arguments":[{"id":9149,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9141,"src":"4669:17:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9150,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9143,"src":"4688:4:50","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"hexValue":"74727565","id":9151,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4694:4:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9148,"name":"_upgradeToAndCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8598,"src":"4651:17:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$","typeString":"function (address,bytes memory,bool)"}},"id":9152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4651:48:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9153,"nodeType":"ExpressionStatement","src":"4651:48:50"}]},"documentation":{"id":9139,"nodeType":"StructuredDocumentation","src":"4172:365:50","text":" @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\n by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\n proxied contract.\n NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."},"functionSelector":"4f1ef286","id":9155,"implemented":true,"kind":"function","modifiers":[{"id":9146,"kind":"modifierInvocation","modifierName":{"id":9145,"name":"ifAdmin","nameLocations":["4633:7:50"],"nodeType":"IdentifierPath","referencedDeclaration":9079,"src":"4633:7:50"},"nodeType":"ModifierInvocation","src":"4633:7:50"}],"name":"upgradeToAndCall","nameLocation":"4551:16:50","nodeType":"FunctionDefinition","parameters":{"id":9144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9141,"mutability":"mutable","name":"newImplementation","nameLocation":"4576:17:50","nodeType":"VariableDeclaration","scope":9155,"src":"4568:25:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9140,"name":"address","nodeType":"ElementaryTypeName","src":"4568:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9143,"mutability":"mutable","name":"data","nameLocation":"4610:4:50","nodeType":"VariableDeclaration","scope":9155,"src":"4595:19:50","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":9142,"name":"bytes","nodeType":"ElementaryTypeName","src":"4595:5:50","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4567:48:50"},"returnParameters":{"id":9147,"nodeType":"ParameterList","parameters":[],"src":"4641:0:50"},"scope":9186,"src":"4542:164:50","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":9164,"nodeType":"Block","src":"4825:35:50","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":9161,"name":"_getAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8675,"src":"4842:9:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":9162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4842:11:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":9160,"id":9163,"nodeType":"Return","src":"4835:18:50"}]},"documentation":{"id":9156,"nodeType":"StructuredDocumentation","src":"4712:50:50","text":" @dev Returns the current admin."},"id":9165,"implemented":true,"kind":"function","modifiers":[],"name":"_admin","nameLocation":"4776:6:50","nodeType":"FunctionDefinition","parameters":{"id":9157,"nodeType":"ParameterList","parameters":[],"src":"4782:2:50"},"returnParameters":{"id":9160,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9159,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9165,"src":"4816:7:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9158,"name":"address","nodeType":"ElementaryTypeName","src":"4816:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4815:9:50"},"scope":9186,"src":"4767:93:50","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[8866],"body":{"id":9184,"nodeType":"Block","src":"5034:154:50","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9171,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5052:3:50","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5056:6:50","memberName":"sender","nodeType":"MemberAccess","src":"5052:10:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":9173,"name":"_getAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8675,"src":"5066:9:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":9174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5066:11:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5052:25:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5472616e73706172656e745570677261646561626c6550726f78793a2061646d696e2063616e6e6f742066616c6c6261636b20746f2070726f787920746172676574","id":9176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5079:68:50","typeDescriptions":{"typeIdentifier":"t_stringliteral_f5d2ea39d7e6c7d19dc32ccc2bd7ca26b7aa4a603ef4aa6f2b205c93c3ffe43d","typeString":"literal_string \"TransparentUpgradeableProxy: admin cannot fallback to proxy target\""},"value":"TransparentUpgradeableProxy: admin cannot fallback to proxy target"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f5d2ea39d7e6c7d19dc32ccc2bd7ca26b7aa4a603ef4aa6f2b205c93c3ffe43d","typeString":"literal_string \"TransparentUpgradeableProxy: admin cannot fallback to proxy target\""}],"id":9170,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5044:7:50","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5044:104:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9178,"nodeType":"ExpressionStatement","src":"5044:104:50"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9179,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"5158:5:50","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_TransparentUpgradeableProxy_$9186_$","typeString":"type(contract super TransparentUpgradeableProxy)"}},"id":9181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5164:15:50","memberName":"_beforeFallback","nodeType":"MemberAccess","referencedDeclaration":8866,"src":"5158:21:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":9182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5158:23:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9183,"nodeType":"ExpressionStatement","src":"5158:23:50"}]},"documentation":{"id":9166,"nodeType":"StructuredDocumentation","src":"4866:110:50","text":" @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}."},"id":9185,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeFallback","nameLocation":"4990:15:50","nodeType":"FunctionDefinition","overrides":{"id":9168,"nodeType":"OverrideSpecifier","overrides":[],"src":"5025:8:50"},"parameters":{"id":9167,"nodeType":"ParameterList","parameters":[],"src":"5005:2:50"},"returnParameters":{"id":9169,"nodeType":"ParameterList","parameters":[],"src":"5034:0:50"},"scope":9186,"src":"4981:207:50","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":9187,"src":"1634:3556:50","usedErrors":[],"usedEvents":[8516,8662,8727]}],"src":"118:5073:50"},"id":50},"hardhat-deploy/solc_0.8/openzeppelin/utils/Address.sol":{"ast":{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/utils/Address.sol","exportedSymbols":{"Address":[9481]},"id":9482,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9188,"literals":["solidity","^","0.8",".1"],"nodeType":"PragmaDirective","src":"106:23:51"},{"abstract":false,"baseContracts":[],"canonicalName":"Address","contractDependencies":[],"contractKind":"library","documentation":{"id":9189,"nodeType":"StructuredDocumentation","src":"131:67:51","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":9481,"linearizedBaseContracts":[9481],"name":"Address","nameLocation":"207:7:51","nodeType":"ContractDefinition","nodes":[{"body":{"id":9203,"nodeType":"Block","src":"1246:254:51","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":9197,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9192,"src":"1470:7:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1478:4:51","memberName":"code","nodeType":"MemberAccess","src":"1470:12:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":9199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1483:6:51","memberName":"length","nodeType":"MemberAccess","src":"1470:19:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1492:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1470:23:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9196,"id":9202,"nodeType":"Return","src":"1463:30:51"}]},"documentation":{"id":9190,"nodeType":"StructuredDocumentation","src":"221:954:51","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n  - an externally-owned account\n  - a contract in construction\n  - an address where a contract will be created\n  - an address where a contract lived, but was destroyed\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="},"id":9204,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nameLocation":"1189:10:51","nodeType":"FunctionDefinition","parameters":{"id":9193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9192,"mutability":"mutable","name":"account","nameLocation":"1208:7:51","nodeType":"VariableDeclaration","scope":9204,"src":"1200:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9191,"name":"address","nodeType":"ElementaryTypeName","src":"1200:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1199:17:51"},"returnParameters":{"id":9196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9195,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9204,"src":"1240:4:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9194,"name":"bool","nodeType":"ElementaryTypeName","src":"1240:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1239:6:51"},"scope":9481,"src":"1180:320:51","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":9237,"nodeType":"Block","src":"2488:241:51","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":9215,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2514:4:51","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$9481","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$9481","typeString":"library Address"}],"id":9214,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2506:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9213,"name":"address","nodeType":"ElementaryTypeName","src":"2506:7:51","typeDescriptions":{}}},"id":9216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2506:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2520:7:51","memberName":"balance","nodeType":"MemberAccess","src":"2506:21:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":9218,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9209,"src":"2531:6:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2506:31:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":9220,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2539:31:51","typeDescriptions":{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""},"value":"Address: insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""}],"id":9212,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2498:7:51","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9221,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2498:73:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9222,"nodeType":"ExpressionStatement","src":"2498:73:51"},{"assignments":[9224,null],"declarations":[{"constant":false,"id":9224,"mutability":"mutable","name":"success","nameLocation":"2588:7:51","nodeType":"VariableDeclaration","scope":9237,"src":"2583:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9223,"name":"bool","nodeType":"ElementaryTypeName","src":"2583:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":9231,"initialValue":{"arguments":[{"hexValue":"","id":9229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2631:2:51","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":9225,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9207,"src":"2601:9:51","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":9226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2611:4:51","memberName":"call","nodeType":"MemberAccess","src":"2601:14:51","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":9228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":9227,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9209,"src":"2623:6:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2601:29:51","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":9230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2601:33:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2582:52:51"},{"expression":{"arguments":[{"id":9233,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9224,"src":"2652:7:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":9234,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2661:60:51","typeDescriptions":{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""},"value":"Address: unable to send value, recipient may have reverted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"id":9232,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2644:7:51","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2644:78:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9236,"nodeType":"ExpressionStatement","src":"2644:78:51"}]},"documentation":{"id":9205,"nodeType":"StructuredDocumentation","src":"1506:906:51","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":9238,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"2426:9:51","nodeType":"FunctionDefinition","parameters":{"id":9210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9207,"mutability":"mutable","name":"recipient","nameLocation":"2452:9:51","nodeType":"VariableDeclaration","scope":9238,"src":"2436:25:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":9206,"name":"address","nodeType":"ElementaryTypeName","src":"2436:15:51","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":9209,"mutability":"mutable","name":"amount","nameLocation":"2471:6:51","nodeType":"VariableDeclaration","scope":9238,"src":"2463:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9208,"name":"uint256","nodeType":"ElementaryTypeName","src":"2463:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2435:43:51"},"returnParameters":{"id":9211,"nodeType":"ParameterList","parameters":[],"src":"2488:0:51"},"scope":9481,"src":"2417:312:51","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9254,"nodeType":"Block","src":"3560:84:51","statements":[{"expression":{"arguments":[{"id":9249,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9241,"src":"3590:6:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9250,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9243,"src":"3598:4:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":9251,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3604:32:51","typeDescriptions":{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""},"value":"Address: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""}],"id":9248,"name":"functionCall","nodeType":"Identifier","overloadedDeclarations":[9255,9275],"referencedDeclaration":9275,"src":"3577:12:51","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":9252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3577:60:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":9247,"id":9253,"nodeType":"Return","src":"3570:67:51"}]},"documentation":{"id":9239,"nodeType":"StructuredDocumentation","src":"2735:731:51","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"},"id":9255,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3480:12:51","nodeType":"FunctionDefinition","parameters":{"id":9244,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9241,"mutability":"mutable","name":"target","nameLocation":"3501:6:51","nodeType":"VariableDeclaration","scope":9255,"src":"3493:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9240,"name":"address","nodeType":"ElementaryTypeName","src":"3493:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9243,"mutability":"mutable","name":"data","nameLocation":"3522:4:51","nodeType":"VariableDeclaration","scope":9255,"src":"3509:17:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9242,"name":"bytes","nodeType":"ElementaryTypeName","src":"3509:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3492:35:51"},"returnParameters":{"id":9247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9246,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9255,"src":"3546:12:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9245,"name":"bytes","nodeType":"ElementaryTypeName","src":"3546:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3545:14:51"},"scope":9481,"src":"3471:173:51","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9274,"nodeType":"Block","src":"4013:76:51","statements":[{"expression":{"arguments":[{"id":9268,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9258,"src":"4052:6:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9269,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9260,"src":"4060:4:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":9270,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4066:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":9271,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9262,"src":"4069:12:51","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":9267,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[9295,9345],"referencedDeclaration":9345,"src":"4030:21:51","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":9272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4030:52:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":9266,"id":9273,"nodeType":"Return","src":"4023:59:51"}]},"documentation":{"id":9256,"nodeType":"StructuredDocumentation","src":"3650:211:51","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":9275,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3875:12:51","nodeType":"FunctionDefinition","parameters":{"id":9263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9258,"mutability":"mutable","name":"target","nameLocation":"3905:6:51","nodeType":"VariableDeclaration","scope":9275,"src":"3897:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9257,"name":"address","nodeType":"ElementaryTypeName","src":"3897:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9260,"mutability":"mutable","name":"data","nameLocation":"3934:4:51","nodeType":"VariableDeclaration","scope":9275,"src":"3921:17:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9259,"name":"bytes","nodeType":"ElementaryTypeName","src":"3921:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":9262,"mutability":"mutable","name":"errorMessage","nameLocation":"3962:12:51","nodeType":"VariableDeclaration","scope":9275,"src":"3948:26:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9261,"name":"string","nodeType":"ElementaryTypeName","src":"3948:6:51","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3887:93:51"},"returnParameters":{"id":9266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9265,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9275,"src":"3999:12:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9264,"name":"bytes","nodeType":"ElementaryTypeName","src":"3999:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3998:14:51"},"scope":9481,"src":"3866:223:51","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9294,"nodeType":"Block","src":"4594:111:51","statements":[{"expression":{"arguments":[{"id":9288,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9278,"src":"4633:6:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9289,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9280,"src":"4641:4:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":9290,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9282,"src":"4647:5:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":9291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4654:43:51","typeDescriptions":{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""},"value":"Address: low-level call with value failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""}],"id":9287,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[9295,9345],"referencedDeclaration":9345,"src":"4611:21:51","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":9292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4611:87:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":9286,"id":9293,"nodeType":"Return","src":"4604:94:51"}]},"documentation":{"id":9276,"nodeType":"StructuredDocumentation","src":"4095:351:51","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"},"id":9295,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4460:21:51","nodeType":"FunctionDefinition","parameters":{"id":9283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9278,"mutability":"mutable","name":"target","nameLocation":"4499:6:51","nodeType":"VariableDeclaration","scope":9295,"src":"4491:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9277,"name":"address","nodeType":"ElementaryTypeName","src":"4491:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9280,"mutability":"mutable","name":"data","nameLocation":"4528:4:51","nodeType":"VariableDeclaration","scope":9295,"src":"4515:17:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9279,"name":"bytes","nodeType":"ElementaryTypeName","src":"4515:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":9282,"mutability":"mutable","name":"value","nameLocation":"4550:5:51","nodeType":"VariableDeclaration","scope":9295,"src":"4542:13:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9281,"name":"uint256","nodeType":"ElementaryTypeName","src":"4542:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4481:80:51"},"returnParameters":{"id":9286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9285,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9295,"src":"4580:12:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9284,"name":"bytes","nodeType":"ElementaryTypeName","src":"4580:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4579:14:51"},"scope":9481,"src":"4451:254:51","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9344,"nodeType":"Block","src":"5132:320:51","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":9312,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5158:4:51","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$9481","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$9481","typeString":"library Address"}],"id":9311,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5150:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9310,"name":"address","nodeType":"ElementaryTypeName","src":"5150:7:51","typeDescriptions":{}}},"id":9313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5150:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5164:7:51","memberName":"balance","nodeType":"MemberAccess","src":"5150:21:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":9315,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9302,"src":"5175:5:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5150:30:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":9317,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5182:40:51","typeDescriptions":{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""},"value":"Address: insufficient balance for call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""}],"id":9309,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5142:7:51","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5142:81:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9319,"nodeType":"ExpressionStatement","src":"5142:81:51"},{"expression":{"arguments":[{"arguments":[{"id":9322,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9298,"src":"5252:6:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9321,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9204,"src":"5241:10:51","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":9323,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5241:18:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":9324,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5261:31:51","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""},"value":"Address: call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""}],"id":9320,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5233:7:51","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5233:60:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9326,"nodeType":"ExpressionStatement","src":"5233:60:51"},{"assignments":[9328,9330],"declarations":[{"constant":false,"id":9328,"mutability":"mutable","name":"success","nameLocation":"5310:7:51","nodeType":"VariableDeclaration","scope":9344,"src":"5305:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9327,"name":"bool","nodeType":"ElementaryTypeName","src":"5305:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9330,"mutability":"mutable","name":"returndata","nameLocation":"5332:10:51","nodeType":"VariableDeclaration","scope":9344,"src":"5319:23:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9329,"name":"bytes","nodeType":"ElementaryTypeName","src":"5319:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":9337,"initialValue":{"arguments":[{"id":9335,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9300,"src":"5372:4:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":9331,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9298,"src":"5346:6:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5353:4:51","memberName":"call","nodeType":"MemberAccess","src":"5346:11:51","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":9334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":9333,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9302,"src":"5365:5:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5346:25:51","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":9336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5346:31:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5304:73:51"},{"expression":{"arguments":[{"id":9339,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9328,"src":"5411:7:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":9340,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9330,"src":"5420:10:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":9341,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9304,"src":"5432:12:51","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":9338,"name":"verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9480,"src":"5394:16:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bool,bytes memory,string memory) pure returns (bytes memory)"}},"id":9342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5394:51:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":9308,"id":9343,"nodeType":"Return","src":"5387:58:51"}]},"documentation":{"id":9296,"nodeType":"StructuredDocumentation","src":"4711:237:51","text":" @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":9345,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4962:21:51","nodeType":"FunctionDefinition","parameters":{"id":9305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9298,"mutability":"mutable","name":"target","nameLocation":"5001:6:51","nodeType":"VariableDeclaration","scope":9345,"src":"4993:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9297,"name":"address","nodeType":"ElementaryTypeName","src":"4993:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9300,"mutability":"mutable","name":"data","nameLocation":"5030:4:51","nodeType":"VariableDeclaration","scope":9345,"src":"5017:17:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9299,"name":"bytes","nodeType":"ElementaryTypeName","src":"5017:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":9302,"mutability":"mutable","name":"value","nameLocation":"5052:5:51","nodeType":"VariableDeclaration","scope":9345,"src":"5044:13:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9301,"name":"uint256","nodeType":"ElementaryTypeName","src":"5044:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9304,"mutability":"mutable","name":"errorMessage","nameLocation":"5081:12:51","nodeType":"VariableDeclaration","scope":9345,"src":"5067:26:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9303,"name":"string","nodeType":"ElementaryTypeName","src":"5067:6:51","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4983:116:51"},"returnParameters":{"id":9308,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9307,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9345,"src":"5118:12:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9306,"name":"bytes","nodeType":"ElementaryTypeName","src":"5118:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5117:14:51"},"scope":9481,"src":"4953:499:51","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9361,"nodeType":"Block","src":"5729:97:51","statements":[{"expression":{"arguments":[{"id":9356,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9348,"src":"5765:6:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9357,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9350,"src":"5773:4:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":9358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5779:39:51","typeDescriptions":{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""},"value":"Address: low-level static call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""}],"id":9355,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[9362,9397],"referencedDeclaration":9397,"src":"5746:18:51","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) view returns (bytes memory)"}},"id":9359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5746:73:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":9354,"id":9360,"nodeType":"Return","src":"5739:80:51"}]},"documentation":{"id":9346,"nodeType":"StructuredDocumentation","src":"5458:166:51","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":9362,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"5638:18:51","nodeType":"FunctionDefinition","parameters":{"id":9351,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9348,"mutability":"mutable","name":"target","nameLocation":"5665:6:51","nodeType":"VariableDeclaration","scope":9362,"src":"5657:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9347,"name":"address","nodeType":"ElementaryTypeName","src":"5657:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9350,"mutability":"mutable","name":"data","nameLocation":"5686:4:51","nodeType":"VariableDeclaration","scope":9362,"src":"5673:17:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9349,"name":"bytes","nodeType":"ElementaryTypeName","src":"5673:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5656:35:51"},"returnParameters":{"id":9354,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9353,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9362,"src":"5715:12:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9352,"name":"bytes","nodeType":"ElementaryTypeName","src":"5715:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5714:14:51"},"scope":9481,"src":"5629:197:51","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":9396,"nodeType":"Block","src":"6168:228:51","statements":[{"expression":{"arguments":[{"arguments":[{"id":9376,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9365,"src":"6197:6:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9375,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9204,"src":"6186:10:51","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":9377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6186:18:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374","id":9378,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6206:38:51","typeDescriptions":{"typeIdentifier":"t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9","typeString":"literal_string \"Address: static call to non-contract\""},"value":"Address: static call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9","typeString":"literal_string \"Address: static call to non-contract\""}],"id":9374,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"6178:7:51","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6178:67:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9380,"nodeType":"ExpressionStatement","src":"6178:67:51"},{"assignments":[9382,9384],"declarations":[{"constant":false,"id":9382,"mutability":"mutable","name":"success","nameLocation":"6262:7:51","nodeType":"VariableDeclaration","scope":9396,"src":"6257:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9381,"name":"bool","nodeType":"ElementaryTypeName","src":"6257:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9384,"mutability":"mutable","name":"returndata","nameLocation":"6284:10:51","nodeType":"VariableDeclaration","scope":9396,"src":"6271:23:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9383,"name":"bytes","nodeType":"ElementaryTypeName","src":"6271:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":9389,"initialValue":{"arguments":[{"id":9387,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9367,"src":"6316:4:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":9385,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9365,"src":"6298:6:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6305:10:51","memberName":"staticcall","nodeType":"MemberAccess","src":"6298:17:51","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":9388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6298:23:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6256:65:51"},{"expression":{"arguments":[{"id":9391,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9382,"src":"6355:7:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":9392,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9384,"src":"6364:10:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":9393,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9369,"src":"6376:12:51","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":9390,"name":"verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9480,"src":"6338:16:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bool,bytes memory,string memory) pure returns (bytes memory)"}},"id":9394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6338:51:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":9373,"id":9395,"nodeType":"Return","src":"6331:58:51"}]},"documentation":{"id":9363,"nodeType":"StructuredDocumentation","src":"5832:173:51","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":9397,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"6019:18:51","nodeType":"FunctionDefinition","parameters":{"id":9370,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9365,"mutability":"mutable","name":"target","nameLocation":"6055:6:51","nodeType":"VariableDeclaration","scope":9397,"src":"6047:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9364,"name":"address","nodeType":"ElementaryTypeName","src":"6047:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9367,"mutability":"mutable","name":"data","nameLocation":"6084:4:51","nodeType":"VariableDeclaration","scope":9397,"src":"6071:17:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9366,"name":"bytes","nodeType":"ElementaryTypeName","src":"6071:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":9369,"mutability":"mutable","name":"errorMessage","nameLocation":"6112:12:51","nodeType":"VariableDeclaration","scope":9397,"src":"6098:26:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9368,"name":"string","nodeType":"ElementaryTypeName","src":"6098:6:51","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6037:93:51"},"returnParameters":{"id":9373,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9372,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9397,"src":"6154:12:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9371,"name":"bytes","nodeType":"ElementaryTypeName","src":"6154:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6153:14:51"},"scope":9481,"src":"6010:386:51","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":9413,"nodeType":"Block","src":"6672:101:51","statements":[{"expression":{"arguments":[{"id":9408,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9400,"src":"6710:6:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9409,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9402,"src":"6718:4:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","id":9410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6724:41:51","typeDescriptions":{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""},"value":"Address: low-level delegate call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""}],"id":9407,"name":"functionDelegateCall","nodeType":"Identifier","overloadedDeclarations":[9414,9449],"referencedDeclaration":9449,"src":"6689:20:51","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":9411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6689:77:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":9406,"id":9412,"nodeType":"Return","src":"6682:84:51"}]},"documentation":{"id":9398,"nodeType":"StructuredDocumentation","src":"6402:168:51","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":9414,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"6584:20:51","nodeType":"FunctionDefinition","parameters":{"id":9403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9400,"mutability":"mutable","name":"target","nameLocation":"6613:6:51","nodeType":"VariableDeclaration","scope":9414,"src":"6605:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9399,"name":"address","nodeType":"ElementaryTypeName","src":"6605:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9402,"mutability":"mutable","name":"data","nameLocation":"6634:4:51","nodeType":"VariableDeclaration","scope":9414,"src":"6621:17:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9401,"name":"bytes","nodeType":"ElementaryTypeName","src":"6621:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6604:35:51"},"returnParameters":{"id":9406,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9405,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9414,"src":"6658:12:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9404,"name":"bytes","nodeType":"ElementaryTypeName","src":"6658:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6657:14:51"},"scope":9481,"src":"6575:198:51","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9448,"nodeType":"Block","src":"7114:232:51","statements":[{"expression":{"arguments":[{"arguments":[{"id":9428,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9417,"src":"7143:6:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9427,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9204,"src":"7132:10:51","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":9429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7132:18:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374","id":9430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7152:40:51","typeDescriptions":{"typeIdentifier":"t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520","typeString":"literal_string \"Address: delegate call to non-contract\""},"value":"Address: delegate call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520","typeString":"literal_string \"Address: delegate call to non-contract\""}],"id":9426,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"7124:7:51","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7124:69:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9432,"nodeType":"ExpressionStatement","src":"7124:69:51"},{"assignments":[9434,9436],"declarations":[{"constant":false,"id":9434,"mutability":"mutable","name":"success","nameLocation":"7210:7:51","nodeType":"VariableDeclaration","scope":9448,"src":"7205:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9433,"name":"bool","nodeType":"ElementaryTypeName","src":"7205:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9436,"mutability":"mutable","name":"returndata","nameLocation":"7232:10:51","nodeType":"VariableDeclaration","scope":9448,"src":"7219:23:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9435,"name":"bytes","nodeType":"ElementaryTypeName","src":"7219:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":9441,"initialValue":{"arguments":[{"id":9439,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9419,"src":"7266:4:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":9437,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9417,"src":"7246:6:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7253:12:51","memberName":"delegatecall","nodeType":"MemberAccess","src":"7246:19:51","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":9440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7246:25:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7204:67:51"},{"expression":{"arguments":[{"id":9443,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9434,"src":"7305:7:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":9444,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9436,"src":"7314:10:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":9445,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9421,"src":"7326:12:51","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":9442,"name":"verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9480,"src":"7288:16:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bool,bytes memory,string memory) pure returns (bytes memory)"}},"id":9446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7288:51:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":9425,"id":9447,"nodeType":"Return","src":"7281:58:51"}]},"documentation":{"id":9415,"nodeType":"StructuredDocumentation","src":"6779:175:51","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":9449,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"6968:20:51","nodeType":"FunctionDefinition","parameters":{"id":9422,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9417,"mutability":"mutable","name":"target","nameLocation":"7006:6:51","nodeType":"VariableDeclaration","scope":9449,"src":"6998:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9416,"name":"address","nodeType":"ElementaryTypeName","src":"6998:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9419,"mutability":"mutable","name":"data","nameLocation":"7035:4:51","nodeType":"VariableDeclaration","scope":9449,"src":"7022:17:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9418,"name":"bytes","nodeType":"ElementaryTypeName","src":"7022:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":9421,"mutability":"mutable","name":"errorMessage","nameLocation":"7063:12:51","nodeType":"VariableDeclaration","scope":9449,"src":"7049:26:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9420,"name":"string","nodeType":"ElementaryTypeName","src":"7049:6:51","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6988:93:51"},"returnParameters":{"id":9425,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9424,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9449,"src":"7100:12:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9423,"name":"bytes","nodeType":"ElementaryTypeName","src":"7100:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7099:14:51"},"scope":9481,"src":"6959:387:51","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9479,"nodeType":"Block","src":"7726:532:51","statements":[{"condition":{"id":9461,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9452,"src":"7740:7:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":9477,"nodeType":"Block","src":"7797:455:51","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9465,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9454,"src":"7881:10:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":9466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7892:6:51","memberName":"length","nodeType":"MemberAccess","src":"7881:17:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7901:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7881:21:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":9475,"nodeType":"Block","src":"8189:53:51","statements":[{"expression":{"arguments":[{"id":9472,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9456,"src":"8214:12:51","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":9471,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"8207:6:51","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":9473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8207:20:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9474,"nodeType":"ExpressionStatement","src":"8207:20:51"}]},"id":9476,"nodeType":"IfStatement","src":"7877:365:51","trueBody":{"id":9470,"nodeType":"Block","src":"7904:279:51","statements":[{"AST":{"nativeSrc":"8024:145:51","nodeType":"YulBlock","src":"8024:145:51","statements":[{"nativeSrc":"8046:40:51","nodeType":"YulVariableDeclaration","src":"8046:40:51","value":{"arguments":[{"name":"returndata","nativeSrc":"8075:10:51","nodeType":"YulIdentifier","src":"8075:10:51"}],"functionName":{"name":"mload","nativeSrc":"8069:5:51","nodeType":"YulIdentifier","src":"8069:5:51"},"nativeSrc":"8069:17:51","nodeType":"YulFunctionCall","src":"8069:17:51"},"variables":[{"name":"returndata_size","nativeSrc":"8050:15:51","nodeType":"YulTypedName","src":"8050:15:51","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"8118:2:51","nodeType":"YulLiteral","src":"8118:2:51","type":"","value":"32"},{"name":"returndata","nativeSrc":"8122:10:51","nodeType":"YulIdentifier","src":"8122:10:51"}],"functionName":{"name":"add","nativeSrc":"8114:3:51","nodeType":"YulIdentifier","src":"8114:3:51"},"nativeSrc":"8114:19:51","nodeType":"YulFunctionCall","src":"8114:19:51"},{"name":"returndata_size","nativeSrc":"8135:15:51","nodeType":"YulIdentifier","src":"8135:15:51"}],"functionName":{"name":"revert","nativeSrc":"8107:6:51","nodeType":"YulIdentifier","src":"8107:6:51"},"nativeSrc":"8107:44:51","nodeType":"YulFunctionCall","src":"8107:44:51"},"nativeSrc":"8107:44:51","nodeType":"YulExpressionStatement","src":"8107:44:51"}]},"evmVersion":"cancun","externalReferences":[{"declaration":9454,"isOffset":false,"isSlot":false,"src":"8075:10:51","valueSize":1},{"declaration":9454,"isOffset":false,"isSlot":false,"src":"8122:10:51","valueSize":1}],"id":9469,"nodeType":"InlineAssembly","src":"8015:154:51"}]}}]},"id":9478,"nodeType":"IfStatement","src":"7736:516:51","trueBody":{"id":9464,"nodeType":"Block","src":"7749:42:51","statements":[{"expression":{"id":9462,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9454,"src":"7770:10:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":9460,"id":9463,"nodeType":"Return","src":"7763:17:51"}]}}]},"documentation":{"id":9450,"nodeType":"StructuredDocumentation","src":"7352:209:51","text":" @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason using the provided one.\n _Available since v4.3._"},"id":9480,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"7575:16:51","nodeType":"FunctionDefinition","parameters":{"id":9457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9452,"mutability":"mutable","name":"success","nameLocation":"7606:7:51","nodeType":"VariableDeclaration","scope":9480,"src":"7601:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9451,"name":"bool","nodeType":"ElementaryTypeName","src":"7601:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9454,"mutability":"mutable","name":"returndata","nameLocation":"7636:10:51","nodeType":"VariableDeclaration","scope":9480,"src":"7623:23:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9453,"name":"bytes","nodeType":"ElementaryTypeName","src":"7623:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":9456,"mutability":"mutable","name":"errorMessage","nameLocation":"7670:12:51","nodeType":"VariableDeclaration","scope":9480,"src":"7656:26:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9455,"name":"string","nodeType":"ElementaryTypeName","src":"7656:6:51","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7591:97:51"},"returnParameters":{"id":9460,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9459,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9480,"src":"7712:12:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9458,"name":"bytes","nodeType":"ElementaryTypeName","src":"7712:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7711:14:51"},"scope":9481,"src":"7566:692:51","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":9482,"src":"199:8061:51","usedErrors":[],"usedEvents":[]}],"src":"106:8155:51"},"id":51},"hardhat-deploy/solc_0.8/openzeppelin/utils/Context.sol":{"ast":{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/utils/Context.sol","exportedSymbols":{"Context":[9503]},"id":9504,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9483,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"86:23:52"},{"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":9484,"nodeType":"StructuredDocumentation","src":"111:496:52","text":" @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 This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":9503,"linearizedBaseContracts":[9503],"name":"Context","nameLocation":"626:7:52","nodeType":"ContractDefinition","nodes":[{"body":{"id":9492,"nodeType":"Block","src":"702:34:52","statements":[{"expression":{"expression":{"id":9489,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"719:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"723:6:52","memberName":"sender","nodeType":"MemberAccess","src":"719:10:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":9488,"id":9491,"nodeType":"Return","src":"712:17:52"}]},"id":9493,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"649:10:52","nodeType":"FunctionDefinition","parameters":{"id":9485,"nodeType":"ParameterList","parameters":[],"src":"659:2:52"},"returnParameters":{"id":9488,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9487,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9493,"src":"693:7:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9486,"name":"address","nodeType":"ElementaryTypeName","src":"693:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"692:9:52"},"scope":9503,"src":"640:96:52","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":9501,"nodeType":"Block","src":"809:32:52","statements":[{"expression":{"expression":{"id":9498,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"826:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"830:4:52","memberName":"data","nodeType":"MemberAccess","src":"826:8:52","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":9497,"id":9500,"nodeType":"Return","src":"819:15:52"}]},"id":9502,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"751:8:52","nodeType":"FunctionDefinition","parameters":{"id":9494,"nodeType":"ParameterList","parameters":[],"src":"759:2:52"},"returnParameters":{"id":9497,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9496,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9502,"src":"793:14:52","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":9495,"name":"bytes","nodeType":"ElementaryTypeName","src":"793:5:52","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"792:16:52"},"scope":9503,"src":"742:99:52","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":9504,"src":"608:235:52","usedErrors":[],"usedEvents":[]}],"src":"86:758:52"},"id":52},"hardhat-deploy/solc_0.8/openzeppelin/utils/StorageSlot.sol":{"ast":{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/utils/StorageSlot.sol","exportedSymbols":{"StorageSlot":[9563]},"id":9564,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9505,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"90:23:53"},{"abstract":false,"baseContracts":[],"canonicalName":"StorageSlot","contractDependencies":[],"contractKind":"library","documentation":{"id":9506,"nodeType":"StructuredDocumentation","src":"115:1148:53","text":" @dev Library for reading and writing primitive types to specific storage slots.\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 The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n Example usage to set ERC1967 implementation slot:\n ```\n contract ERC1967 {\n     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n     function _getImplementation() internal view returns (address) {\n         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\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 _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._"},"fullyImplemented":true,"id":9563,"linearizedBaseContracts":[9563],"name":"StorageSlot","nameLocation":"1272:11:53","nodeType":"ContractDefinition","nodes":[{"canonicalName":"StorageSlot.AddressSlot","id":9509,"members":[{"constant":false,"id":9508,"mutability":"mutable","name":"value","nameLocation":"1327:5:53","nodeType":"VariableDeclaration","scope":9509,"src":"1319:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9507,"name":"address","nodeType":"ElementaryTypeName","src":"1319:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"AddressSlot","nameLocation":"1297:11:53","nodeType":"StructDefinition","scope":9563,"src":"1290:49:53","visibility":"public"},{"canonicalName":"StorageSlot.BooleanSlot","id":9512,"members":[{"constant":false,"id":9511,"mutability":"mutable","name":"value","nameLocation":"1379:5:53","nodeType":"VariableDeclaration","scope":9512,"src":"1374:10:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9510,"name":"bool","nodeType":"ElementaryTypeName","src":"1374:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"BooleanSlot","nameLocation":"1352:11:53","nodeType":"StructDefinition","scope":9563,"src":"1345:46:53","visibility":"public"},{"canonicalName":"StorageSlot.Bytes32Slot","id":9515,"members":[{"constant":false,"id":9514,"mutability":"mutable","name":"value","nameLocation":"1434:5:53","nodeType":"VariableDeclaration","scope":9515,"src":"1426:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9513,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1426:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"Bytes32Slot","nameLocation":"1404:11:53","nodeType":"StructDefinition","scope":9563,"src":"1397:49:53","visibility":"public"},{"canonicalName":"StorageSlot.Uint256Slot","id":9518,"members":[{"constant":false,"id":9517,"mutability":"mutable","name":"value","nameLocation":"1489:5:53","nodeType":"VariableDeclaration","scope":9518,"src":"1481:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9516,"name":"uint256","nodeType":"ElementaryTypeName","src":"1481:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Uint256Slot","nameLocation":"1459:11:53","nodeType":"StructDefinition","scope":9563,"src":"1452:49:53","visibility":"public"},{"body":{"id":9528,"nodeType":"Block","src":"1683:63:53","statements":[{"AST":{"nativeSrc":"1702:38:53","nodeType":"YulBlock","src":"1702:38:53","statements":[{"nativeSrc":"1716:14:53","nodeType":"YulAssignment","src":"1716:14:53","value":{"name":"slot","nativeSrc":"1726:4:53","nodeType":"YulIdentifier","src":"1726:4:53"},"variableNames":[{"name":"r.slot","nativeSrc":"1716:6:53","nodeType":"YulIdentifier","src":"1716:6:53"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":9525,"isOffset":false,"isSlot":true,"src":"1716:6:53","suffix":"slot","valueSize":1},{"declaration":9521,"isOffset":false,"isSlot":false,"src":"1726:4:53","valueSize":1}],"id":9527,"nodeType":"InlineAssembly","src":"1693:47:53"}]},"documentation":{"id":9519,"nodeType":"StructuredDocumentation","src":"1507:87:53","text":" @dev Returns an `AddressSlot` with member `value` located at `slot`."},"id":9529,"implemented":true,"kind":"function","modifiers":[],"name":"getAddressSlot","nameLocation":"1608:14:53","nodeType":"FunctionDefinition","parameters":{"id":9522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9521,"mutability":"mutable","name":"slot","nameLocation":"1631:4:53","nodeType":"VariableDeclaration","scope":9529,"src":"1623:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9520,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1623:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1622:14:53"},"returnParameters":{"id":9526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9525,"mutability":"mutable","name":"r","nameLocation":"1680:1:53","nodeType":"VariableDeclaration","scope":9529,"src":"1660:21:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$9509_storage_ptr","typeString":"struct StorageSlot.AddressSlot"},"typeName":{"id":9524,"nodeType":"UserDefinedTypeName","pathNode":{"id":9523,"name":"AddressSlot","nameLocations":["1660:11:53"],"nodeType":"IdentifierPath","referencedDeclaration":9509,"src":"1660:11:53"},"referencedDeclaration":9509,"src":"1660:11:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$9509_storage_ptr","typeString":"struct StorageSlot.AddressSlot"}},"visibility":"internal"}],"src":"1659:23:53"},"scope":9563,"src":"1599:147:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9539,"nodeType":"Block","src":"1928:63:53","statements":[{"AST":{"nativeSrc":"1947:38:53","nodeType":"YulBlock","src":"1947:38:53","statements":[{"nativeSrc":"1961:14:53","nodeType":"YulAssignment","src":"1961:14:53","value":{"name":"slot","nativeSrc":"1971:4:53","nodeType":"YulIdentifier","src":"1971:4:53"},"variableNames":[{"name":"r.slot","nativeSrc":"1961:6:53","nodeType":"YulIdentifier","src":"1961:6:53"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":9536,"isOffset":false,"isSlot":true,"src":"1961:6:53","suffix":"slot","valueSize":1},{"declaration":9532,"isOffset":false,"isSlot":false,"src":"1971:4:53","valueSize":1}],"id":9538,"nodeType":"InlineAssembly","src":"1938:47:53"}]},"documentation":{"id":9530,"nodeType":"StructuredDocumentation","src":"1752:87:53","text":" @dev Returns an `BooleanSlot` with member `value` located at `slot`."},"id":9540,"implemented":true,"kind":"function","modifiers":[],"name":"getBooleanSlot","nameLocation":"1853:14:53","nodeType":"FunctionDefinition","parameters":{"id":9533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9532,"mutability":"mutable","name":"slot","nameLocation":"1876:4:53","nodeType":"VariableDeclaration","scope":9540,"src":"1868:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9531,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1868:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1867:14:53"},"returnParameters":{"id":9537,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9536,"mutability":"mutable","name":"r","nameLocation":"1925:1:53","nodeType":"VariableDeclaration","scope":9540,"src":"1905:21:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$9512_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"},"typeName":{"id":9535,"nodeType":"UserDefinedTypeName","pathNode":{"id":9534,"name":"BooleanSlot","nameLocations":["1905:11:53"],"nodeType":"IdentifierPath","referencedDeclaration":9512,"src":"1905:11:53"},"referencedDeclaration":9512,"src":"1905:11:53","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$9512_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"}},"visibility":"internal"}],"src":"1904:23:53"},"scope":9563,"src":"1844:147:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9550,"nodeType":"Block","src":"2173:63:53","statements":[{"AST":{"nativeSrc":"2192:38:53","nodeType":"YulBlock","src":"2192:38:53","statements":[{"nativeSrc":"2206:14:53","nodeType":"YulAssignment","src":"2206:14:53","value":{"name":"slot","nativeSrc":"2216:4:53","nodeType":"YulIdentifier","src":"2216:4:53"},"variableNames":[{"name":"r.slot","nativeSrc":"2206:6:53","nodeType":"YulIdentifier","src":"2206:6:53"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":9547,"isOffset":false,"isSlot":true,"src":"2206:6:53","suffix":"slot","valueSize":1},{"declaration":9543,"isOffset":false,"isSlot":false,"src":"2216:4:53","valueSize":1}],"id":9549,"nodeType":"InlineAssembly","src":"2183:47:53"}]},"documentation":{"id":9541,"nodeType":"StructuredDocumentation","src":"1997:87:53","text":" @dev Returns an `Bytes32Slot` with member `value` located at `slot`."},"id":9551,"implemented":true,"kind":"function","modifiers":[],"name":"getBytes32Slot","nameLocation":"2098:14:53","nodeType":"FunctionDefinition","parameters":{"id":9544,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9543,"mutability":"mutable","name":"slot","nameLocation":"2121:4:53","nodeType":"VariableDeclaration","scope":9551,"src":"2113:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9542,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2113:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2112:14:53"},"returnParameters":{"id":9548,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9547,"mutability":"mutable","name":"r","nameLocation":"2170:1:53","nodeType":"VariableDeclaration","scope":9551,"src":"2150:21:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$9515_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"},"typeName":{"id":9546,"nodeType":"UserDefinedTypeName","pathNode":{"id":9545,"name":"Bytes32Slot","nameLocations":["2150:11:53"],"nodeType":"IdentifierPath","referencedDeclaration":9515,"src":"2150:11:53"},"referencedDeclaration":9515,"src":"2150:11:53","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$9515_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"}},"visibility":"internal"}],"src":"2149:23:53"},"scope":9563,"src":"2089:147:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9561,"nodeType":"Block","src":"2418:63:53","statements":[{"AST":{"nativeSrc":"2437:38:53","nodeType":"YulBlock","src":"2437:38:53","statements":[{"nativeSrc":"2451:14:53","nodeType":"YulAssignment","src":"2451:14:53","value":{"name":"slot","nativeSrc":"2461:4:53","nodeType":"YulIdentifier","src":"2461:4:53"},"variableNames":[{"name":"r.slot","nativeSrc":"2451:6:53","nodeType":"YulIdentifier","src":"2451:6:53"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":9558,"isOffset":false,"isSlot":true,"src":"2451:6:53","suffix":"slot","valueSize":1},{"declaration":9554,"isOffset":false,"isSlot":false,"src":"2461:4:53","valueSize":1}],"id":9560,"nodeType":"InlineAssembly","src":"2428:47:53"}]},"documentation":{"id":9552,"nodeType":"StructuredDocumentation","src":"2242:87:53","text":" @dev Returns an `Uint256Slot` with member `value` located at `slot`."},"id":9562,"implemented":true,"kind":"function","modifiers":[],"name":"getUint256Slot","nameLocation":"2343:14:53","nodeType":"FunctionDefinition","parameters":{"id":9555,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9554,"mutability":"mutable","name":"slot","nameLocation":"2366:4:53","nodeType":"VariableDeclaration","scope":9562,"src":"2358:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9553,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2358:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2357:14:53"},"returnParameters":{"id":9559,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9558,"mutability":"mutable","name":"r","nameLocation":"2415:1:53","nodeType":"VariableDeclaration","scope":9562,"src":"2395:21:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$9518_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"},"typeName":{"id":9557,"nodeType":"UserDefinedTypeName","pathNode":{"id":9556,"name":"Uint256Slot","nameLocations":["2395:11:53"],"nodeType":"IdentifierPath","referencedDeclaration":9518,"src":"2395:11:53"},"referencedDeclaration":9518,"src":"2395:11:53","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$9518_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"}},"visibility":"internal"}],"src":"2394:23:53"},"scope":9563,"src":"2334:147:53","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":9564,"src":"1264:1219:53","usedErrors":[],"usedEvents":[]}],"src":"90:2394:53"},"id":53},"hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol":{"ast":{"absolutePath":"hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol","exportedSymbols":{"Address":[9481],"ERC1967Proxy":[8497],"ERC1967Upgrade":[8815],"IBeacon":[8877],"IERC1822Proxiable":[8444],"OptimizedTransparentUpgradeableProxy":[9738],"Proxy":[8867],"StorageSlot":[9563]},"id":9739,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9565,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"118:23:54"},{"absolutePath":"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol","file":"../openzeppelin/proxy/ERC1967/ERC1967Proxy.sol","id":9566,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9739,"sourceUnit":8498,"src":"143:56:54","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9568,"name":"ERC1967Proxy","nameLocations":["1702:12:54"],"nodeType":"IdentifierPath","referencedDeclaration":8497,"src":"1702:12:54"},"id":9569,"nodeType":"InheritanceSpecifier","src":"1702:12:54"}],"canonicalName":"OptimizedTransparentUpgradeableProxy","contractDependencies":[],"contractKind":"contract","documentation":{"id":9567,"nodeType":"StructuredDocumentation","src":"201:1451:54","text":" @dev This contract implements a proxy that is upgradeable by an admin.\n To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\n clashing], which can potentially be used in an attack, this contract uses the\n https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\n things that go hand in hand:\n 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\n that call matches one of the admin functions exposed by the proxy itself.\n 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\n implementation. If the admin tries to call a function on the implementation it will fail with an error that says\n \"admin cannot fallback to proxy target\".\n These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\n the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\n to sudden errors when trying to call a function from the proxy implementation.\n Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\n you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy."},"fullyImplemented":true,"id":9738,"linearizedBaseContracts":[9738,8497,8815,8867],"name":"OptimizedTransparentUpgradeableProxy","nameLocation":"1662:36:54","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":9571,"mutability":"immutable","name":"_ADMIN","nameLocation":"1748:6:54","nodeType":"VariableDeclaration","scope":9738,"src":"1721:33:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9570,"name":"address","nodeType":"ElementaryTypeName","src":"1721:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"body":{"id":9618,"nodeType":"Block","src":"2106:369:54","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":9598,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":9586,"name":"_ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"2123:11:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9596,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e70726f78792e61646d696e","id":9592,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2164:21:54","typeDescriptions":{"typeIdentifier":"t_stringliteral_b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104","typeString":"literal_string \"eip1967.proxy.admin\""},"value":"eip1967.proxy.admin"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104","typeString":"literal_string \"eip1967.proxy.admin\""}],"id":9591,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2154:9:54","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":9593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2154:32:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":9590,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2146:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":9589,"name":"uint256","nodeType":"ElementaryTypeName","src":"2146:7:54","typeDescriptions":{}}},"id":9594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2146:41:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":9595,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2190:1:54","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2146:45:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9588,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2138:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":9587,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2138:7:54","typeDescriptions":{}}},"id":9597,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2138:54:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2123:69:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9585,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"2116:6:54","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2116:77:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9600,"nodeType":"ExpressionStatement","src":"2116:77:54"},{"expression":{"id":9603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9601,"name":"_ADMIN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9571,"src":"2203:6:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9602,"name":"admin_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9576,"src":"2212:6:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2203:15:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9604,"nodeType":"ExpressionStatement","src":"2203:15:54"},{"assignments":[9606],"declarations":[{"constant":false,"id":9606,"mutability":"mutable","name":"slot","nameLocation":"2285:4:54","nodeType":"VariableDeclaration","scope":9618,"src":"2277:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9605,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2277:7:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":9608,"initialValue":{"id":9607,"name":"_ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"2292:11:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2277:26:54"},{"AST":{"nativeSrc":"2378:44:54","nodeType":"YulBlock","src":"2378:44:54","statements":[{"expression":{"arguments":[{"name":"slot","nativeSrc":"2399:4:54","nodeType":"YulIdentifier","src":"2399:4:54"},{"name":"admin_","nativeSrc":"2405:6:54","nodeType":"YulIdentifier","src":"2405:6:54"}],"functionName":{"name":"sstore","nativeSrc":"2392:6:54","nodeType":"YulIdentifier","src":"2392:6:54"},"nativeSrc":"2392:20:54","nodeType":"YulFunctionCall","src":"2392:20:54"},"nativeSrc":"2392:20:54","nodeType":"YulExpressionStatement","src":"2392:20:54"}]},"evmVersion":"cancun","externalReferences":[{"declaration":9576,"isOffset":false,"isSlot":false,"src":"2405:6:54","valueSize":1},{"declaration":9606,"isOffset":false,"isSlot":false,"src":"2399:4:54","valueSize":1}],"id":9609,"nodeType":"InlineAssembly","src":"2369:53:54"},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":9613,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2457:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9612,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2449:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9611,"name":"address","nodeType":"ElementaryTypeName","src":"2449:7:54","typeDescriptions":{}}},"id":9614,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2449:10:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9615,"name":"admin_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9576,"src":"2461:6:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9610,"name":"AdminChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8662,"src":"2436:12:54","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":9616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2436:32:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9617,"nodeType":"EmitStatement","src":"2431:37:54"}]},"documentation":{"id":9572,"nodeType":"StructuredDocumentation","src":"1761:210:54","text":" @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\n optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"id":9619,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":9581,"name":"_logic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9574,"src":"2091:6:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9582,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9578,"src":"2099:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":9583,"kind":"baseConstructorSpecifier","modifierName":{"id":9580,"name":"ERC1967Proxy","nameLocations":["2078:12:54"],"nodeType":"IdentifierPath","referencedDeclaration":8497,"src":"2078:12:54"},"nodeType":"ModifierInvocation","src":"2078:27:54"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":9579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9574,"mutability":"mutable","name":"_logic","nameLocation":"2005:6:54","nodeType":"VariableDeclaration","scope":9619,"src":"1997:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9573,"name":"address","nodeType":"ElementaryTypeName","src":"1997:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9576,"mutability":"mutable","name":"admin_","nameLocation":"2029:6:54","nodeType":"VariableDeclaration","scope":9619,"src":"2021:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9575,"name":"address","nodeType":"ElementaryTypeName","src":"2021:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9578,"mutability":"mutable","name":"_data","nameLocation":"2058:5:54","nodeType":"VariableDeclaration","scope":9619,"src":"2045:18:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9577,"name":"bytes","nodeType":"ElementaryTypeName","src":"2045:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1987:82:54"},"returnParameters":{"id":9584,"nodeType":"ParameterList","parameters":[],"src":"2106:0:54"},"scope":9738,"src":"1976:499:54","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":9634,"nodeType":"Block","src":"2635:115:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9622,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2649:3:54","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2653:6:54","memberName":"sender","nodeType":"MemberAccess","src":"2649:10:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":9624,"name":"_getAdmin","nodeType":"Identifier","overloadedDeclarations":[9737],"referencedDeclaration":9737,"src":"2663:9:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":9625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2663:11:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2649:25:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":9632,"nodeType":"Block","src":"2708:36:54","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":9629,"name":"_fallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8845,"src":"2722:9:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":9630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2722:11:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9631,"nodeType":"ExpressionStatement","src":"2722:11:54"}]},"id":9633,"nodeType":"IfStatement","src":"2645:99:54","trueBody":{"id":9628,"nodeType":"Block","src":"2676:26:54","statements":[{"id":9627,"nodeType":"PlaceholderStatement","src":"2690:1:54"}]}}]},"documentation":{"id":9620,"nodeType":"StructuredDocumentation","src":"2481:130:54","text":" @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin."},"id":9635,"name":"ifAdmin","nameLocation":"2625:7:54","nodeType":"ModifierDefinition","parameters":{"id":9621,"nodeType":"ParameterList","parameters":[],"src":"2632:2:54"},"src":"2616:134:54","virtual":false,"visibility":"internal"},{"body":{"id":9648,"nodeType":"Block","src":"3251:37:54","statements":[{"expression":{"id":9646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9643,"name":"admin_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9641,"src":"3261:6:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":9644,"name":"_getAdmin","nodeType":"Identifier","overloadedDeclarations":[9737],"referencedDeclaration":9737,"src":"3270:9:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":9645,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3270:11:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3261:20:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9647,"nodeType":"ExpressionStatement","src":"3261:20:54"}]},"documentation":{"id":9636,"nodeType":"StructuredDocumentation","src":"2756:431:54","text":" @dev Returns the current admin.\n NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\n TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"functionSelector":"f851a440","id":9649,"implemented":true,"kind":"function","modifiers":[{"id":9639,"kind":"modifierInvocation","modifierName":{"id":9638,"name":"ifAdmin","nameLocations":["3218:7:54"],"nodeType":"IdentifierPath","referencedDeclaration":9635,"src":"3218:7:54"},"nodeType":"ModifierInvocation","src":"3218:7:54"}],"name":"admin","nameLocation":"3201:5:54","nodeType":"FunctionDefinition","parameters":{"id":9637,"nodeType":"ParameterList","parameters":[],"src":"3206:2:54"},"returnParameters":{"id":9642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9641,"mutability":"mutable","name":"admin_","nameLocation":"3243:6:54","nodeType":"VariableDeclaration","scope":9649,"src":"3235:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9640,"name":"address","nodeType":"ElementaryTypeName","src":"3235:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3234:16:54"},"scope":9738,"src":"3192:96:54","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9662,"nodeType":"Block","src":"3825:52:54","statements":[{"expression":{"id":9660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9657,"name":"implementation_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9655,"src":"3835:15:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":9658,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[8496],"referencedDeclaration":8496,"src":"3853:15:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":9659,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3853:17:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3835:35:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9661,"nodeType":"ExpressionStatement","src":"3835:35:54"}]},"documentation":{"id":9650,"nodeType":"StructuredDocumentation","src":"3294:449:54","text":" @dev Returns the current implementation.\n NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\n TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"functionSelector":"5c60da1b","id":9663,"implemented":true,"kind":"function","modifiers":[{"id":9653,"kind":"modifierInvocation","modifierName":{"id":9652,"name":"ifAdmin","nameLocations":["3783:7:54"],"nodeType":"IdentifierPath","referencedDeclaration":9635,"src":"3783:7:54"},"nodeType":"ModifierInvocation","src":"3783:7:54"}],"name":"implementation","nameLocation":"3757:14:54","nodeType":"FunctionDefinition","parameters":{"id":9651,"nodeType":"ParameterList","parameters":[],"src":"3771:2:54"},"returnParameters":{"id":9656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9655,"mutability":"mutable","name":"implementation_","nameLocation":"3808:15:54","nodeType":"VariableDeclaration","scope":9663,"src":"3800:23:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9654,"name":"address","nodeType":"ElementaryTypeName","src":"3800:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3799:25:54"},"scope":9738,"src":"3748:129:54","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9680,"nodeType":"Block","src":"4100:71:54","statements":[{"expression":{"arguments":[{"id":9672,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9666,"src":"4128:17:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"","id":9675,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4153:2:54","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":9674,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4147:5:54","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":9673,"name":"bytes","nodeType":"ElementaryTypeName","src":"4147:5:54","typeDescriptions":{}}},"id":9676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4147:9:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"66616c7365","id":9677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4158:5:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9671,"name":"_upgradeToAndCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8598,"src":"4110:17:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$","typeString":"function (address,bytes memory,bool)"}},"id":9678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4110:54:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9679,"nodeType":"ExpressionStatement","src":"4110:54:54"}]},"documentation":{"id":9664,"nodeType":"StructuredDocumentation","src":"3883:149:54","text":" @dev Upgrade the implementation of the proxy.\n NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"functionSelector":"3659cfe6","id":9681,"implemented":true,"kind":"function","modifiers":[{"id":9669,"kind":"modifierInvocation","modifierName":{"id":9668,"name":"ifAdmin","nameLocations":["4092:7:54"],"nodeType":"IdentifierPath","referencedDeclaration":9635,"src":"4092:7:54"},"nodeType":"ModifierInvocation","src":"4092:7:54"}],"name":"upgradeTo","nameLocation":"4046:9:54","nodeType":"FunctionDefinition","parameters":{"id":9667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9666,"mutability":"mutable","name":"newImplementation","nameLocation":"4064:17:54","nodeType":"VariableDeclaration","scope":9681,"src":"4056:25:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9665,"name":"address","nodeType":"ElementaryTypeName","src":"4056:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4055:27:54"},"returnParameters":{"id":9670,"nodeType":"ParameterList","parameters":[],"src":"4100:0:54"},"scope":9738,"src":"4037:134:54","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9697,"nodeType":"Block","src":"4646:65:54","statements":[{"expression":{"arguments":[{"id":9692,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9684,"src":"4674:17:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9693,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9686,"src":"4693:4:54","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"hexValue":"74727565","id":9694,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4699:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9691,"name":"_upgradeToAndCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8598,"src":"4656:17:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$","typeString":"function (address,bytes memory,bool)"}},"id":9695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4656:48:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9696,"nodeType":"ExpressionStatement","src":"4656:48:54"}]},"documentation":{"id":9682,"nodeType":"StructuredDocumentation","src":"4177:365:54","text":" @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\n by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\n proxied contract.\n NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."},"functionSelector":"4f1ef286","id":9698,"implemented":true,"kind":"function","modifiers":[{"id":9689,"kind":"modifierInvocation","modifierName":{"id":9688,"name":"ifAdmin","nameLocations":["4638:7:54"],"nodeType":"IdentifierPath","referencedDeclaration":9635,"src":"4638:7:54"},"nodeType":"ModifierInvocation","src":"4638:7:54"}],"name":"upgradeToAndCall","nameLocation":"4556:16:54","nodeType":"FunctionDefinition","parameters":{"id":9687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9684,"mutability":"mutable","name":"newImplementation","nameLocation":"4581:17:54","nodeType":"VariableDeclaration","scope":9698,"src":"4573:25:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9683,"name":"address","nodeType":"ElementaryTypeName","src":"4573:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9686,"mutability":"mutable","name":"data","nameLocation":"4615:4:54","nodeType":"VariableDeclaration","scope":9698,"src":"4600:19:54","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":9685,"name":"bytes","nodeType":"ElementaryTypeName","src":"4600:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4572:48:54"},"returnParameters":{"id":9690,"nodeType":"ParameterList","parameters":[],"src":"4646:0:54"},"scope":9738,"src":"4547:164:54","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":9707,"nodeType":"Block","src":"4830:35:54","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":9704,"name":"_getAdmin","nodeType":"Identifier","overloadedDeclarations":[9737],"referencedDeclaration":9737,"src":"4847:9:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":9705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4847:11:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":9703,"id":9706,"nodeType":"Return","src":"4840:18:54"}]},"documentation":{"id":9699,"nodeType":"StructuredDocumentation","src":"4717:50:54","text":" @dev Returns the current admin."},"id":9708,"implemented":true,"kind":"function","modifiers":[],"name":"_admin","nameLocation":"4781:6:54","nodeType":"FunctionDefinition","parameters":{"id":9700,"nodeType":"ParameterList","parameters":[],"src":"4787:2:54"},"returnParameters":{"id":9703,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9702,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9708,"src":"4821:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9701,"name":"address","nodeType":"ElementaryTypeName","src":"4821:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4820:9:54"},"scope":9738,"src":"4772:93:54","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[8866],"body":{"id":9727,"nodeType":"Block","src":"5039:154:54","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9714,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5057:3:54","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5061:6:54","memberName":"sender","nodeType":"MemberAccess","src":"5057:10:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":9716,"name":"_getAdmin","nodeType":"Identifier","overloadedDeclarations":[9737],"referencedDeclaration":9737,"src":"5071:9:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":9717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5071:11:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5057:25:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5472616e73706172656e745570677261646561626c6550726f78793a2061646d696e2063616e6e6f742066616c6c6261636b20746f2070726f787920746172676574","id":9719,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5084:68:54","typeDescriptions":{"typeIdentifier":"t_stringliteral_f5d2ea39d7e6c7d19dc32ccc2bd7ca26b7aa4a603ef4aa6f2b205c93c3ffe43d","typeString":"literal_string \"TransparentUpgradeableProxy: admin cannot fallback to proxy target\""},"value":"TransparentUpgradeableProxy: admin cannot fallback to proxy target"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f5d2ea39d7e6c7d19dc32ccc2bd7ca26b7aa4a603ef4aa6f2b205c93c3ffe43d","typeString":"literal_string \"TransparentUpgradeableProxy: admin cannot fallback to proxy target\""}],"id":9713,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5049:7:54","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5049:104:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9721,"nodeType":"ExpressionStatement","src":"5049:104:54"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9722,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"5163:5:54","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_OptimizedTransparentUpgradeableProxy_$9738_$","typeString":"type(contract super OptimizedTransparentUpgradeableProxy)"}},"id":9724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5169:15:54","memberName":"_beforeFallback","nodeType":"MemberAccess","referencedDeclaration":8866,"src":"5163:21:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":9725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5163:23:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9726,"nodeType":"ExpressionStatement","src":"5163:23:54"}]},"documentation":{"id":9709,"nodeType":"StructuredDocumentation","src":"4871:110:54","text":" @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}."},"id":9728,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeFallback","nameLocation":"4995:15:54","nodeType":"FunctionDefinition","overrides":{"id":9711,"nodeType":"OverrideSpecifier","overrides":[],"src":"5030:8:54"},"parameters":{"id":9710,"nodeType":"ParameterList","parameters":[],"src":"5010:2:54"},"returnParameters":{"id":9712,"nodeType":"ParameterList","parameters":[],"src":"5039:0:54"},"scope":9738,"src":"4986:207:54","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[8675],"body":{"id":9736,"nodeType":"Block","src":"5269:30:54","statements":[{"expression":{"id":9734,"name":"_ADMIN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9571,"src":"5286:6:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":9733,"id":9735,"nodeType":"Return","src":"5279:13:54"}]},"id":9737,"implemented":true,"kind":"function","modifiers":[],"name":"_getAdmin","nameLocation":"5208:9:54","nodeType":"FunctionDefinition","overrides":{"id":9730,"nodeType":"OverrideSpecifier","overrides":[],"src":"5242:8:54"},"parameters":{"id":9729,"nodeType":"ParameterList","parameters":[],"src":"5217:2:54"},"returnParameters":{"id":9733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9732,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9737,"src":"5260:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9731,"name":"address","nodeType":"ElementaryTypeName","src":"5260:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5259:9:54"},"scope":9738,"src":"5199:100:54","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":9739,"src":"1653:3648:54","usedErrors":[],"usedEvents":[8516,8662,8727]}],"src":"118:5184:54"},"id":54}},"contracts":{"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol":{"AggregatorV3Interface":{"abi":[{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"description","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint80","name":"_roundId","type":"uint80"}],"name":"getRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"decimals()":"313ce567","description()":"7284e416","getRoundData(uint80)":"9a6fc8f5","latestRoundData()":"feaf968c","version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"description\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint80\",\"name\":\"_roundId\",\"type\":\"uint80\"}],\"name\":\"getRoundData\",\"outputs\":[{\"internalType\":\"uint80\",\"name\":\"roundId\",\"type\":\"uint80\"},{\"internalType\":\"int256\",\"name\":\"answer\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"startedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updatedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint80\",\"name\":\"answeredInRound\",\"type\":\"uint80\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestRoundData\",\"outputs\":[{\"internalType\":\"uint80\",\"name\":\"roundId\",\"type\":\"uint80\"},{\"internalType\":\"int256\",\"name\":\"answer\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"startedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updatedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint80\",\"name\":\"answeredInRound\",\"type\":\"uint80\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\":\"AggregatorV3Interface\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\ninterface AggregatorV3Interface {\\n  function decimals() external view returns (uint8);\\n\\n  function description() external view returns (string memory);\\n\\n  function version() external view returns (uint256);\\n\\n  function getRoundData(uint80 _roundId)\\n    external\\n    view\\n    returns (\\n      uint80 roundId,\\n      int256 answer,\\n      uint256 startedAt,\\n      uint256 updatedAt,\\n      uint80 answeredInRound\\n    );\\n\\n  function latestRoundData()\\n    external\\n    view\\n    returns (\\n      uint80 roundId,\\n      int256 answer,\\n      uint256 startedAt,\\n      uint256 updatedAt,\\n      uint80 answeredInRound\\n    );\\n}\\n\",\"keccak256\":\"0x6e6e4b0835904509406b070ee173b5bc8f677c19421b76be38aea3b1b3d30846\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol":{"Ownable2StepUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","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"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","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 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} and {acceptOwnership}. This module is used through inheritance. It will make available all functions from parent (Ownable).","events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{"acceptOwnership()":{"details":"The new owner accepts the ownership transfer."},"owner()":{"details":"Returns the address of the current owner."},"pendingOwner()":{"details":"Returns the address of the pending owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner."}},"stateVariables":{"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"acceptOwnership()":"79ba5097","owner()":"8da5cb5b","pendingOwner()":"e30c3978","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"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\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"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 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} and {acceptOwnership}. This module is used through inheritance. It will make available all functions from parent (Ownable).\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.\"}},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol\":\"Ownable2StepUpgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable2Step.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./OwnableUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides 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} and {acceptOwnership}.\\n *\\n * This module is used through inheritance. It will make available all functions\\n * from parent (Ownable).\\n */\\nabstract contract Ownable2StepUpgradeable is Initializable, OwnableUpgradeable {\\n    address private _pendingOwner;\\n\\n    event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner);\\n\\n    function __Ownable2Step_init() internal onlyInitializing {\\n        __Ownable_init_unchained();\\n    }\\n\\n    function __Ownable2Step_init_unchained() internal onlyInitializing {\\n    }\\n    /**\\n     * @dev Returns the address of the pending owner.\\n     */\\n    function pendingOwner() public view virtual returns (address) {\\n        return _pendingOwner;\\n    }\\n\\n    /**\\n     * @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual override onlyOwner {\\n        _pendingOwner = newOwner;\\n        emit OwnershipTransferStarted(owner(), newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual override {\\n        delete _pendingOwner;\\n        super._transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev The new owner accepts the ownership transfer.\\n     */\\n    function acceptOwnership() public virtual {\\n        address sender = _msgSender();\\n        require(pendingOwner() == sender, \\\"Ownable2Step: caller is not the new owner\\\");\\n        _transferOwnership(sender);\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x9140dabc466abab21b48b72dbda26736b1183a310d0e677d3719d201df026510\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/ContextUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.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 OwnableUpgradeable is Initializable, ContextUpgradeable {\\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    function __Ownable_init() internal onlyInitializing {\\n        __Ownable_init_unchained();\\n    }\\n\\n    function __Ownable_init_unchained() internal onlyInitializing {\\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. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        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    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x359a1ab89b46b9aba7bcad3fb651924baf4893d15153049b9976b0fc9be1358e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Indicates that the contract has been initialized.\\n     * @custom:oz-retyped-from bool\\n     */\\n    uint8 private _initialized;\\n\\n    /**\\n     * @dev Indicates that the contract is in the process of being initialized.\\n     */\\n    bool private _initializing;\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint8 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n     * constructor.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        bool isTopLevelCall = !_initializing;\\n        require(\\n            (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n            \\\"Initializable: contract is already initialized\\\"\\n        );\\n        _initialized = 1;\\n        if (isTopLevelCall) {\\n            _initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            _initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: setting the version to 255 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint8 version) {\\n        require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n        _initialized = version;\\n        _initializing = true;\\n        _;\\n        _initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n        if (_initialized != type(uint8).max) {\\n            _initialized = type(uint8).max;\\n            emit Initialized(type(uint8).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint8) {\\n        return _initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _initializing;\\n    }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     *\\n     * Furthermore, `isContract` will also return true if the target contract within\\n     * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n     * which only has an effect at the end of a transaction.\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n     * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n     *\\n     * _Available since v4.8._\\n     */\\n    function verifyCallResultFromTarget(\\n        address target,\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        if (success) {\\n            if (returndata.length == 0) {\\n                // only check isContract if the call was successful and the return data is empty\\n                // otherwise we already know that it was a contract\\n                require(isContract(target), \\\"Address: call to non-contract\\\");\\n            }\\n            return returndata;\\n        } else {\\n            _revert(returndata, errorMessage);\\n        }\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason or using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            _revert(returndata, errorMessage);\\n        }\\n    }\\n\\n    function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n        // Look for revert reason and bubble it up if present\\n        if (returndata.length > 0) {\\n            // The easiest way to bubble the revert reason is using memory via assembly\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert(errorMessage);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\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 ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":292,"contract":"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:Ownable2StepUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":295,"contract":"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:Ownable2StepUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1409,"contract":"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:Ownable2StepUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":164,"contract":"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:Ownable2StepUpgradeable","label":"_owner","offset":0,"slot":"51","type":"t_address"},{"astId":284,"contract":"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:Ownable2StepUpgradeable","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"},{"astId":57,"contract":"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:Ownable2StepUpgradeable","label":"_pendingOwner","offset":0,"slot":"101","type":"t_address"},{"astId":151,"contract":"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:Ownable2StepUpgradeable","label":"__gap","offset":0,"slot":"102","type":"t_array(t_uint256)49_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol":{"OwnableUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","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"},{"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.","events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"stateVariables":{"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"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\"},{\"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.\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":\"OwnableUpgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/ContextUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.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 OwnableUpgradeable is Initializable, ContextUpgradeable {\\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    function __Ownable_init() internal onlyInitializing {\\n        __Ownable_init_unchained();\\n    }\\n\\n    function __Ownable_init_unchained() internal onlyInitializing {\\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. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        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    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x359a1ab89b46b9aba7bcad3fb651924baf4893d15153049b9976b0fc9be1358e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Indicates that the contract has been initialized.\\n     * @custom:oz-retyped-from bool\\n     */\\n    uint8 private _initialized;\\n\\n    /**\\n     * @dev Indicates that the contract is in the process of being initialized.\\n     */\\n    bool private _initializing;\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint8 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n     * constructor.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        bool isTopLevelCall = !_initializing;\\n        require(\\n            (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n            \\\"Initializable: contract is already initialized\\\"\\n        );\\n        _initialized = 1;\\n        if (isTopLevelCall) {\\n            _initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            _initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: setting the version to 255 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint8 version) {\\n        require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n        _initialized = version;\\n        _initializing = true;\\n        _;\\n        _initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n        if (_initialized != type(uint8).max) {\\n            _initialized = type(uint8).max;\\n            emit Initialized(type(uint8).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint8) {\\n        return _initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _initializing;\\n    }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     *\\n     * Furthermore, `isContract` will also return true if the target contract within\\n     * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n     * which only has an effect at the end of a transaction.\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n     * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n     *\\n     * _Available since v4.8._\\n     */\\n    function verifyCallResultFromTarget(\\n        address target,\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        if (success) {\\n            if (returndata.length == 0) {\\n                // only check isContract if the call was successful and the return data is empty\\n                // otherwise we already know that it was a contract\\n                require(isContract(target), \\\"Address: call to non-contract\\\");\\n            }\\n            return returndata;\\n        } else {\\n            _revert(returndata, errorMessage);\\n        }\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason or using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            _revert(returndata, errorMessage);\\n        }\\n    }\\n\\n    function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n        // Look for revert reason and bubble it up if present\\n        if (returndata.length > 0) {\\n            // The easiest way to bubble the revert reason is using memory via assembly\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert(errorMessage);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\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 ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":292,"contract":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:OwnableUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":295,"contract":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:OwnableUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1409,"contract":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:OwnableUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":164,"contract":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:OwnableUpgradeable","label":"_owner","offset":0,"slot":"51","type":"t_address"},{"astId":284,"contract":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:OwnableUpgradeable","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"Initializable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"}],"devdoc":{"custom:oz-upgrades-unsafe-allow":"constructor constructor() {     _disableInitializers(); } ``` ====","details":"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable {     function initialize() initializer public {         __ERC20_init(\"MyToken\", \"MTK\");     } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {     function initializeV2() reinitializer(2) public {         __ERC20Permit_init(\"MyToken\");     } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```","events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{},"stateVariables":{"_initialized":{"custom:oz-retyped-from":"bool","details":"Indicates that the contract has been initialized."},"_initializing":{"details":"Indicates that the contract is in the process of being initialized."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor constructor() {     _disableInitializers(); } ``` ====\",\"details\":\"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable {     function initialize() initializer public {         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");     } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {     function initializeV2() reinitializer(2) public {         __ERC20Permit_init(\\\"MyToken\\\");     } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"_initialized\":{\"custom:oz-retyped-from\":\"bool\",\"details\":\"Indicates that the contract has been initialized.\"},\"_initializing\":{\"details\":\"Indicates that the contract is in the process of being initialized.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":\"Initializable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Indicates that the contract has been initialized.\\n     * @custom:oz-retyped-from bool\\n     */\\n    uint8 private _initialized;\\n\\n    /**\\n     * @dev Indicates that the contract is in the process of being initialized.\\n     */\\n    bool private _initializing;\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint8 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n     * constructor.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        bool isTopLevelCall = !_initializing;\\n        require(\\n            (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n            \\\"Initializable: contract is already initialized\\\"\\n        );\\n        _initialized = 1;\\n        if (isTopLevelCall) {\\n            _initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            _initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: setting the version to 255 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint8 version) {\\n        require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n        _initialized = version;\\n        _initializing = true;\\n        _;\\n        _initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n        if (_initialized != type(uint8).max) {\\n            _initialized = type(uint8).max;\\n            emit Initialized(type(uint8).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint8) {\\n        return _initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _initializing;\\n    }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     *\\n     * Furthermore, `isContract` will also return true if the target contract within\\n     * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n     * which only has an effect at the end of a transaction.\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n     * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n     *\\n     * _Available since v4.8._\\n     */\\n    function verifyCallResultFromTarget(\\n        address target,\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        if (success) {\\n            if (returndata.length == 0) {\\n                // only check isContract if the call was successful and the return data is empty\\n                // otherwise we already know that it was a contract\\n                require(isContract(target), \\\"Address: call to non-contract\\\");\\n            }\\n            return returndata;\\n        } else {\\n            _revert(returndata, errorMessage);\\n        }\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason or using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            _revert(returndata, errorMessage);\\n        }\\n    }\\n\\n    function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n        // Look for revert reason and bubble it up if present\\n        if (returndata.length > 0) {\\n            // The easiest way to bubble the revert reason is using memory via assembly\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert(errorMessage);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":292,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":295,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"}],"types":{"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol":{"ReentrancyGuardUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"}],"devdoc":{"details":"Contract module that helps prevent reentrant calls to a function. Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier available, which can be applied to functions to make sure there are no nested (reentrant) calls to them. Note that because there is a single `nonReentrant` guard, functions marked as `nonReentrant` may not call one another. This can be worked around by making those functions `private`, and then adding `external` `nonReentrant` entry points to them. TIP: If you would like to learn more about reentrancy and alternative ways to protect against it, check out our blog post https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].","events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{},"stateVariables":{"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"Contract module that helps prevent reentrant calls to a function. Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier available, which can be applied to functions to make sure there are no nested (reentrant) calls to them. Note that because there is a single `nonReentrant` guard, functions marked as `nonReentrant` may not call one another. This can be worked around by making those functions `private`, and then adding `external` `nonReentrant` entry points to them. TIP: If you would like to learn more about reentrancy and alternative ways to protect against it, check out our blog post https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol\":\"ReentrancyGuardUpgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Indicates that the contract has been initialized.\\n     * @custom:oz-retyped-from bool\\n     */\\n    uint8 private _initialized;\\n\\n    /**\\n     * @dev Indicates that the contract is in the process of being initialized.\\n     */\\n    bool private _initializing;\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint8 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n     * constructor.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        bool isTopLevelCall = !_initializing;\\n        require(\\n            (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n            \\\"Initializable: contract is already initialized\\\"\\n        );\\n        _initialized = 1;\\n        if (isTopLevelCall) {\\n            _initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            _initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: setting the version to 255 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint8 version) {\\n        require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n        _initialized = version;\\n        _initializing = true;\\n        _;\\n        _initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n        if (_initialized != type(uint8).max) {\\n            _initialized = type(uint8).max;\\n            emit Initialized(type(uint8).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint8) {\\n        return _initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _initializing;\\n    }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (security/ReentrancyGuard.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module that helps prevent reentrant calls to a function.\\n *\\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\\n * available, which can be applied to functions to make sure there are no nested\\n * (reentrant) calls to them.\\n *\\n * Note that because there is a single `nonReentrant` guard, functions marked as\\n * `nonReentrant` may not call one another. This can be worked around by making\\n * those functions `private`, and then adding `external` `nonReentrant` entry\\n * points to them.\\n *\\n * TIP: If you would like to learn more about reentrancy and alternative ways\\n * to protect against it, check out our blog post\\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\\n */\\nabstract contract ReentrancyGuardUpgradeable is Initializable {\\n    // Booleans are more expensive than uint256 or any type that takes up a full\\n    // word because each write operation emits an extra SLOAD to first read the\\n    // slot's contents, replace the bits taken up by the boolean, and then write\\n    // back. This is the compiler's defense against contract upgrades and\\n    // pointer aliasing, and it cannot be disabled.\\n\\n    // The values being non-zero value makes deployment a bit more expensive,\\n    // but in exchange the refund on every call to nonReentrant will be lower in\\n    // amount. Since refunds are capped to a percentage of the total\\n    // transaction's gas, it is best to keep them low in cases like this one, to\\n    // increase the likelihood of the full refund coming into effect.\\n    uint256 private constant _NOT_ENTERED = 1;\\n    uint256 private constant _ENTERED = 2;\\n\\n    uint256 private _status;\\n\\n    function __ReentrancyGuard_init() internal onlyInitializing {\\n        __ReentrancyGuard_init_unchained();\\n    }\\n\\n    function __ReentrancyGuard_init_unchained() internal onlyInitializing {\\n        _status = _NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Prevents a contract from calling itself, directly or indirectly.\\n     * Calling a `nonReentrant` function from another `nonReentrant`\\n     * function is not supported. It is possible to prevent this from happening\\n     * by making the `nonReentrant` function external, and making it call a\\n     * `private` function that does the actual work.\\n     */\\n    modifier nonReentrant() {\\n        _nonReentrantBefore();\\n        _;\\n        _nonReentrantAfter();\\n    }\\n\\n    function _nonReentrantBefore() private {\\n        // On the first call to nonReentrant, _status will be _NOT_ENTERED\\n        require(_status != _ENTERED, \\\"ReentrancyGuard: reentrant call\\\");\\n\\n        // Any calls to nonReentrant after this point will fail\\n        _status = _ENTERED;\\n    }\\n\\n    function _nonReentrantAfter() private {\\n        // By storing the original value once again, a refund is triggered (see\\n        // https://eips.ethereum.org/EIPS/eip-2200)\\n        _status = _NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Returns true if the reentrancy guard is currently set to \\\"entered\\\", which indicates there is a\\n     * `nonReentrant` function in the call stack.\\n     */\\n    function _reentrancyGuardEntered() internal view returns (bool) {\\n        return _status == _ENTERED;\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x2025ccf05f6f1f2fd4e078e552836f525a1864e3854ed555047cd732320ab29b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     *\\n     * Furthermore, `isContract` will also return true if the target contract within\\n     * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n     * which only has an effect at the end of a transaction.\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n     * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n     *\\n     * _Available since v4.8._\\n     */\\n    function verifyCallResultFromTarget(\\n        address target,\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        if (success) {\\n            if (returndata.length == 0) {\\n                // only check isContract if the call was successful and the return data is empty\\n                // otherwise we already know that it was a contract\\n                require(isContract(target), \\\"Address: call to non-contract\\\");\\n            }\\n            return returndata;\\n        } else {\\n            _revert(returndata, errorMessage);\\n        }\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason or using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            _revert(returndata, errorMessage);\\n        }\\n    }\\n\\n    function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n        // Look for revert reason and bubble it up if present\\n        if (returndata.length > 0) {\\n            // The easiest way to bubble the revert reason is using memory via assembly\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert(errorMessage);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":292,"contract":"@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:ReentrancyGuardUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":295,"contract":"@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:ReentrancyGuardUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":469,"contract":"@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:ReentrancyGuardUpgradeable","label":"_status","offset":0,"slot":"1","type":"t_uint256"},{"astId":538,"contract":"@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:ReentrancyGuardUpgradeable","label":"__gap","offset":0,"slot":"2","type":"t_array(t_uint256)49_storage"}],"types":{"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol":{"IERC20Upgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"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":"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":"Interface of the ERC20 standard as defined in the EIP.","events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets `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."},"balanceOf(address)":{"details":"Returns the amount of tokens owned by `account`."},"totalSupply()":{"details":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"details":"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves `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."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"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\":\"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\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `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.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `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.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\":\"IERC20Upgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.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 IERC20Upgradeable {\\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(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x0e1f0f5f62f67a881cd1a9597acbc0a5e4071f3c2c10449a183b922ae7272e3f\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol":{"IERC20PermitUpgradeable":{"abi":[{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't need to send a transaction, and thus is not required to hold Ether at all. ==== Security Considerations There are two important considerations concerning the use of `permit`. The first is that a valid permit signature expresses an allowance, and it should not be assumed to convey additional meaning. In particular, it should not be considered as an intention to spend the allowance in any specific way. The second is that because permits have built-in replay protection and can be submitted by anyone, they can be frontrun. A protocol that uses permits should take this into consideration and allow a `permit` call to fail. Combining these two aspects, a pattern that may be generally recommended is: ```solidity function doThingWithPermit(..., uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {     try token.permit(msg.sender, address(this), value, deadline, v, r, s) {} catch {}     doThing(..., value); } function doThing(..., uint256 value) public {     token.safeTransferFrom(msg.sender, address(this), value);     ... } ``` Observe that: 1) `msg.sender` is used as the owner, leaving no ambiguity as to the signer intent, and 2) the use of `try/catch` allows the permit to fail and makes the code tolerant to frontrunning. (See also {SafeERC20-safeTransferFrom}). Additionally, note that smart contract wallets (such as Argent or Safe) are not able to produce permit signatures, so contracts should have entry points that don't rely on permit.","kind":"dev","methods":{"DOMAIN_SEPARATOR()":{"details":"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}."},"nonces(address)":{"details":"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times."},"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":{"details":"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]. CAUTION: See Security Considerations above."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't need to send a transaction, and thus is not required to hold Ether at all. ==== Security Considerations There are two important considerations concerning the use of `permit`. The first is that a valid permit signature expresses an allowance, and it should not be assumed to convey additional meaning. In particular, it should not be considered as an intention to spend the allowance in any specific way. The second is that because permits have built-in replay protection and can be submitted by anyone, they can be frontrun. A protocol that uses permits should take this into consideration and allow a `permit` call to fail. Combining these two aspects, a pattern that may be generally recommended is: ```solidity function doThingWithPermit(..., uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {     try token.permit(msg.sender, address(this), value, deadline, v, r, s) {} catch {}     doThing(..., value); } function doThing(..., uint256 value) public {     token.safeTransferFrom(msg.sender, address(this), value);     ... } ``` Observe that: 1) `msg.sender` is used as the owner, leaving no ambiguity as to the signer intent, and 2) the use of `try/catch` allows the permit to fail and makes the code tolerant to frontrunning. (See also {SafeERC20-safeTransferFrom}). Additionally, note that smart contract wallets (such as Argent or Safe) are not able to produce permit signatures, so contracts should have entry points that don't rely on permit.\",\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\"},\"nonces(address)\":{\"details\":\"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]. CAUTION: See Security Considerations above.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol\":\"IERC20PermitUpgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (token/ERC20/extensions/IERC20Permit.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\\n *\\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\\n * need to send a transaction, and thus is not required to hold Ether at all.\\n *\\n * ==== Security Considerations\\n *\\n * There are two important considerations concerning the use of `permit`. The first is that a valid permit signature\\n * expresses an allowance, and it should not be assumed to convey additional meaning. In particular, it should not be\\n * considered as an intention to spend the allowance in any specific way. The second is that because permits have\\n * built-in replay protection and can be submitted by anyone, they can be frontrun. A protocol that uses permits should\\n * take this into consideration and allow a `permit` call to fail. Combining these two aspects, a pattern that may be\\n * generally recommended is:\\n *\\n * ```solidity\\n * function doThingWithPermit(..., uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {\\n *     try token.permit(msg.sender, address(this), value, deadline, v, r, s) {} catch {}\\n *     doThing(..., value);\\n * }\\n *\\n * function doThing(..., uint256 value) public {\\n *     token.safeTransferFrom(msg.sender, address(this), value);\\n *     ...\\n * }\\n * ```\\n *\\n * Observe that: 1) `msg.sender` is used as the owner, leaving no ambiguity as to the signer intent, and 2) the use of\\n * `try/catch` allows the permit to fail and makes the code tolerant to frontrunning. (See also\\n * {SafeERC20-safeTransferFrom}).\\n *\\n * Additionally, note that smart contract wallets (such as Argent or Safe) are not able to produce permit signatures, so\\n * contracts should have entry points that don't rely on permit.\\n */\\ninterface IERC20PermitUpgradeable {\\n    /**\\n     * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\\n     * given ``owner``'s signed approval.\\n     *\\n     * IMPORTANT: The same issues {IERC20-approve} has related to transaction\\n     * ordering also apply here.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     * - `deadline` must be a timestamp in the future.\\n     * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\\n     * over the EIP712-formatted function arguments.\\n     * - the signature must use ``owner``'s current nonce (see {nonces}).\\n     *\\n     * For more information on the signature format, see the\\n     * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\\n     * section].\\n     *\\n     * CAUTION: See Security Considerations above.\\n     */\\n    function permit(\\n        address owner,\\n        address spender,\\n        uint256 value,\\n        uint256 deadline,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external;\\n\\n    /**\\n     * @dev Returns the current nonce for `owner`. This value must be\\n     * included whenever a signature is generated for {permit}.\\n     *\\n     * Every successful call to {permit} increases ``owner``'s nonce by one. This\\n     * prevents a signature from being used multiple times.\\n     */\\n    function nonces(address owner) external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\\n     */\\n    // solhint-disable-next-line func-name-mixedcase\\n    function DOMAIN_SEPARATOR() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x07e881de3b9f6d2c07909f193f24b96c7fe4ea60013260f3f25aecd8bab3c2f8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol":{"SafeERC20Upgradeable":{"abi":[],"devdoc":{"details":"Wrappers around ERC20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.","kind":"dev","methods":{},"title":"SafeERC20","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea264697066735822122064a62b2dcd6d212f2e8b6220df6dc593690074f46895cc34180fd563e92829a764736f6c634300081c0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH5 0xA62B2DCD6D 0x21 0x2F 0x2E DUP12 PUSH3 0x20DF6D 0xC5 SWAP4 PUSH10 0x74F46895CC34180FD5 PUSH4 0xE92829A7 PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"734:6366:7:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;734:6366:7;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea264697066735822122064a62b2dcd6d212f2e8b6220df6dc593690074f46895cc34180fd563e92829a764736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH5 0xA62B2DCD6D 0x21 0x2F 0x2E DUP12 PUSH3 0x20DF6D 0xC5 SWAP4 PUSH10 0x74F46895CC34180FD5 PUSH4 0xE92829A7 PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"734:6366:7:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17000","executionCost":"96","totalCost":"17096"},"internal":{"_callOptionalReturn(contract IERC20Upgradeable,bytes memory)":"infinite","_callOptionalReturnBool(contract IERC20Upgradeable,bytes memory)":"infinite","forceApprove(contract IERC20Upgradeable,address,uint256)":"infinite","safeApprove(contract IERC20Upgradeable,address,uint256)":"infinite","safeDecreaseAllowance(contract IERC20Upgradeable,address,uint256)":"infinite","safeIncreaseAllowance(contract IERC20Upgradeable,address,uint256)":"infinite","safePermit(contract IERC20PermitUpgradeable,address,address,uint256,uint256,uint8,bytes32,bytes32)":"infinite","safeTransfer(contract IERC20Upgradeable,address,uint256)":"infinite","safeTransferFrom(contract IERC20Upgradeable,address,address,uint256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers around ERC20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"SafeERC20\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\":\"SafeERC20Upgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.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 IERC20Upgradeable {\\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(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x0e1f0f5f62f67a881cd1a9597acbc0a5e4071f3c2c10449a183b922ae7272e3f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (token/ERC20/extensions/IERC20Permit.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\\n *\\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\\n * need to send a transaction, and thus is not required to hold Ether at all.\\n *\\n * ==== Security Considerations\\n *\\n * There are two important considerations concerning the use of `permit`. The first is that a valid permit signature\\n * expresses an allowance, and it should not be assumed to convey additional meaning. In particular, it should not be\\n * considered as an intention to spend the allowance in any specific way. The second is that because permits have\\n * built-in replay protection and can be submitted by anyone, they can be frontrun. A protocol that uses permits should\\n * take this into consideration and allow a `permit` call to fail. Combining these two aspects, a pattern that may be\\n * generally recommended is:\\n *\\n * ```solidity\\n * function doThingWithPermit(..., uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {\\n *     try token.permit(msg.sender, address(this), value, deadline, v, r, s) {} catch {}\\n *     doThing(..., value);\\n * }\\n *\\n * function doThing(..., uint256 value) public {\\n *     token.safeTransferFrom(msg.sender, address(this), value);\\n *     ...\\n * }\\n * ```\\n *\\n * Observe that: 1) `msg.sender` is used as the owner, leaving no ambiguity as to the signer intent, and 2) the use of\\n * `try/catch` allows the permit to fail and makes the code tolerant to frontrunning. (See also\\n * {SafeERC20-safeTransferFrom}).\\n *\\n * Additionally, note that smart contract wallets (such as Argent or Safe) are not able to produce permit signatures, so\\n * contracts should have entry points that don't rely on permit.\\n */\\ninterface IERC20PermitUpgradeable {\\n    /**\\n     * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\\n     * given ``owner``'s signed approval.\\n     *\\n     * IMPORTANT: The same issues {IERC20-approve} has related to transaction\\n     * ordering also apply here.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     * - `deadline` must be a timestamp in the future.\\n     * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\\n     * over the EIP712-formatted function arguments.\\n     * - the signature must use ``owner``'s current nonce (see {nonces}).\\n     *\\n     * For more information on the signature format, see the\\n     * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\\n     * section].\\n     *\\n     * CAUTION: See Security Considerations above.\\n     */\\n    function permit(\\n        address owner,\\n        address spender,\\n        uint256 value,\\n        uint256 deadline,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external;\\n\\n    /**\\n     * @dev Returns the current nonce for `owner`. This value must be\\n     * included whenever a signature is generated for {permit}.\\n     *\\n     * Every successful call to {permit} increases ``owner``'s nonce by one. This\\n     * prevents a signature from being used multiple times.\\n     */\\n    function nonces(address owner) external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\\n     */\\n    // solhint-disable-next-line func-name-mixedcase\\n    function DOMAIN_SEPARATOR() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x07e881de3b9f6d2c07909f193f24b96c7fe4ea60013260f3f25aecd8bab3c2f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.3) (token/ERC20/utils/SafeERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20Upgradeable.sol\\\";\\nimport \\\"../extensions/IERC20PermitUpgradeable.sol\\\";\\nimport \\\"../../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20Upgradeable {\\n    using AddressUpgradeable for address;\\n\\n    /**\\n     * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     */\\n    function safeTransfer(IERC20Upgradeable token, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\\n    }\\n\\n    /**\\n     * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\\n     * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\\n     */\\n    function safeTransferFrom(IERC20Upgradeable token, address from, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\\n    }\\n\\n    /**\\n     * @dev Deprecated. This function has issues similar to the ones found in\\n     * {IERC20-approve}, and its usage is discouraged.\\n     *\\n     * Whenever possible, use {safeIncreaseAllowance} and\\n     * {safeDecreaseAllowance} instead.\\n     */\\n    function safeApprove(IERC20Upgradeable token, address spender, uint256 value) internal {\\n        // safeApprove should only be called when setting an initial allowance,\\n        // or when resetting it to zero. To increase and decrease it, use\\n        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\\n        require(\\n            (value == 0) || (token.allowance(address(this), spender) == 0),\\n            \\\"SafeERC20: approve from non-zero to non-zero allowance\\\"\\n        );\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\\n    }\\n\\n    /**\\n     * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     */\\n    function safeIncreaseAllowance(IERC20Upgradeable token, address spender, uint256 value) internal {\\n        uint256 oldAllowance = token.allowance(address(this), spender);\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance + value));\\n    }\\n\\n    /**\\n     * @dev Decrease the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     */\\n    function safeDecreaseAllowance(IERC20Upgradeable token, address spender, uint256 value) internal {\\n        unchecked {\\n            uint256 oldAllowance = token.allowance(address(this), spender);\\n            require(oldAllowance >= value, \\\"SafeERC20: decreased allowance below zero\\\");\\n            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance - value));\\n        }\\n    }\\n\\n    /**\\n     * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\\n     * to be set to zero before setting it to a non-zero value, such as USDT.\\n     */\\n    function forceApprove(IERC20Upgradeable token, address spender, uint256 value) internal {\\n        bytes memory approvalCall = abi.encodeWithSelector(token.approve.selector, spender, value);\\n\\n        if (!_callOptionalReturnBool(token, approvalCall)) {\\n            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, 0));\\n            _callOptionalReturn(token, approvalCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Use a ERC-2612 signature to set the `owner` approval toward `spender` on `token`.\\n     * Revert on invalid signature.\\n     */\\n    function safePermit(\\n        IERC20PermitUpgradeable token,\\n        address owner,\\n        address spender,\\n        uint256 value,\\n        uint256 deadline,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) internal {\\n        uint256 nonceBefore = token.nonces(owner);\\n        token.permit(owner, spender, value, deadline, v, r, s);\\n        uint256 nonceAfter = token.nonces(owner);\\n        require(nonceAfter == nonceBefore + 1, \\\"SafeERC20: permit did not succeed\\\");\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     */\\n    function _callOptionalReturn(IERC20Upgradeable token, bytes memory data) private {\\n        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n        // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that\\n        // the target address contains contract code and also asserts for success in the low-level call.\\n\\n        bytes memory returndata = address(token).functionCall(data, \\\"SafeERC20: low-level call failed\\\");\\n        require(returndata.length == 0 || abi.decode(returndata, (bool)), \\\"SafeERC20: ERC20 operation did not succeed\\\");\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     *\\n     * This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead.\\n     */\\n    function _callOptionalReturnBool(IERC20Upgradeable token, bytes memory data) private returns (bool) {\\n        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n        // we're implementing it ourselves. We cannot use {Address-functionCall} here since this should return false\\n        // and not revert is the subcall reverts.\\n\\n        (bool success, bytes memory returndata) = address(token).call(data);\\n        return\\n            success && (returndata.length == 0 || abi.decode(returndata, (bool))) && AddressUpgradeable.isContract(address(token));\\n    }\\n}\\n\",\"keccak256\":\"0x23b997be73d3dd46885262704f0f8cfc7273fdadfe303d37969a9561373972b5\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     *\\n     * Furthermore, `isContract` will also return true if the target contract within\\n     * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n     * which only has an effect at the end of a transaction.\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n     * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n     *\\n     * _Available since v4.8._\\n     */\\n    function verifyCallResultFromTarget(\\n        address target,\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        if (success) {\\n            if (returndata.length == 0) {\\n                // only check isContract if the call was successful and the return data is empty\\n                // otherwise we already know that it was a contract\\n                require(isContract(target), \\\"Address: call to non-contract\\\");\\n            }\\n            return returndata;\\n        } else {\\n            _revert(returndata, errorMessage);\\n        }\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason or using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            _revert(returndata, errorMessage);\\n        }\\n    }\\n\\n    function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n        // Look for revert reason and bubble it up if present\\n        if (returndata.length > 0) {\\n            // The easiest way to bubble the revert reason is using memory via assembly\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert(errorMessage);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol":{"AddressUpgradeable":{"abi":[],"devdoc":{"details":"Collection of functions related to the address type","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212204bb4f1a61d376e4fd2287e39167f72bd9c3877fcd0baa205e411fba72581416764736f6c634300081c0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4B 0xB4 CALL 0xA6 SAR CALLDATACOPY PUSH15 0x4FD2287E39167F72BD9C3877FCD0BA LOG2 SDIV 0xE4 GT 0xFB 0xA7 0x25 DUP2 COINBASE PUSH8 0x64736F6C63430008 SHR STOP CALLER ","sourceMap":"194:9180:8:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;194:9180:8;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212204bb4f1a61d376e4fd2287e39167f72bd9c3877fcd0baa205e411fba72581416764736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4B 0xB4 CALL 0xA6 SAR CALLDATACOPY PUSH15 0x4FD2287E39167F72BD9C3877FCD0BA LOG2 SDIV 0xE4 GT 0xFB 0xA7 0x25 DUP2 COINBASE PUSH8 0x64736F6C63430008 SHR STOP CALLER ","sourceMap":"194:9180:8:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17000","executionCost":"96","totalCost":"17096"},"internal":{"_revert(bytes memory,string memory)":"infinite","functionCall(address,bytes memory)":"infinite","functionCall(address,bytes memory,string memory)":"infinite","functionCallWithValue(address,bytes memory,uint256)":"infinite","functionCallWithValue(address,bytes memory,uint256,string memory)":"infinite","functionDelegateCall(address,bytes memory)":"infinite","functionDelegateCall(address,bytes memory,string memory)":"infinite","functionStaticCall(address,bytes memory)":"infinite","functionStaticCall(address,bytes memory,string memory)":"infinite","isContract(address)":"infinite","sendValue(address payable,uint256)":"infinite","verifyCallResult(bool,bytes memory,string memory)":"infinite","verifyCallResultFromTarget(address,bool,bytes memory,string memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":\"AddressUpgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     *\\n     * Furthermore, `isContract` will also return true if the target contract within\\n     * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n     * which only has an effect at the end of a transaction.\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n     * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n     *\\n     * _Available since v4.8._\\n     */\\n    function verifyCallResultFromTarget(\\n        address target,\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        if (success) {\\n            if (returndata.length == 0) {\\n                // only check isContract if the call was successful and the return data is empty\\n                // otherwise we already know that it was a contract\\n                require(isContract(target), \\\"Address: call to non-contract\\\");\\n            }\\n            return returndata;\\n        } else {\\n            _revert(returndata, errorMessage);\\n        }\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason or using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            _revert(returndata, errorMessage);\\n        }\\n    }\\n\\n    function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n        // Look for revert reason and bubble it up if present\\n        if (returndata.length > 0) {\\n            // The easiest way to bubble the revert reason is using memory via assembly\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert(errorMessage);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"ContextUpgradeable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"}],"devdoc":{"details":"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.","events":{"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{},"stateVariables":{"__gap":{"details":"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":\"ContextUpgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Indicates that the contract has been initialized.\\n     * @custom:oz-retyped-from bool\\n     */\\n    uint8 private _initialized;\\n\\n    /**\\n     * @dev Indicates that the contract is in the process of being initialized.\\n     */\\n    bool private _initializing;\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint8 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n     * constructor.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        bool isTopLevelCall = !_initializing;\\n        require(\\n            (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n            \\\"Initializable: contract is already initialized\\\"\\n        );\\n        _initialized = 1;\\n        if (isTopLevelCall) {\\n            _initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            _initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: setting the version to 255 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint8 version) {\\n        require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n        _initialized = version;\\n        _initializing = true;\\n        _;\\n        _initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n        if (_initialized != type(uint8).max) {\\n            _initialized = type(uint8).max;\\n            emit Initialized(type(uint8).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint8) {\\n        return _initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _initializing;\\n    }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     *\\n     * Furthermore, `isContract` will also return true if the target contract within\\n     * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n     * which only has an effect at the end of a transaction.\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n     * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n     *\\n     * _Available since v4.8._\\n     */\\n    function verifyCallResultFromTarget(\\n        address target,\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        if (success) {\\n            if (returndata.length == 0) {\\n                // only check isContract if the call was successful and the return data is empty\\n                // otherwise we already know that it was a contract\\n                require(isContract(target), \\\"Address: call to non-contract\\\");\\n            }\\n            return returndata;\\n        } else {\\n            _revert(returndata, errorMessage);\\n        }\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason or using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            _revert(returndata, errorMessage);\\n        }\\n    }\\n\\n    function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n        // Look for revert reason and bubble it up if present\\n        if (returndata.length > 0) {\\n            // The easiest way to bubble the revert reason is using memory via assembly\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert(errorMessage);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\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 ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":292,"contract":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":295,"contract":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1409,"contract":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"}],"types":{"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/access/IAccessControl.sol":{"IAccessControl":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"External interface of AccessControl declared to support ERC165 detection.","events":{"RoleAdminChanged(bytes32,bytes32,bytes32)":{"details":"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._"},"RoleGranted(bytes32,address,address)":{"details":"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}."},"RoleRevoked(bytes32,address,address)":{"details":"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call:   - if using `revokeRole`, it is the admin role bearer   - if using `renounceRole`, it is the role bearer (i.e. `account`)"}},"kind":"dev","methods":{"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {AccessControl-_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"External interface of AccessControl declared to support ERC165 detection.\",\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call:   - if using `revokeRole`, it is the admin role bearer   - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {AccessControl-_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":\"IAccessControl\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev External interface of AccessControl declared to support ERC165 detection.\\n */\\ninterface IAccessControl {\\n    /**\\n     * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n     *\\n     * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n     * {RoleAdminChanged} not being emitted signaling this.\\n     *\\n     * _Available since v3.1._\\n     */\\n    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n    /**\\n     * @dev Emitted when `account` is granted `role`.\\n     *\\n     * `sender` is the account that originated the contract call, an admin role\\n     * bearer except when using {AccessControl-_setupRole}.\\n     */\\n    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n    /**\\n     * @dev Emitted when `account` is revoked `role`.\\n     *\\n     * `sender` is the account that originated the contract call:\\n     *   - if using `revokeRole`, it is the admin role bearer\\n     *   - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n     */\\n    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n    /**\\n     * @dev Returns `true` if `account` has been granted `role`.\\n     */\\n    function hasRole(bytes32 role, address account) external view returns (bool);\\n\\n    /**\\n     * @dev Returns the admin role that controls `role`. See {grantRole} and\\n     * {revokeRole}.\\n     *\\n     * To change a role's admin, use {AccessControl-_setRoleAdmin}.\\n     */\\n    function getRoleAdmin(bytes32 role) external view returns (bytes32);\\n\\n    /**\\n     * @dev Grants `role` to `account`.\\n     *\\n     * If `account` had not been already granted `role`, emits a {RoleGranted}\\n     * event.\\n     *\\n     * Requirements:\\n     *\\n     * - the caller must have ``role``'s admin role.\\n     */\\n    function grantRole(bytes32 role, address account) external;\\n\\n    /**\\n     * @dev Revokes `role` from `account`.\\n     *\\n     * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n     *\\n     * Requirements:\\n     *\\n     * - the caller must have ``role``'s admin role.\\n     */\\n    function revokeRole(bytes32 role, address account) external;\\n\\n    /**\\n     * @dev Revokes `role` from the calling account.\\n     *\\n     * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n     * purpose is to provide a mechanism for accounts to lose their privileges\\n     * if they are compromised (such as when a trusted device is misplaced).\\n     *\\n     * If the calling account had been granted `role`, emits a {RoleRevoked}\\n     * event.\\n     *\\n     * Requirements:\\n     *\\n     * - the caller must be `account`.\\n     */\\n    function renounceRole(bytes32 role, address account) external;\\n}\\n\",\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/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. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.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. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        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\",\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (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    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":1491,"contract":"@openzeppelin/contracts/access/Ownable.sol:Ownable","label":"_owner","offset":0,"slot":"0","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/access/Ownable2Step.sol":{"Ownable2Step":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","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"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","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 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} and {acceptOwnership}. This module is used through inheritance. It will make available all functions from parent (Ownable).","kind":"dev","methods":{"acceptOwnership()":{"details":"The new owner accepts the ownership transfer."},"owner()":{"details":"Returns the address of the current owner."},"pendingOwner()":{"details":"Returns the address of the pending owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"acceptOwnership()":"79ba5097","owner()":"8da5cb5b","pendingOwner()":"e30c3978","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"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\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"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 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} and {acceptOwnership}. This module is used through inheritance. It will make available all functions from parent (Ownable).\",\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/Ownable2Step.sol\":\"Ownable2Step\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.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. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        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\",\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\"},\"@openzeppelin/contracts/access/Ownable2Step.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable2Step.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./Ownable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides 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} and {acceptOwnership}.\\n *\\n * This module is used through inheritance. It will make available all functions\\n * from parent (Ownable).\\n */\\nabstract contract Ownable2Step is Ownable {\\n    address private _pendingOwner;\\n\\n    event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Returns the address of the pending owner.\\n     */\\n    function pendingOwner() public view virtual returns (address) {\\n        return _pendingOwner;\\n    }\\n\\n    /**\\n     * @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual override onlyOwner {\\n        _pendingOwner = newOwner;\\n        emit OwnershipTransferStarted(owner(), newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual override {\\n        delete _pendingOwner;\\n        super._transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev The new owner accepts the ownership transfer.\\n     */\\n    function acceptOwnership() public virtual {\\n        address sender = _msgSender();\\n        require(pendingOwner() == sender, \\\"Ownable2Step: caller is not the new owner\\\");\\n        _transferOwnership(sender);\\n    }\\n}\\n\",\"keccak256\":\"0xde231558366826d7cb61725af8147965a61c53b77a352cc8c9af38fc5a92ac3c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (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    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":1491,"contract":"@openzeppelin/contracts/access/Ownable2Step.sol:Ownable2Step","label":"_owner","offset":0,"slot":"0","type":"t_address"},{"astId":1604,"contract":"@openzeppelin/contracts/access/Ownable2Step.sol:Ownable2Step","label":"_pendingOwner","offset":0,"slot":"1","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/interfaces/IERC5267.sol":{"IERC5267":{"abi":[{"anonymous":false,"inputs":[],"name":"EIP712DomainChanged","type":"event"},{"inputs":[],"name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}],"stateMutability":"view","type":"function"}],"devdoc":{"events":{"EIP712DomainChanged()":{"details":"MAY be emitted to signal that the domain could have changed."}},"kind":"dev","methods":{"eip712Domain()":{"details":"returns the fields and values that describe the domain separator used by this contract for EIP-712 signature."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"eip712Domain()":"84b0196e"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"}},\"kind\":\"dev\",\"methods\":{\"eip712Domain()\":{\"details\":\"returns the fields and values that describe the domain separator used by this contract for EIP-712 signature.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/IERC5267.sol\":\"IERC5267\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC5267.sol)\\n\\npragma solidity ^0.8.0;\\n\\ninterface IERC5267 {\\n    /**\\n     * @dev MAY be emitted to signal that the domain could have changed.\\n     */\\n    event EIP712DomainChanged();\\n\\n    /**\\n     * @dev returns the fields and values that describe the domain separator used by this contract for EIP-712\\n     * signature.\\n     */\\n    function eip712Domain()\\n        external\\n        view\\n        returns (\\n            bytes1 fields,\\n            string memory name,\\n            string memory version,\\n            uint256 chainId,\\n            address verifyingContract,\\n            bytes32 salt,\\n            uint256[] memory extensions\\n        );\\n}\\n\",\"keccak256\":\"0xac6c2efc64baccbde4904ae18ed45139c9aa8cff96d6888344d1e4d2eb8b659f\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/security/ReentrancyGuard.sol":{"ReentrancyGuard":{"abi":[],"devdoc":{"details":"Contract module that helps prevent reentrant calls to a function. Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier available, which can be applied to functions to make sure there are no nested (reentrant) calls to them. Note that because there is a single `nonReentrant` guard, functions marked as `nonReentrant` may not call one another. This can be worked around by making those functions `private`, and then adding `external` `nonReentrant` entry points to them. TIP: If you would like to learn more about reentrancy and alternative ways to protect against it, check out our blog post https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Contract module that helps prevent reentrant calls to a function. Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier available, which can be applied to functions to make sure there are no nested (reentrant) calls to them. Note that because there is a single `nonReentrant` guard, functions marked as `nonReentrant` may not call one another. This can be worked around by making those functions `private`, and then adding `external` `nonReentrant` entry points to them. TIP: If you would like to learn more about reentrancy and alternative ways to protect against it, check out our blog post https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/security/ReentrancyGuard.sol\":\"ReentrancyGuard\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/security/ReentrancyGuard.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (security/ReentrancyGuard.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Contract module that helps prevent reentrant calls to a function.\\n *\\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\\n * available, which can be applied to functions to make sure there are no nested\\n * (reentrant) calls to them.\\n *\\n * Note that because there is a single `nonReentrant` guard, functions marked as\\n * `nonReentrant` may not call one another. This can be worked around by making\\n * those functions `private`, and then adding `external` `nonReentrant` entry\\n * points to them.\\n *\\n * TIP: If you would like to learn more about reentrancy and alternative ways\\n * to protect against it, check out our blog post\\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\\n */\\nabstract contract ReentrancyGuard {\\n    // Booleans are more expensive than uint256 or any type that takes up a full\\n    // word because each write operation emits an extra SLOAD to first read the\\n    // slot's contents, replace the bits taken up by the boolean, and then write\\n    // back. This is the compiler's defense against contract upgrades and\\n    // pointer aliasing, and it cannot be disabled.\\n\\n    // The values being non-zero value makes deployment a bit more expensive,\\n    // but in exchange the refund on every call to nonReentrant will be lower in\\n    // amount. Since refunds are capped to a percentage of the total\\n    // transaction's gas, it is best to keep them low in cases like this one, to\\n    // increase the likelihood of the full refund coming into effect.\\n    uint256 private constant _NOT_ENTERED = 1;\\n    uint256 private constant _ENTERED = 2;\\n\\n    uint256 private _status;\\n\\n    constructor() {\\n        _status = _NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Prevents a contract from calling itself, directly or indirectly.\\n     * Calling a `nonReentrant` function from another `nonReentrant`\\n     * function is not supported. It is possible to prevent this from happening\\n     * by making the `nonReentrant` function external, and making it call a\\n     * `private` function that does the actual work.\\n     */\\n    modifier nonReentrant() {\\n        _nonReentrantBefore();\\n        _;\\n        _nonReentrantAfter();\\n    }\\n\\n    function _nonReentrantBefore() private {\\n        // On the first call to nonReentrant, _status will be _NOT_ENTERED\\n        require(_status != _ENTERED, \\\"ReentrancyGuard: reentrant call\\\");\\n\\n        // Any calls to nonReentrant after this point will fail\\n        _status = _ENTERED;\\n    }\\n\\n    function _nonReentrantAfter() private {\\n        // By storing the original value once again, a refund is triggered (see\\n        // https://eips.ethereum.org/EIPS/eip-2200)\\n        _status = _NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Returns true if the reentrancy guard is currently set to \\\"entered\\\", which indicates there is a\\n     * `nonReentrant` function in the call stack.\\n     */\\n    function _reentrancyGuardEntered() internal view returns (bool) {\\n        return _status == _ENTERED;\\n    }\\n}\\n\",\"keccak256\":\"0xa535a5df777d44e945dd24aa43a11e44b024140fc340ad0dfe42acf4002aade1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":1715,"contract":"@openzeppelin/contracts/security/ReentrancyGuard.sol:ReentrancyGuard","label":"_status","offset":0,"slot":"0","type":"t_uint256"}],"types":{"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"IERC20":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"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":"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":"Interface of the ERC20 standard as defined in the EIP.","events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets `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."},"balanceOf(address)":{"details":"Returns the amount of tokens owned by `account`."},"totalSupply()":{"details":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"details":"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves `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."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"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\":\"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\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `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.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `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.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.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(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"IERC20Metadata":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"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":[],"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":"Interface for the optional metadata functions from the ERC20 standard. _Available since v4.1._","events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets `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."},"balanceOf(address)":{"details":"Returns the amount of tokens owned by `account`."},"decimals()":{"details":"Returns the decimals places of the token."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token."},"totalSupply()":{"details":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"details":"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves `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."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"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\":[],\"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\":\"Interface for the optional metadata functions from the ERC20 standard. _Available since v4.1._\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `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.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `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.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":\"IERC20Metadata\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.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(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\"},\"@openzeppelin/contracts/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\",\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol":{"IERC20Permit":{"abi":[{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't need to send a transaction, and thus is not required to hold Ether at all. ==== Security Considerations There are two important considerations concerning the use of `permit`. The first is that a valid permit signature expresses an allowance, and it should not be assumed to convey additional meaning. In particular, it should not be considered as an intention to spend the allowance in any specific way. The second is that because permits have built-in replay protection and can be submitted by anyone, they can be frontrun. A protocol that uses permits should take this into consideration and allow a `permit` call to fail. Combining these two aspects, a pattern that may be generally recommended is: ```solidity function doThingWithPermit(..., uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {     try token.permit(msg.sender, address(this), value, deadline, v, r, s) {} catch {}     doThing(..., value); } function doThing(..., uint256 value) public {     token.safeTransferFrom(msg.sender, address(this), value);     ... } ``` Observe that: 1) `msg.sender` is used as the owner, leaving no ambiguity as to the signer intent, and 2) the use of `try/catch` allows the permit to fail and makes the code tolerant to frontrunning. (See also {SafeERC20-safeTransferFrom}). Additionally, note that smart contract wallets (such as Argent or Safe) are not able to produce permit signatures, so contracts should have entry points that don't rely on permit.","kind":"dev","methods":{"DOMAIN_SEPARATOR()":{"details":"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}."},"nonces(address)":{"details":"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times."},"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":{"details":"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]. CAUTION: See Security Considerations above."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't need to send a transaction, and thus is not required to hold Ether at all. ==== Security Considerations There are two important considerations concerning the use of `permit`. The first is that a valid permit signature expresses an allowance, and it should not be assumed to convey additional meaning. In particular, it should not be considered as an intention to spend the allowance in any specific way. The second is that because permits have built-in replay protection and can be submitted by anyone, they can be frontrun. A protocol that uses permits should take this into consideration and allow a `permit` call to fail. Combining these two aspects, a pattern that may be generally recommended is: ```solidity function doThingWithPermit(..., uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {     try token.permit(msg.sender, address(this), value, deadline, v, r, s) {} catch {}     doThing(..., value); } function doThing(..., uint256 value) public {     token.safeTransferFrom(msg.sender, address(this), value);     ... } ``` Observe that: 1) `msg.sender` is used as the owner, leaving no ambiguity as to the signer intent, and 2) the use of `try/catch` allows the permit to fail and makes the code tolerant to frontrunning. (See also {SafeERC20-safeTransferFrom}). Additionally, note that smart contract wallets (such as Argent or Safe) are not able to produce permit signatures, so contracts should have entry points that don't rely on permit.\",\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\"},\"nonces(address)\":{\"details\":\"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]. CAUTION: See Security Considerations above.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":\"IERC20Permit\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (token/ERC20/extensions/IERC20Permit.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\\n *\\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\\n * need to send a transaction, and thus is not required to hold Ether at all.\\n *\\n * ==== Security Considerations\\n *\\n * There are two important considerations concerning the use of `permit`. The first is that a valid permit signature\\n * expresses an allowance, and it should not be assumed to convey additional meaning. In particular, it should not be\\n * considered as an intention to spend the allowance in any specific way. The second is that because permits have\\n * built-in replay protection and can be submitted by anyone, they can be frontrun. A protocol that uses permits should\\n * take this into consideration and allow a `permit` call to fail. Combining these two aspects, a pattern that may be\\n * generally recommended is:\\n *\\n * ```solidity\\n * function doThingWithPermit(..., uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {\\n *     try token.permit(msg.sender, address(this), value, deadline, v, r, s) {} catch {}\\n *     doThing(..., value);\\n * }\\n *\\n * function doThing(..., uint256 value) public {\\n *     token.safeTransferFrom(msg.sender, address(this), value);\\n *     ...\\n * }\\n * ```\\n *\\n * Observe that: 1) `msg.sender` is used as the owner, leaving no ambiguity as to the signer intent, and 2) the use of\\n * `try/catch` allows the permit to fail and makes the code tolerant to frontrunning. (See also\\n * {SafeERC20-safeTransferFrom}).\\n *\\n * Additionally, note that smart contract wallets (such as Argent or Safe) are not able to produce permit signatures, so\\n * contracts should have entry points that don't rely on permit.\\n */\\ninterface IERC20Permit {\\n    /**\\n     * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\\n     * given ``owner``'s signed approval.\\n     *\\n     * IMPORTANT: The same issues {IERC20-approve} has related to transaction\\n     * ordering also apply here.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     * - `deadline` must be a timestamp in the future.\\n     * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\\n     * over the EIP712-formatted function arguments.\\n     * - the signature must use ``owner``'s current nonce (see {nonces}).\\n     *\\n     * For more information on the signature format, see the\\n     * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\\n     * section].\\n     *\\n     * CAUTION: See Security Considerations above.\\n     */\\n    function permit(\\n        address owner,\\n        address spender,\\n        uint256 value,\\n        uint256 deadline,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external;\\n\\n    /**\\n     * @dev Returns the current nonce for `owner`. This value must be\\n     * included whenever a signature is generated for {permit}.\\n     *\\n     * Every successful call to {permit} increases ``owner``'s nonce by one. This\\n     * prevents a signature from being used multiple times.\\n     */\\n    function nonces(address owner) external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\\n     */\\n    // solhint-disable-next-line func-name-mixedcase\\n    function DOMAIN_SEPARATOR() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0xb264c03a3442eb37a68ad620cefd1182766b58bee6cec40343480392d6b14d69\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol":{"SafeERC20":{"abi":[],"devdoc":{"details":"Wrappers around ERC20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.","kind":"dev","methods":{},"title":"SafeERC20","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220fd5cf9dc2c7470d209a5c2d6dfb5bb19de65c7d1628e98392ed89be6c303006f64736f6c634300081c0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 REVERT TLOAD 0xF9 0xDC 0x2C PUSH21 0x70D209A5C2D6DFB5BB19DE65C7D1628E98392ED89B 0xE6 0xC3 SUB STOP PUSH16 0x64736F6C634300081C00330000000000 ","sourceMap":"701:6234:18:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;701:6234:18;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220fd5cf9dc2c7470d209a5c2d6dfb5bb19de65c7d1628e98392ed89be6c303006f64736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 REVERT TLOAD 0xF9 0xDC 0x2C PUSH21 0x70D209A5C2D6DFB5BB19DE65C7D1628E98392ED89B 0xE6 0xC3 SUB STOP PUSH16 0x64736F6C634300081C00330000000000 ","sourceMap":"701:6234:18:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17000","executionCost":"96","totalCost":"17096"},"internal":{"_callOptionalReturn(contract IERC20,bytes memory)":"infinite","_callOptionalReturnBool(contract IERC20,bytes memory)":"infinite","forceApprove(contract IERC20,address,uint256)":"infinite","safeApprove(contract IERC20,address,uint256)":"infinite","safeDecreaseAllowance(contract IERC20,address,uint256)":"infinite","safeIncreaseAllowance(contract IERC20,address,uint256)":"infinite","safePermit(contract IERC20Permit,address,address,uint256,uint256,uint8,bytes32,bytes32)":"infinite","safeTransfer(contract IERC20,address,uint256)":"infinite","safeTransferFrom(contract IERC20,address,address,uint256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers around ERC20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"SafeERC20\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.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(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (token/ERC20/extensions/IERC20Permit.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\\n *\\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\\n * need to send a transaction, and thus is not required to hold Ether at all.\\n *\\n * ==== Security Considerations\\n *\\n * There are two important considerations concerning the use of `permit`. The first is that a valid permit signature\\n * expresses an allowance, and it should not be assumed to convey additional meaning. In particular, it should not be\\n * considered as an intention to spend the allowance in any specific way. The second is that because permits have\\n * built-in replay protection and can be submitted by anyone, they can be frontrun. A protocol that uses permits should\\n * take this into consideration and allow a `permit` call to fail. Combining these two aspects, a pattern that may be\\n * generally recommended is:\\n *\\n * ```solidity\\n * function doThingWithPermit(..., uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {\\n *     try token.permit(msg.sender, address(this), value, deadline, v, r, s) {} catch {}\\n *     doThing(..., value);\\n * }\\n *\\n * function doThing(..., uint256 value) public {\\n *     token.safeTransferFrom(msg.sender, address(this), value);\\n *     ...\\n * }\\n * ```\\n *\\n * Observe that: 1) `msg.sender` is used as the owner, leaving no ambiguity as to the signer intent, and 2) the use of\\n * `try/catch` allows the permit to fail and makes the code tolerant to frontrunning. (See also\\n * {SafeERC20-safeTransferFrom}).\\n *\\n * Additionally, note that smart contract wallets (such as Argent or Safe) are not able to produce permit signatures, so\\n * contracts should have entry points that don't rely on permit.\\n */\\ninterface IERC20Permit {\\n    /**\\n     * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\\n     * given ``owner``'s signed approval.\\n     *\\n     * IMPORTANT: The same issues {IERC20-approve} has related to transaction\\n     * ordering also apply here.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     * - `deadline` must be a timestamp in the future.\\n     * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\\n     * over the EIP712-formatted function arguments.\\n     * - the signature must use ``owner``'s current nonce (see {nonces}).\\n     *\\n     * For more information on the signature format, see the\\n     * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\\n     * section].\\n     *\\n     * CAUTION: See Security Considerations above.\\n     */\\n    function permit(\\n        address owner,\\n        address spender,\\n        uint256 value,\\n        uint256 deadline,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external;\\n\\n    /**\\n     * @dev Returns the current nonce for `owner`. This value must be\\n     * included whenever a signature is generated for {permit}.\\n     *\\n     * Every successful call to {permit} increases ``owner``'s nonce by one. This\\n     * prevents a signature from being used multiple times.\\n     */\\n    function nonces(address owner) external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\\n     */\\n    // solhint-disable-next-line func-name-mixedcase\\n    function DOMAIN_SEPARATOR() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0xb264c03a3442eb37a68ad620cefd1182766b58bee6cec40343480392d6b14d69\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.3) (token/ERC20/utils/SafeERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\nimport \\\"../extensions/IERC20Permit.sol\\\";\\nimport \\\"../../../utils/Address.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20 {\\n    using Address for address;\\n\\n    /**\\n     * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     */\\n    function safeTransfer(IERC20 token, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\\n    }\\n\\n    /**\\n     * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\\n     * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\\n     */\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\\n    }\\n\\n    /**\\n     * @dev Deprecated. This function has issues similar to the ones found in\\n     * {IERC20-approve}, and its usage is discouraged.\\n     *\\n     * Whenever possible, use {safeIncreaseAllowance} and\\n     * {safeDecreaseAllowance} instead.\\n     */\\n    function safeApprove(IERC20 token, address spender, uint256 value) internal {\\n        // safeApprove should only be called when setting an initial allowance,\\n        // or when resetting it to zero. To increase and decrease it, use\\n        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\\n        require(\\n            (value == 0) || (token.allowance(address(this), spender) == 0),\\n            \\\"SafeERC20: approve from non-zero to non-zero allowance\\\"\\n        );\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\\n    }\\n\\n    /**\\n     * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     */\\n    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n        uint256 oldAllowance = token.allowance(address(this), spender);\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance + value));\\n    }\\n\\n    /**\\n     * @dev Decrease the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     */\\n    function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n        unchecked {\\n            uint256 oldAllowance = token.allowance(address(this), spender);\\n            require(oldAllowance >= value, \\\"SafeERC20: decreased allowance below zero\\\");\\n            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance - value));\\n        }\\n    }\\n\\n    /**\\n     * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\\n     * to be set to zero before setting it to a non-zero value, such as USDT.\\n     */\\n    function forceApprove(IERC20 token, address spender, uint256 value) internal {\\n        bytes memory approvalCall = abi.encodeWithSelector(token.approve.selector, spender, value);\\n\\n        if (!_callOptionalReturnBool(token, approvalCall)) {\\n            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, 0));\\n            _callOptionalReturn(token, approvalCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Use a ERC-2612 signature to set the `owner` approval toward `spender` on `token`.\\n     * Revert on invalid signature.\\n     */\\n    function safePermit(\\n        IERC20Permit token,\\n        address owner,\\n        address spender,\\n        uint256 value,\\n        uint256 deadline,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) internal {\\n        uint256 nonceBefore = token.nonces(owner);\\n        token.permit(owner, spender, value, deadline, v, r, s);\\n        uint256 nonceAfter = token.nonces(owner);\\n        require(nonceAfter == nonceBefore + 1, \\\"SafeERC20: permit did not succeed\\\");\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     */\\n    function _callOptionalReturn(IERC20 token, bytes memory data) private {\\n        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n        // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that\\n        // the target address contains contract code and also asserts for success in the low-level call.\\n\\n        bytes memory returndata = address(token).functionCall(data, \\\"SafeERC20: low-level call failed\\\");\\n        require(returndata.length == 0 || abi.decode(returndata, (bool)), \\\"SafeERC20: ERC20 operation did not succeed\\\");\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     *\\n     * This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead.\\n     */\\n    function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {\\n        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n        // we're implementing it ourselves. We cannot use {Address-functionCall} here since this should return false\\n        // and not revert is the subcall reverts.\\n\\n        (bool success, bytes memory returndata) = address(token).call(data);\\n        return\\n            success && (returndata.length == 0 || abi.decode(returndata, (bool))) && Address.isContract(address(token));\\n    }\\n}\\n\",\"keccak256\":\"0xabefac93435967b4d36a4fabcbdbb918d1f0b7ae3c3d85bc30923b326c927ed1\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     *\\n     * Furthermore, `isContract` will also return true if the target contract within\\n     * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n     * which only has an effect at the end of a transaction.\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n     * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n     *\\n     * _Available since v4.8._\\n     */\\n    function verifyCallResultFromTarget(\\n        address target,\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        if (success) {\\n            if (returndata.length == 0) {\\n                // only check isContract if the call was successful and the return data is empty\\n                // otherwise we already know that it was a contract\\n                require(isContract(target), \\\"Address: call to non-contract\\\");\\n            }\\n            return returndata;\\n        } else {\\n            _revert(returndata, errorMessage);\\n        }\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason or using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            _revert(returndata, errorMessage);\\n        }\\n    }\\n\\n    function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n        // Look for revert reason and bubble it up if present\\n        if (returndata.length > 0) {\\n            // The easiest way to bubble the revert reason is using memory via assembly\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert(errorMessage);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Address.sol":{"Address":{"abi":[],"devdoc":{"details":"Collection of functions related to the address type","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220b4f9c8f7b39a42e87d219f96bd42c397c4af6de37faee3328a6ea8a6607a871c64736f6c634300081c0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB4 0xF9 0xC8 0xF7 0xB3 SWAP11 TIMESTAMP 0xE8 PUSH30 0x219F96BD42C397C4AF6DE37FAEE3328A6EA8A6607A871C64736F6C634300 ADDMOD SHR STOP CALLER ","sourceMap":"194:9169:19:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;194:9169:19;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220b4f9c8f7b39a42e87d219f96bd42c397c4af6de37faee3328a6ea8a6607a871c64736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB4 0xF9 0xC8 0xF7 0xB3 SWAP11 TIMESTAMP 0xE8 PUSH30 0x219F96BD42C397C4AF6DE37FAEE3328A6EA8A6607A871C64736F6C634300 ADDMOD SHR STOP CALLER ","sourceMap":"194:9169:19:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17000","executionCost":"96","totalCost":"17096"},"internal":{"_revert(bytes memory,string memory)":"infinite","functionCall(address,bytes memory)":"infinite","functionCall(address,bytes memory,string memory)":"infinite","functionCallWithValue(address,bytes memory,uint256)":"infinite","functionCallWithValue(address,bytes memory,uint256,string memory)":"infinite","functionDelegateCall(address,bytes memory)":"infinite","functionDelegateCall(address,bytes memory,string memory)":"infinite","functionStaticCall(address,bytes memory)":"infinite","functionStaticCall(address,bytes memory,string memory)":"infinite","isContract(address)":"infinite","sendValue(address payable,uint256)":"infinite","verifyCallResult(bool,bytes memory,string memory)":"infinite","verifyCallResultFromTarget(address,bool,bytes memory,string memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     *\\n     * Furthermore, `isContract` will also return true if the target contract within\\n     * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n     * which only has an effect at the end of a transaction.\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n     * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n     *\\n     * _Available since v4.8._\\n     */\\n    function verifyCallResultFromTarget(\\n        address target,\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        if (success) {\\n            if (returndata.length == 0) {\\n                // only check isContract if the call was successful and the return data is empty\\n                // otherwise we already know that it was a contract\\n                require(isContract(target), \\\"Address: call to non-contract\\\");\\n            }\\n            return returndata;\\n        } else {\\n            _revert(returndata, errorMessage);\\n        }\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason or using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            _revert(returndata, errorMessage);\\n        }\\n    }\\n\\n    function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n        // Look for revert reason and bubble it up if present\\n        if (returndata.length > 0) {\\n            // The easiest way to bubble the revert reason is using memory via assembly\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert(errorMessage);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Context.sol":{"Context":{"abi":[],"devdoc":{"details":"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (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    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/ShortStrings.sol":{"ShortStrings":{"abi":[{"inputs":[],"name":"InvalidShortString","type":"error"},{"inputs":[{"internalType":"string","name":"str","type":"string"}],"name":"StringTooLong","type":"error"}],"devdoc":{"details":"This library provides functions to convert short memory strings into a `ShortString` type that can be used as an immutable variable. Strings of arbitrary length can be optimized using this library if they are short enough (up to 31 bytes) by packing them with their length (1 byte) in a single EVM word (32 bytes). Additionally, a fallback mechanism can be used for every other case. Usage example: ```solidity contract Named {     using ShortStrings for *;     ShortString private immutable _name;     string private _nameFallback;     constructor(string memory contractName) {         _name = contractName.toShortStringWithFallback(_nameFallback);     }     function name() external view returns (string memory) {         return _name.toStringWithFallback(_nameFallback);     } } ```","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212206d5a581b66de8fab5bd5e80072b238402e653a4d5c52eec9bc1a25d2fd3fab0d64736f6c634300081c0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH14 0x5A581B66DE8FAB5BD5E80072B238 BLOCKHASH 0x2E PUSH6 0x3A4D5C52EEC9 0xBC BYTE 0x25 0xD2 REVERT EXTCODEHASH 0xAB 0xD PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"1235:3050:21:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1235:3050:21;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212206d5a581b66de8fab5bd5e80072b238402e653a4d5c52eec9bc1a25d2fd3fab0d64736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH14 0x5A581B66DE8FAB5BD5E80072B238 BLOCKHASH 0x2E PUSH6 0x3A4D5C52EEC9 0xBC BYTE 0x25 0xD2 REVERT EXTCODEHASH 0xAB 0xD PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"1235:3050:21:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17000","executionCost":"96","totalCost":"17096"},"internal":{"byteLength(ShortString)":"infinite","byteLengthWithFallback(ShortString,string storage pointer)":"infinite","toShortString(string memory)":"infinite","toShortStringWithFallback(string memory,string storage pointer)":"infinite","toString(ShortString)":"infinite","toStringWithFallback(ShortString,string storage pointer)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidShortString\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"name\":\"StringTooLong\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"This library provides functions to convert short memory strings into a `ShortString` type that can be used as an immutable variable. Strings of arbitrary length can be optimized using this library if they are short enough (up to 31 bytes) by packing them with their length (1 byte) in a single EVM word (32 bytes). Additionally, a fallback mechanism can be used for every other case. Usage example: ```solidity contract Named {     using ShortStrings for *;     ShortString private immutable _name;     string private _nameFallback;     constructor(string memory contractName) {         _name = contractName.toShortStringWithFallback(_nameFallback);     }     function name() external view returns (string memory) {         return _name.toStringWithFallback(_nameFallback);     } } ```\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/ShortStrings.sol\":\"ShortStrings\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/ShortStrings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/ShortStrings.sol)\\n\\npragma solidity ^0.8.8;\\n\\nimport \\\"./StorageSlot.sol\\\";\\n\\n// | string  | 0xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA   |\\n// | length  | 0x                                                              BB |\\ntype ShortString is bytes32;\\n\\n/**\\n * @dev This library provides functions to convert short memory strings\\n * into a `ShortString` type that can be used as an immutable variable.\\n *\\n * Strings of arbitrary length can be optimized using this library if\\n * they are short enough (up to 31 bytes) by packing them with their\\n * length (1 byte) in a single EVM word (32 bytes). Additionally, a\\n * fallback mechanism can be used for every other case.\\n *\\n * Usage example:\\n *\\n * ```solidity\\n * contract Named {\\n *     using ShortStrings for *;\\n *\\n *     ShortString private immutable _name;\\n *     string private _nameFallback;\\n *\\n *     constructor(string memory contractName) {\\n *         _name = contractName.toShortStringWithFallback(_nameFallback);\\n *     }\\n *\\n *     function name() external view returns (string memory) {\\n *         return _name.toStringWithFallback(_nameFallback);\\n *     }\\n * }\\n * ```\\n */\\nlibrary ShortStrings {\\n    // Used as an identifier for strings longer than 31 bytes.\\n    bytes32 private constant _FALLBACK_SENTINEL = 0x00000000000000000000000000000000000000000000000000000000000000FF;\\n\\n    error StringTooLong(string str);\\n    error InvalidShortString();\\n\\n    /**\\n     * @dev Encode a string of at most 31 chars into a `ShortString`.\\n     *\\n     * This will trigger a `StringTooLong` error is the input string is too long.\\n     */\\n    function toShortString(string memory str) internal pure returns (ShortString) {\\n        bytes memory bstr = bytes(str);\\n        if (bstr.length > 31) {\\n            revert StringTooLong(str);\\n        }\\n        return ShortString.wrap(bytes32(uint256(bytes32(bstr)) | bstr.length));\\n    }\\n\\n    /**\\n     * @dev Decode a `ShortString` back to a \\\"normal\\\" string.\\n     */\\n    function toString(ShortString sstr) internal pure returns (string memory) {\\n        uint256 len = byteLength(sstr);\\n        // using `new string(len)` would work locally but is not memory safe.\\n        string memory str = new string(32);\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            mstore(str, len)\\n            mstore(add(str, 0x20), sstr)\\n        }\\n        return str;\\n    }\\n\\n    /**\\n     * @dev Return the length of a `ShortString`.\\n     */\\n    function byteLength(ShortString sstr) internal pure returns (uint256) {\\n        uint256 result = uint256(ShortString.unwrap(sstr)) & 0xFF;\\n        if (result > 31) {\\n            revert InvalidShortString();\\n        }\\n        return result;\\n    }\\n\\n    /**\\n     * @dev Encode a string into a `ShortString`, or write it to storage if it is too long.\\n     */\\n    function toShortStringWithFallback(string memory value, string storage store) internal returns (ShortString) {\\n        if (bytes(value).length < 32) {\\n            return toShortString(value);\\n        } else {\\n            StorageSlot.getStringSlot(store).value = value;\\n            return ShortString.wrap(_FALLBACK_SENTINEL);\\n        }\\n    }\\n\\n    /**\\n     * @dev Decode a string that was encoded to `ShortString` or written to storage using {setWithFallback}.\\n     */\\n    function toStringWithFallback(ShortString value, string storage store) internal pure returns (string memory) {\\n        if (ShortString.unwrap(value) != _FALLBACK_SENTINEL) {\\n            return toString(value);\\n        } else {\\n            return store;\\n        }\\n    }\\n\\n    /**\\n     * @dev Return the length of a string that was encoded to `ShortString` or written to storage using {setWithFallback}.\\n     *\\n     * WARNING: This will return the \\\"byte length\\\" of the string. This may not reflect the actual length in terms of\\n     * actual characters as the UTF-8 encoding of a single character can span over multiple bytes.\\n     */\\n    function byteLengthWithFallback(ShortString value, string storage store) internal view returns (uint256) {\\n        if (ShortString.unwrap(value) != _FALLBACK_SENTINEL) {\\n            return byteLength(value);\\n        } else {\\n            return bytes(store).length;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xc0e310c163edf15db45d4ff938113ab357f94fa86e61ea8e790853c4d2e13256\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\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 * ```solidity\\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`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\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    struct StringSlot {\\n        string value;\\n    }\\n\\n    struct BytesSlot {\\n        bytes 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    /**\\n     * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n     */\\n    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n     */\\n    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/StorageSlot.sol":{"StorageSlot":{"abi":[],"devdoc":{"details":"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: ```solidity 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`, `uint256`._ _Available since v4.9 for `string`, `bytes`._","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212206290e81071f8b17161273c6aa121d212d85781c1fe1b8603accbcce7d8080e7a64736f6c634300081c0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH3 0x90E810 PUSH18 0xF8B17161273C6AA121D212D85781C1FE1B86 SUB 0xAC 0xCB 0xCC 0xE7 0xD8 ADDMOD 0xE PUSH27 0x64736F6C634300081C003300000000000000000000000000000000 ","sourceMap":"1420:2685:22:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1420:2685:22;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212206290e81071f8b17161273c6aa121d212d85781c1fe1b8603accbcce7d8080e7a64736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH3 0x90E810 PUSH18 0xF8B17161273C6AA121D212D85781C1FE1B86 SUB 0xAC 0xCB 0xCC 0xE7 0xD8 ADDMOD 0xE PUSH27 0x64736F6C634300081C003300000000000000000000000000000000 ","sourceMap":"1420:2685:22:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17000","executionCost":"96","totalCost":"17096"},"internal":{"getAddressSlot(bytes32)":"infinite","getBooleanSlot(bytes32)":"infinite","getBytes32Slot(bytes32)":"infinite","getBytesSlot(bytes storage pointer)":"infinite","getBytesSlot(bytes32)":"infinite","getStringSlot(bytes32)":"infinite","getStringSlot(string storage pointer)":"infinite","getUint256Slot(bytes32)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"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: ```solidity 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`, `uint256`._ _Available since v4.9 for `string`, `bytes`._\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":\"StorageSlot\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\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 * ```solidity\\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`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\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    struct StringSlot {\\n        string value;\\n    }\\n\\n    struct BytesSlot {\\n        bytes 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    /**\\n     * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n     */\\n    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n     */\\n    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Strings.sol":{"Strings":{"abi":[],"devdoc":{"details":"String operations.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220558d9ef6582a155790d8259869a6d1aef178b3131f9ac42ab2f72f8823a9ac7264736f6c634300081c0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SSTORE DUP14 SWAP15 0xF6 PC 0x2A ISZERO JUMPI SWAP1 0xD8 0x25 SWAP9 PUSH10 0xA6D1AEF178B3131F9AC4 0x2A 0xB2 0xF7 0x2F DUP9 0x23 0xA9 0xAC PUSH19 0x64736F6C634300081C00330000000000000000 ","sourceMap":"220:2559:23:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;220:2559:23;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220558d9ef6582a155790d8259869a6d1aef178b3131f9ac42ab2f72f8823a9ac7264736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SSTORE DUP14 SWAP15 0xF6 PC 0x2A ISZERO JUMPI SWAP1 0xD8 0x25 SWAP9 PUSH10 0xA6D1AEF178B3131F9AC4 0x2A 0xB2 0xF7 0x2F DUP9 0x23 0xA9 0xAC PUSH19 0x64736F6C634300081C00330000000000000000 ","sourceMap":"220:2559:23:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17000","executionCost":"96","totalCost":"17096"},"internal":{"equal(string memory,string memory)":"infinite","toHexString(address)":"infinite","toHexString(uint256)":"infinite","toHexString(uint256,uint256)":"infinite","toString(int256)":"infinite","toString(uint256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"String operations.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Strings.sol\":\"Strings\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n    bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n    uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        unchecked {\\n            uint256 length = Math.log10(value) + 1;\\n            string memory buffer = new string(length);\\n            uint256 ptr;\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                ptr := add(buffer, add(32, length))\\n            }\\n            while (true) {\\n                ptr--;\\n                /// @solidity memory-safe-assembly\\n                assembly {\\n                    mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n                }\\n                value /= 10;\\n                if (value == 0) break;\\n            }\\n            return buffer;\\n        }\\n    }\\n\\n    /**\\n     * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(int256 value) internal pure returns (string memory) {\\n        return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        unchecked {\\n            return toHexString(value, Math.log256(value) + 1);\\n        }\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = _SYMBOLS[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(address addr) internal pure returns (string memory) {\\n        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n    }\\n\\n    /**\\n     * @dev Returns true if the two strings are equal.\\n     */\\n    function equal(string memory a, string memory b) internal pure returns (bool) {\\n        return keccak256(bytes(a)) == keccak256(bytes(b));\\n    }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.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(uint256 x, uint256 y, uint256 denominator) 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                // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n                // The surrounding unchecked block does not change this fact.\\n                // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n                return prod0 / denominator;\\n            }\\n\\n            // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n            require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\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(uint256 x, uint256 y, uint256 denominator, Rounding rounding) 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        // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n        // \\u2192 `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 256, 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 << 3) < value ? 1 : 0);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n    /**\\n     * @dev Returns the largest of two signed numbers.\\n     */\\n    function max(int256 a, int256 b) internal pure returns (int256) {\\n        return a > b ? a : b;\\n    }\\n\\n    /**\\n     * @dev Returns the smallest of two signed numbers.\\n     */\\n    function min(int256 a, int256 b) internal pure returns (int256) {\\n        return a < b ? a : b;\\n    }\\n\\n    /**\\n     * @dev Returns the average of two signed numbers without overflow.\\n     * The result is rounded towards zero.\\n     */\\n    function average(int256 a, int256 b) internal pure returns (int256) {\\n        // Formula from the book \\\"Hacker's Delight\\\"\\n        int256 x = (a & b) + ((a ^ b) >> 1);\\n        return x + (int256(uint256(x) >> 255) & (a ^ b));\\n    }\\n\\n    /**\\n     * @dev Returns the absolute unsigned value of a signed value.\\n     */\\n    function abs(int256 n) internal pure returns (uint256) {\\n        unchecked {\\n            // must be unchecked in order to support `n = type(int256).min`\\n            return uint256(n >= 0 ? n : -n);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/cryptography/ECDSA.sol":{"ECDSA":{"abi":[],"devdoc":{"details":"Elliptic Curve Digital Signature Algorithm (ECDSA) operations. These functions can be used to verify that a message was signed by the holder of the private keys of a given address.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea264697066735822122029b50191cfbe53b2a0157a78b6798449c01e5b2b374d718fe7ca3679d1d34f9f64736f6c634300081c0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x29 0xB5 ADD SWAP2 0xCF 0xBE MSTORE8 0xB2 LOG0 ISZERO PUSH27 0x78B6798449C01E5B2B374D718FE7CA3679D1D34F9F64736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"369:8761:24:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;369:8761:24;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea264697066735822122029b50191cfbe53b2a0157a78b6798449c01e5b2b374d718fe7ca3679d1d34f9f64736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x29 0xB5 ADD SWAP2 0xCF 0xBE MSTORE8 0xB2 LOG0 ISZERO PUSH27 0x78B6798449C01E5B2B374D718FE7CA3679D1D34F9F64736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"369:8761:24:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17000","executionCost":"96","totalCost":"17096"},"internal":{"_throwError(enum ECDSA.RecoverError)":"infinite","recover(bytes32,bytes memory)":"infinite","recover(bytes32,bytes32,bytes32)":"infinite","recover(bytes32,uint8,bytes32,bytes32)":"infinite","toDataWithIntendedValidatorHash(address,bytes memory)":"infinite","toEthSignedMessageHash(bytes memory)":"infinite","toEthSignedMessageHash(bytes32)":"infinite","toTypedDataHash(bytes32,bytes32)":"infinite","tryRecover(bytes32,bytes memory)":"infinite","tryRecover(bytes32,bytes32,bytes32)":"infinite","tryRecover(bytes32,uint8,bytes32,bytes32)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Elliptic Curve Digital Signature Algorithm (ECDSA) operations. These functions can be used to verify that a message was signed by the holder of the private keys of a given address.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":\"ECDSA\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n    bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n    uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        unchecked {\\n            uint256 length = Math.log10(value) + 1;\\n            string memory buffer = new string(length);\\n            uint256 ptr;\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                ptr := add(buffer, add(32, length))\\n            }\\n            while (true) {\\n                ptr--;\\n                /// @solidity memory-safe-assembly\\n                assembly {\\n                    mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n                }\\n                value /= 10;\\n                if (value == 0) break;\\n            }\\n            return buffer;\\n        }\\n    }\\n\\n    /**\\n     * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(int256 value) internal pure returns (string memory) {\\n        return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        unchecked {\\n            return toHexString(value, Math.log256(value) + 1);\\n        }\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = _SYMBOLS[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(address addr) internal pure returns (string memory) {\\n        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n    }\\n\\n    /**\\n     * @dev Returns true if the two strings are equal.\\n     */\\n    function equal(string memory a, string memory b) internal pure returns (bool) {\\n        return keccak256(bytes(a)) == keccak256(bytes(b));\\n    }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/cryptography/ECDSA.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Strings.sol\\\";\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSA {\\n    enum RecoverError {\\n        NoError,\\n        InvalidSignature,\\n        InvalidSignatureLength,\\n        InvalidSignatureS,\\n        InvalidSignatureV // Deprecated in v4.8\\n    }\\n\\n    function _throwError(RecoverError error) private pure {\\n        if (error == RecoverError.NoError) {\\n            return; // no error: do nothing\\n        } else if (error == RecoverError.InvalidSignature) {\\n            revert(\\\"ECDSA: invalid signature\\\");\\n        } else if (error == RecoverError.InvalidSignatureLength) {\\n            revert(\\\"ECDSA: invalid signature length\\\");\\n        } else if (error == RecoverError.InvalidSignatureS) {\\n            revert(\\\"ECDSA: invalid signature 's' value\\\");\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature` or error string. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {toEthSignedMessageHash} on it.\\n     *\\n     * Documentation for signature generation:\\n     * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n     * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\\n        if (signature.length == 65) {\\n            bytes32 r;\\n            bytes32 s;\\n            uint8 v;\\n            // ecrecover takes the signature parameters, and the only way to get them\\n            // currently is to use assembly.\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                r := mload(add(signature, 0x20))\\n                s := mload(add(signature, 0x40))\\n                v := byte(0, mload(add(signature, 0x60)))\\n            }\\n            return tryRecover(hash, v, r, s);\\n        } else {\\n            return (address(0), RecoverError.InvalidSignatureLength);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature`. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {toEthSignedMessageHash} on it.\\n     */\\n    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, signature);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\n     *\\n     * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address, RecoverError) {\\n        bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\n        uint8 v = uint8((uint256(vs) >> 255) + 27);\\n        return tryRecover(hash, v, r, s);\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\n     *\\n     * _Available since v4.2._\\n     */\\n    function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, r, vs);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address, RecoverError) {\\n        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n        // the valid range for s in (301): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (302): v \\u2208 {27, 28}. Most\\n        // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n        //\\n        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n        // these malleable signatures as well.\\n        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n            return (address(0), RecoverError.InvalidSignatureS);\\n        }\\n\\n        // If the signature is valid (and not malleable), return the signer address\\n        address signer = ecrecover(hash, v, r, s);\\n        if (signer == address(0)) {\\n            return (address(0), RecoverError.InvalidSignature);\\n        }\\n\\n        return (signer, RecoverError.NoError);\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     */\\n    function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n     * produces hash corresponding to the one signed with the\\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n     * JSON-RPC method as part of EIP-191.\\n     *\\n     * See {recover}.\\n     */\\n    function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32 message) {\\n        // 32 is the length in bytes of hash,\\n        // enforced by the type signature above\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            mstore(0x00, \\\"\\\\x19Ethereum Signed Message:\\\\n32\\\")\\n            mstore(0x1c, hash)\\n            message := keccak256(0x00, 0x3c)\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Message, created from `s`. This\\n     * produces hash corresponding to the one signed with the\\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n     * JSON-RPC method as part of EIP-191.\\n     *\\n     * See {recover}.\\n     */\\n    function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\\n        return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n\\\", Strings.toString(s.length), s));\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Typed Data, created from a\\n     * `domainSeparator` and a `structHash`. This produces hash corresponding\\n     * to the one signed with the\\n     * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\\n     * JSON-RPC method as part of EIP-712.\\n     *\\n     * See {recover}.\\n     */\\n    function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32 data) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            let ptr := mload(0x40)\\n            mstore(ptr, \\\"\\\\x19\\\\x01\\\")\\n            mstore(add(ptr, 0x02), domainSeparator)\\n            mstore(add(ptr, 0x22), structHash)\\n            data := keccak256(ptr, 0x42)\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Data with intended validator, created from a\\n     * `validator` and `data` according to the version 0 of EIP-191.\\n     *\\n     * See {recover}.\\n     */\\n    function toDataWithIntendedValidatorHash(address validator, bytes memory data) internal pure returns (bytes32) {\\n        return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x00\\\", validator, data));\\n    }\\n}\\n\",\"keccak256\":\"0x809bc3edb4bcbef8263fa616c1b60ee0004b50a8a1bfa164d8f57fd31f520c58\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.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(uint256 x, uint256 y, uint256 denominator) 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                // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n                // The surrounding unchecked block does not change this fact.\\n                // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n                return prod0 / denominator;\\n            }\\n\\n            // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n            require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\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(uint256 x, uint256 y, uint256 denominator, Rounding rounding) 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        // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n        // \\u2192 `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 256, 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 << 3) < value ? 1 : 0);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n    /**\\n     * @dev Returns the largest of two signed numbers.\\n     */\\n    function max(int256 a, int256 b) internal pure returns (int256) {\\n        return a > b ? a : b;\\n    }\\n\\n    /**\\n     * @dev Returns the smallest of two signed numbers.\\n     */\\n    function min(int256 a, int256 b) internal pure returns (int256) {\\n        return a < b ? a : b;\\n    }\\n\\n    /**\\n     * @dev Returns the average of two signed numbers without overflow.\\n     * The result is rounded towards zero.\\n     */\\n    function average(int256 a, int256 b) internal pure returns (int256) {\\n        // Formula from the book \\\"Hacker's Delight\\\"\\n        int256 x = (a & b) + ((a ^ b) >> 1);\\n        return x + (int256(uint256(x) >> 255) & (a ^ b));\\n    }\\n\\n    /**\\n     * @dev Returns the absolute unsigned value of a signed value.\\n     */\\n    function abs(int256 n) internal pure returns (uint256) {\\n        unchecked {\\n            // must be unchecked in order to support `n = type(int256).min`\\n            return uint256(n >= 0 ? n : -n);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/cryptography/EIP712.sol":{"EIP712":{"abi":[{"inputs":[],"name":"InvalidShortString","type":"error"},{"inputs":[{"internalType":"string","name":"str","type":"string"}],"name":"StringTooLong","type":"error"},{"anonymous":false,"inputs":[],"name":"EIP712DomainChanged","type":"event"},{"inputs":[],"name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}],"stateMutability":"view","type":"function"}],"devdoc":{"custom:oz-upgrades-unsafe-allow":"state-variable-immutable state-variable-assignment","details":"https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data. The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible, thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding they need in their contracts using a combination of `abi.encode` and `keccak256`. This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA ({_hashTypedDataV4}). The implementation of the domain separator was designed to be as efficient as possible while still properly updating the chain id to protect against replay attacks on an eventual fork of the chain. NOTE: This contract implements the version of the encoding known as \"v4\", as implemented by the JSON RPC method https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask]. NOTE: In the upgradeable version of this contract, the cached values will correspond to the address, and the domain separator of the implementation contract. This will cause the `_domainSeparatorV4` function to always rebuild the separator from the immutable values, which is cheaper than accessing a cached version in cold storage. _Available since v3.4._","events":{"EIP712DomainChanged()":{"details":"MAY be emitted to signal that the domain could have changed."}},"kind":"dev","methods":{"constructor":{"details":"Initializes the domain separator and parameter caches. The meaning of `name` and `version` is specified in https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]: - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol. - `version`: the current major version of the signing domain. NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart contract upgrade]."},"eip712Domain()":{"details":"See {EIP-5267}. _Available since v4.9._"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"eip712Domain()":"84b0196e"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidShortString\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"name\":\"StringTooLong\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable state-variable-assignment\",\"details\":\"https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data. The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible, thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding they need in their contracts using a combination of `abi.encode` and `keccak256`. This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA ({_hashTypedDataV4}). The implementation of the domain separator was designed to be as efficient as possible while still properly updating the chain id to protect against replay attacks on an eventual fork of the chain. NOTE: This contract implements the version of the encoding known as \\\"v4\\\", as implemented by the JSON RPC method https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask]. NOTE: In the upgradeable version of this contract, the cached values will correspond to the address, and the domain separator of the implementation contract. This will cause the `_domainSeparatorV4` function to always rebuild the separator from the immutable values, which is cheaper than accessing a cached version in cold storage. _Available since v3.4._\",\"events\":{\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the domain separator and parameter caches. The meaning of `name` and `version` is specified in https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]: - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol. - `version`: the current major version of the signing domain. NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart contract upgrade].\"},\"eip712Domain()\":{\"details\":\"See {EIP-5267}. _Available since v4.9._\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/cryptography/EIP712.sol\":\"EIP712\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC5267.sol)\\n\\npragma solidity ^0.8.0;\\n\\ninterface IERC5267 {\\n    /**\\n     * @dev MAY be emitted to signal that the domain could have changed.\\n     */\\n    event EIP712DomainChanged();\\n\\n    /**\\n     * @dev returns the fields and values that describe the domain separator used by this contract for EIP-712\\n     * signature.\\n     */\\n    function eip712Domain()\\n        external\\n        view\\n        returns (\\n            bytes1 fields,\\n            string memory name,\\n            string memory version,\\n            uint256 chainId,\\n            address verifyingContract,\\n            bytes32 salt,\\n            uint256[] memory extensions\\n        );\\n}\\n\",\"keccak256\":\"0xac6c2efc64baccbde4904ae18ed45139c9aa8cff96d6888344d1e4d2eb8b659f\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/ShortStrings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/ShortStrings.sol)\\n\\npragma solidity ^0.8.8;\\n\\nimport \\\"./StorageSlot.sol\\\";\\n\\n// | string  | 0xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA   |\\n// | length  | 0x                                                              BB |\\ntype ShortString is bytes32;\\n\\n/**\\n * @dev This library provides functions to convert short memory strings\\n * into a `ShortString` type that can be used as an immutable variable.\\n *\\n * Strings of arbitrary length can be optimized using this library if\\n * they are short enough (up to 31 bytes) by packing them with their\\n * length (1 byte) in a single EVM word (32 bytes). Additionally, a\\n * fallback mechanism can be used for every other case.\\n *\\n * Usage example:\\n *\\n * ```solidity\\n * contract Named {\\n *     using ShortStrings for *;\\n *\\n *     ShortString private immutable _name;\\n *     string private _nameFallback;\\n *\\n *     constructor(string memory contractName) {\\n *         _name = contractName.toShortStringWithFallback(_nameFallback);\\n *     }\\n *\\n *     function name() external view returns (string memory) {\\n *         return _name.toStringWithFallback(_nameFallback);\\n *     }\\n * }\\n * ```\\n */\\nlibrary ShortStrings {\\n    // Used as an identifier for strings longer than 31 bytes.\\n    bytes32 private constant _FALLBACK_SENTINEL = 0x00000000000000000000000000000000000000000000000000000000000000FF;\\n\\n    error StringTooLong(string str);\\n    error InvalidShortString();\\n\\n    /**\\n     * @dev Encode a string of at most 31 chars into a `ShortString`.\\n     *\\n     * This will trigger a `StringTooLong` error is the input string is too long.\\n     */\\n    function toShortString(string memory str) internal pure returns (ShortString) {\\n        bytes memory bstr = bytes(str);\\n        if (bstr.length > 31) {\\n            revert StringTooLong(str);\\n        }\\n        return ShortString.wrap(bytes32(uint256(bytes32(bstr)) | bstr.length));\\n    }\\n\\n    /**\\n     * @dev Decode a `ShortString` back to a \\\"normal\\\" string.\\n     */\\n    function toString(ShortString sstr) internal pure returns (string memory) {\\n        uint256 len = byteLength(sstr);\\n        // using `new string(len)` would work locally but is not memory safe.\\n        string memory str = new string(32);\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            mstore(str, len)\\n            mstore(add(str, 0x20), sstr)\\n        }\\n        return str;\\n    }\\n\\n    /**\\n     * @dev Return the length of a `ShortString`.\\n     */\\n    function byteLength(ShortString sstr) internal pure returns (uint256) {\\n        uint256 result = uint256(ShortString.unwrap(sstr)) & 0xFF;\\n        if (result > 31) {\\n            revert InvalidShortString();\\n        }\\n        return result;\\n    }\\n\\n    /**\\n     * @dev Encode a string into a `ShortString`, or write it to storage if it is too long.\\n     */\\n    function toShortStringWithFallback(string memory value, string storage store) internal returns (ShortString) {\\n        if (bytes(value).length < 32) {\\n            return toShortString(value);\\n        } else {\\n            StorageSlot.getStringSlot(store).value = value;\\n            return ShortString.wrap(_FALLBACK_SENTINEL);\\n        }\\n    }\\n\\n    /**\\n     * @dev Decode a string that was encoded to `ShortString` or written to storage using {setWithFallback}.\\n     */\\n    function toStringWithFallback(ShortString value, string storage store) internal pure returns (string memory) {\\n        if (ShortString.unwrap(value) != _FALLBACK_SENTINEL) {\\n            return toString(value);\\n        } else {\\n            return store;\\n        }\\n    }\\n\\n    /**\\n     * @dev Return the length of a string that was encoded to `ShortString` or written to storage using {setWithFallback}.\\n     *\\n     * WARNING: This will return the \\\"byte length\\\" of the string. This may not reflect the actual length in terms of\\n     * actual characters as the UTF-8 encoding of a single character can span over multiple bytes.\\n     */\\n    function byteLengthWithFallback(ShortString value, string storage store) internal view returns (uint256) {\\n        if (ShortString.unwrap(value) != _FALLBACK_SENTINEL) {\\n            return byteLength(value);\\n        } else {\\n            return bytes(store).length;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xc0e310c163edf15db45d4ff938113ab357f94fa86e61ea8e790853c4d2e13256\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\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 * ```solidity\\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`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\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    struct StringSlot {\\n        string value;\\n    }\\n\\n    struct BytesSlot {\\n        bytes 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    /**\\n     * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n     */\\n    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n     */\\n    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n    bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n    uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        unchecked {\\n            uint256 length = Math.log10(value) + 1;\\n            string memory buffer = new string(length);\\n            uint256 ptr;\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                ptr := add(buffer, add(32, length))\\n            }\\n            while (true) {\\n                ptr--;\\n                /// @solidity memory-safe-assembly\\n                assembly {\\n                    mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n                }\\n                value /= 10;\\n                if (value == 0) break;\\n            }\\n            return buffer;\\n        }\\n    }\\n\\n    /**\\n     * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(int256 value) internal pure returns (string memory) {\\n        return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        unchecked {\\n            return toHexString(value, Math.log256(value) + 1);\\n        }\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = _SYMBOLS[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(address addr) internal pure returns (string memory) {\\n        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n    }\\n\\n    /**\\n     * @dev Returns true if the two strings are equal.\\n     */\\n    function equal(string memory a, string memory b) internal pure returns (bool) {\\n        return keccak256(bytes(a)) == keccak256(bytes(b));\\n    }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/cryptography/ECDSA.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Strings.sol\\\";\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSA {\\n    enum RecoverError {\\n        NoError,\\n        InvalidSignature,\\n        InvalidSignatureLength,\\n        InvalidSignatureS,\\n        InvalidSignatureV // Deprecated in v4.8\\n    }\\n\\n    function _throwError(RecoverError error) private pure {\\n        if (error == RecoverError.NoError) {\\n            return; // no error: do nothing\\n        } else if (error == RecoverError.InvalidSignature) {\\n            revert(\\\"ECDSA: invalid signature\\\");\\n        } else if (error == RecoverError.InvalidSignatureLength) {\\n            revert(\\\"ECDSA: invalid signature length\\\");\\n        } else if (error == RecoverError.InvalidSignatureS) {\\n            revert(\\\"ECDSA: invalid signature 's' value\\\");\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature` or error string. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {toEthSignedMessageHash} on it.\\n     *\\n     * Documentation for signature generation:\\n     * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n     * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\\n        if (signature.length == 65) {\\n            bytes32 r;\\n            bytes32 s;\\n            uint8 v;\\n            // ecrecover takes the signature parameters, and the only way to get them\\n            // currently is to use assembly.\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                r := mload(add(signature, 0x20))\\n                s := mload(add(signature, 0x40))\\n                v := byte(0, mload(add(signature, 0x60)))\\n            }\\n            return tryRecover(hash, v, r, s);\\n        } else {\\n            return (address(0), RecoverError.InvalidSignatureLength);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature`. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {toEthSignedMessageHash} on it.\\n     */\\n    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, signature);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\n     *\\n     * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address, RecoverError) {\\n        bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\n        uint8 v = uint8((uint256(vs) >> 255) + 27);\\n        return tryRecover(hash, v, r, s);\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\n     *\\n     * _Available since v4.2._\\n     */\\n    function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, r, vs);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address, RecoverError) {\\n        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n        // the valid range for s in (301): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (302): v \\u2208 {27, 28}. Most\\n        // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n        //\\n        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n        // these malleable signatures as well.\\n        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n            return (address(0), RecoverError.InvalidSignatureS);\\n        }\\n\\n        // If the signature is valid (and not malleable), return the signer address\\n        address signer = ecrecover(hash, v, r, s);\\n        if (signer == address(0)) {\\n            return (address(0), RecoverError.InvalidSignature);\\n        }\\n\\n        return (signer, RecoverError.NoError);\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     */\\n    function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n     * produces hash corresponding to the one signed with the\\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n     * JSON-RPC method as part of EIP-191.\\n     *\\n     * See {recover}.\\n     */\\n    function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32 message) {\\n        // 32 is the length in bytes of hash,\\n        // enforced by the type signature above\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            mstore(0x00, \\\"\\\\x19Ethereum Signed Message:\\\\n32\\\")\\n            mstore(0x1c, hash)\\n            message := keccak256(0x00, 0x3c)\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Message, created from `s`. This\\n     * produces hash corresponding to the one signed with the\\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n     * JSON-RPC method as part of EIP-191.\\n     *\\n     * See {recover}.\\n     */\\n    function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\\n        return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n\\\", Strings.toString(s.length), s));\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Typed Data, created from a\\n     * `domainSeparator` and a `structHash`. This produces hash corresponding\\n     * to the one signed with the\\n     * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\\n     * JSON-RPC method as part of EIP-712.\\n     *\\n     * See {recover}.\\n     */\\n    function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32 data) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            let ptr := mload(0x40)\\n            mstore(ptr, \\\"\\\\x19\\\\x01\\\")\\n            mstore(add(ptr, 0x02), domainSeparator)\\n            mstore(add(ptr, 0x22), structHash)\\n            data := keccak256(ptr, 0x42)\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Data with intended validator, created from a\\n     * `validator` and `data` according to the version 0 of EIP-191.\\n     *\\n     * See {recover}.\\n     */\\n    function toDataWithIntendedValidatorHash(address validator, bytes memory data) internal pure returns (bytes32) {\\n        return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x00\\\", validator, data));\\n    }\\n}\\n\",\"keccak256\":\"0x809bc3edb4bcbef8263fa616c1b60ee0004b50a8a1bfa164d8f57fd31f520c58\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/cryptography/EIP712.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/cryptography/EIP712.sol)\\n\\npragma solidity ^0.8.8;\\n\\nimport \\\"./ECDSA.sol\\\";\\nimport \\\"../ShortStrings.sol\\\";\\nimport \\\"../../interfaces/IERC5267.sol\\\";\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\\n *\\n * The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,\\n * thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding\\n * they need in their contracts using a combination of `abi.encode` and `keccak256`.\\n *\\n * This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\\n * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\\n * ({_hashTypedDataV4}).\\n *\\n * The implementation of the domain separator was designed to be as efficient as possible while still properly updating\\n * the chain id to protect against replay attacks on an eventual fork of the chain.\\n *\\n * NOTE: This contract implements the version of the encoding known as \\\"v4\\\", as implemented by the JSON RPC method\\n * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\\n *\\n * NOTE: In the upgradeable version of this contract, the cached values will correspond to the address, and the domain\\n * separator of the implementation contract. This will cause the `_domainSeparatorV4` function to always rebuild the\\n * separator from the immutable values, which is cheaper than accessing a cached version in cold storage.\\n *\\n * _Available since v3.4._\\n *\\n * @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n */\\nabstract contract EIP712 is IERC5267 {\\n    using ShortStrings for *;\\n\\n    bytes32 private constant _TYPE_HASH =\\n        keccak256(\\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\");\\n\\n    // Cache the domain separator as an immutable value, but also store the chain id that it corresponds to, in order to\\n    // invalidate the cached domain separator if the chain id changes.\\n    bytes32 private immutable _cachedDomainSeparator;\\n    uint256 private immutable _cachedChainId;\\n    address private immutable _cachedThis;\\n\\n    bytes32 private immutable _hashedName;\\n    bytes32 private immutable _hashedVersion;\\n\\n    ShortString private immutable _name;\\n    ShortString private immutable _version;\\n    string private _nameFallback;\\n    string private _versionFallback;\\n\\n    /**\\n     * @dev Initializes the domain separator and parameter caches.\\n     *\\n     * The meaning of `name` and `version` is specified in\\n     * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\\n     *\\n     * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\\n     * - `version`: the current major version of the signing domain.\\n     *\\n     * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\\n     * contract upgrade].\\n     */\\n    constructor(string memory name, string memory version) {\\n        _name = name.toShortStringWithFallback(_nameFallback);\\n        _version = version.toShortStringWithFallback(_versionFallback);\\n        _hashedName = keccak256(bytes(name));\\n        _hashedVersion = keccak256(bytes(version));\\n\\n        _cachedChainId = block.chainid;\\n        _cachedDomainSeparator = _buildDomainSeparator();\\n        _cachedThis = address(this);\\n    }\\n\\n    /**\\n     * @dev Returns the domain separator for the current chain.\\n     */\\n    function _domainSeparatorV4() internal view returns (bytes32) {\\n        if (address(this) == _cachedThis && block.chainid == _cachedChainId) {\\n            return _cachedDomainSeparator;\\n        } else {\\n            return _buildDomainSeparator();\\n        }\\n    }\\n\\n    function _buildDomainSeparator() private view returns (bytes32) {\\n        return keccak256(abi.encode(_TYPE_HASH, _hashedName, _hashedVersion, block.chainid, address(this)));\\n    }\\n\\n    /**\\n     * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\\n     * function returns the hash of the fully encoded EIP712 message for this domain.\\n     *\\n     * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\\n     *\\n     * ```solidity\\n     * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\\n     *     keccak256(\\\"Mail(address to,string contents)\\\"),\\n     *     mailTo,\\n     *     keccak256(bytes(mailContents))\\n     * )));\\n     * address signer = ECDSA.recover(digest, signature);\\n     * ```\\n     */\\n    function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {\\n        return ECDSA.toTypedDataHash(_domainSeparatorV4(), structHash);\\n    }\\n\\n    /**\\n     * @dev See {EIP-5267}.\\n     *\\n     * _Available since v4.9._\\n     */\\n    function eip712Domain()\\n        public\\n        view\\n        virtual\\n        override\\n        returns (\\n            bytes1 fields,\\n            string memory name,\\n            string memory version,\\n            uint256 chainId,\\n            address verifyingContract,\\n            bytes32 salt,\\n            uint256[] memory extensions\\n        )\\n    {\\n        return (\\n            hex\\\"0f\\\", // 01111\\n            _name.toStringWithFallback(_nameFallback),\\n            _version.toStringWithFallback(_versionFallback),\\n            block.chainid,\\n            address(this),\\n            bytes32(0),\\n            new uint256[](0)\\n        );\\n    }\\n}\\n\",\"keccak256\":\"0x8432884527a7ad91e6eed1cfc5a0811ae2073e5bca107bd0ca442e9236b03dbd\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.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(uint256 x, uint256 y, uint256 denominator) 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                // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n                // The surrounding unchecked block does not change this fact.\\n                // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n                return prod0 / denominator;\\n            }\\n\\n            // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n            require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\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(uint256 x, uint256 y, uint256 denominator, Rounding rounding) 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        // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n        // \\u2192 `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 256, 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 << 3) < value ? 1 : 0);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n    /**\\n     * @dev Returns the largest of two signed numbers.\\n     */\\n    function max(int256 a, int256 b) internal pure returns (int256) {\\n        return a > b ? a : b;\\n    }\\n\\n    /**\\n     * @dev Returns the smallest of two signed numbers.\\n     */\\n    function min(int256 a, int256 b) internal pure returns (int256) {\\n        return a < b ? a : b;\\n    }\\n\\n    /**\\n     * @dev Returns the average of two signed numbers without overflow.\\n     * The result is rounded towards zero.\\n     */\\n    function average(int256 a, int256 b) internal pure returns (int256) {\\n        // Formula from the book \\\"Hacker's Delight\\\"\\n        int256 x = (a & b) + ((a ^ b) >> 1);\\n        return x + (int256(uint256(x) >> 255) & (a ^ b));\\n    }\\n\\n    /**\\n     * @dev Returns the absolute unsigned value of a signed value.\\n     */\\n    function abs(int256 n) internal pure returns (uint256) {\\n        unchecked {\\n            // must be unchecked in order to support `n = type(int256).min`\\n            return uint256(n >= 0 ? n : -n);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":3598,"contract":"@openzeppelin/contracts/utils/cryptography/EIP712.sol:EIP712","label":"_nameFallback","offset":0,"slot":"0","type":"t_string_storage"},{"astId":3600,"contract":"@openzeppelin/contracts/utils/cryptography/EIP712.sol:EIP712","label":"_versionFallback","offset":0,"slot":"1","type":"t_string_storage"}],"types":{"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/math/Math.sol":{"Math":{"abi":[],"devdoc":{"details":"Standard math utilities missing in the Solidity language.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220397d8b738c3ae8eadb7dd2eb02431b07008b2bb86e31e82dce2391342d4ca1cf64736f6c634300081c0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CODECOPY PUSH30 0x8B738C3AE8EADB7DD2EB02431B07008B2BB86E31E82DCE2391342D4CA1CF PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"202:12582:26:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;202:12582:26;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220397d8b738c3ae8eadb7dd2eb02431b07008b2bb86e31e82dce2391342d4ca1cf64736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CODECOPY PUSH30 0x8B738C3AE8EADB7DD2EB02431B07008B2BB86E31E82DCE2391342D4CA1CF PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"202:12582:26:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17000","executionCost":"96","totalCost":"17096"},"internal":{"average(uint256,uint256)":"infinite","ceilDiv(uint256,uint256)":"infinite","log10(uint256)":"infinite","log10(uint256,enum Math.Rounding)":"infinite","log2(uint256)":"infinite","log2(uint256,enum Math.Rounding)":"infinite","log256(uint256)":"infinite","log256(uint256,enum Math.Rounding)":"infinite","max(uint256,uint256)":"infinite","min(uint256,uint256)":"infinite","mulDiv(uint256,uint256,uint256)":"infinite","mulDiv(uint256,uint256,uint256,enum Math.Rounding)":"infinite","sqrt(uint256)":"infinite","sqrt(uint256,enum Math.Rounding)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/Math.sol\":\"Math\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.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(uint256 x, uint256 y, uint256 denominator) 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                // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n                // The surrounding unchecked block does not change this fact.\\n                // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n                return prod0 / denominator;\\n            }\\n\\n            // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n            require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\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(uint256 x, uint256 y, uint256 denominator, Rounding rounding) 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        // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n        // \\u2192 `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 256, 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 << 3) < value ? 1 : 0);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"SignedMath":{"abi":[],"devdoc":{"details":"Standard signed math utilities missing in the Solidity language.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220d41436e57ce15939fc40a5974610a2244524bc4d804d4dc75b5eb05a4748a80964736f6c634300081c0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD4 EQ CALLDATASIZE 0xE5 PUSH29 0xE15939FC40A5974610A2244524BC4D804D4DC75B5EB05A4748A8096473 PUSH16 0x6C634300081C00330000000000000000 ","sourceMap":"215:1047:27:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;215:1047:27;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220d41436e57ce15939fc40a5974610a2244524bc4d804d4dc75b5eb05a4748a80964736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD4 EQ CALLDATASIZE 0xE5 PUSH29 0xE15939FC40A5974610A2244524BC4D804D4DC75B5EB05A4748A8096473 PUSH16 0x6C634300081C00330000000000000000 ","sourceMap":"215:1047:27:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17000","executionCost":"96","totalCost":"17096"},"internal":{"abs(int256)":"infinite","average(int256,int256)":"infinite","max(int256,int256)":"infinite","min(int256,int256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard signed math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/SignedMath.sol\":\"SignedMath\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n    /**\\n     * @dev Returns the largest of two signed numbers.\\n     */\\n    function max(int256 a, int256 b) internal pure returns (int256) {\\n        return a > b ? a : b;\\n    }\\n\\n    /**\\n     * @dev Returns the smallest of two signed numbers.\\n     */\\n    function min(int256 a, int256 b) internal pure returns (int256) {\\n        return a < b ? a : b;\\n    }\\n\\n    /**\\n     * @dev Returns the average of two signed numbers without overflow.\\n     * The result is rounded towards zero.\\n     */\\n    function average(int256 a, int256 b) internal pure returns (int256) {\\n        // Formula from the book \\\"Hacker's Delight\\\"\\n        int256 x = (a & b) + ((a ^ b) >> 1);\\n        return x + (int256(uint256(x) >> 255) & (a ^ b));\\n    }\\n\\n    /**\\n     * @dev Returns the absolute unsigned value of a signed value.\\n     */\\n    function abs(int256 n) internal pure returns (uint256) {\\n        unchecked {\\n            // must be unchecked in order to support `n = type(int256).min`\\n            return uint256(n >= 0 ? n : -n);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol":{"IAccessControlManagerV8":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"string","name":"functionSig","type":"string"},{"internalType":"address","name":"accountToPermit","type":"address"}],"name":"giveCallPermission","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"string","name":"functionSig","type":"string"}],"name":"hasPermission","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"string","name":"functionSig","type":"string"}],"name":"isAllowedToCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"string","name":"functionSig","type":"string"},{"internalType":"address","name":"accountToRevoke","type":"address"}],"name":"revokeCallPermission","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"author":"Venus","events":{"RoleAdminChanged(bytes32,bytes32,bytes32)":{"details":"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._"},"RoleGranted(bytes32,address,address)":{"details":"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}."},"RoleRevoked(bytes32,address,address)":{"details":"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call:   - if using `revokeRole`, it is the admin role bearer   - if using `renounceRole`, it is the role bearer (i.e. `account`)"}},"kind":"dev","methods":{"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {AccessControl-_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role."}},"title":"IAccessControlManagerV8","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"getRoleAdmin(bytes32)":"248a9ca3","giveCallPermission(address,string,address)":"584f6b60","grantRole(bytes32,address)":"2f2ff15d","hasPermission(address,address,string)":"82bfd0f0","hasRole(bytes32,address)":"91d14854","isAllowedToCall(address,string)":"18c5e8ab","renounceRole(bytes32,address)":"36568abe","revokeCallPermission(address,string,address)":"545f7a32","revokeRole(bytes32,address)":"d547741f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"functionSig\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"accountToPermit\",\"type\":\"address\"}],\"name\":\"giveCallPermission\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"functionSig\",\"type\":\"string\"}],\"name\":\"hasPermission\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"functionSig\",\"type\":\"string\"}],\"name\":\"isAllowedToCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"functionSig\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"accountToRevoke\",\"type\":\"address\"}],\"name\":\"revokeCallPermission\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call:   - if using `revokeRole`, it is the admin role bearer   - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {AccessControl-_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"}},\"title\":\"IAccessControlManagerV8\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Interface implemented by the `AccessControlManagerV8` contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\":\"IAccessControlManagerV8\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev External interface of AccessControl declared to support ERC165 detection.\\n */\\ninterface IAccessControl {\\n    /**\\n     * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n     *\\n     * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n     * {RoleAdminChanged} not being emitted signaling this.\\n     *\\n     * _Available since v3.1._\\n     */\\n    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n    /**\\n     * @dev Emitted when `account` is granted `role`.\\n     *\\n     * `sender` is the account that originated the contract call, an admin role\\n     * bearer except when using {AccessControl-_setupRole}.\\n     */\\n    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n    /**\\n     * @dev Emitted when `account` is revoked `role`.\\n     *\\n     * `sender` is the account that originated the contract call:\\n     *   - if using `revokeRole`, it is the admin role bearer\\n     *   - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n     */\\n    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n    /**\\n     * @dev Returns `true` if `account` has been granted `role`.\\n     */\\n    function hasRole(bytes32 role, address account) external view returns (bool);\\n\\n    /**\\n     * @dev Returns the admin role that controls `role`. See {grantRole} and\\n     * {revokeRole}.\\n     *\\n     * To change a role's admin, use {AccessControl-_setRoleAdmin}.\\n     */\\n    function getRoleAdmin(bytes32 role) external view returns (bytes32);\\n\\n    /**\\n     * @dev Grants `role` to `account`.\\n     *\\n     * If `account` had not been already granted `role`, emits a {RoleGranted}\\n     * event.\\n     *\\n     * Requirements:\\n     *\\n     * - the caller must have ``role``'s admin role.\\n     */\\n    function grantRole(bytes32 role, address account) external;\\n\\n    /**\\n     * @dev Revokes `role` from `account`.\\n     *\\n     * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n     *\\n     * Requirements:\\n     *\\n     * - the caller must have ``role``'s admin role.\\n     */\\n    function revokeRole(bytes32 role, address account) external;\\n\\n    /**\\n     * @dev Revokes `role` from the calling account.\\n     *\\n     * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n     * purpose is to provide a mechanism for accounts to lose their privileges\\n     * if they are compromised (such as when a trusted device is misplaced).\\n     *\\n     * If the calling account had been granted `role`, emits a {RoleRevoked}\\n     * event.\\n     *\\n     * Requirements:\\n     *\\n     * - the caller must be `account`.\\n     */\\n    function renounceRole(bytes32 role, address account) external;\\n}\\n\",\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\"},\"@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\nimport \\\"@openzeppelin/contracts/access/IAccessControl.sol\\\";\\n\\n/**\\n * @title IAccessControlManagerV8\\n * @author Venus\\n * @notice Interface implemented by the `AccessControlManagerV8` contract.\\n */\\ninterface IAccessControlManagerV8 is IAccessControl {\\n    function giveCallPermission(address contractAddress, string calldata functionSig, address accountToPermit) external;\\n\\n    function revokeCallPermission(\\n        address contractAddress,\\n        string calldata functionSig,\\n        address accountToRevoke\\n    ) external;\\n\\n    function isAllowedToCall(address account, string calldata functionSig) external view returns (bool);\\n\\n    function hasPermission(\\n        address account,\\n        address contractAddress,\\n        string calldata functionSig\\n    ) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xaa29b098440d0b3a131c5ecdf25ce548790c1b5ac7bf9b5c0264b6af6f7a1e0b\",\"license\":\"BSD-3-Clause\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"notice":"Interface implemented by the `AccessControlManagerV8` contract.","version":1}}},"@venusprotocol/oracle/contracts/interfaces/FeedRegistryInterface.sol":{"FeedRegistryInterface":{"abi":[{"inputs":[{"internalType":"string","name":"base","type":"string"},{"internalType":"string","name":"quote","type":"string"}],"name":"decimalsByName","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"base","type":"string"},{"internalType":"string","name":"quote","type":"string"}],"name":"latestRoundDataByName","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"decimalsByName(string,string)":"6e91995a","latestRoundDataByName(string,string)":"bfda5e71"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"base\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"quote\",\"type\":\"string\"}],\"name\":\"decimalsByName\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"base\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"quote\",\"type\":\"string\"}],\"name\":\"latestRoundDataByName\",\"outputs\":[{\"internalType\":\"uint80\",\"name\":\"roundId\",\"type\":\"uint80\"},{\"internalType\":\"int256\",\"name\":\"answer\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"startedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updatedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint80\",\"name\":\"answeredInRound\",\"type\":\"uint80\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@venusprotocol/oracle/contracts/interfaces/FeedRegistryInterface.sol\":\"FeedRegistryInterface\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@venusprotocol/oracle/contracts/interfaces/FeedRegistryInterface.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\ninterface FeedRegistryInterface {\\n    function latestRoundDataByName(\\n        string memory base,\\n        string memory quote\\n    )\\n        external\\n        view\\n        returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound);\\n\\n    function decimalsByName(string memory base, string memory quote) external view returns (uint8);\\n}\\n\",\"keccak256\":\"0xf57101e676f7d93b0714f5774a3111a80ce9df0bbaed6d5e78668293c11b04e8\",\"license\":\"BSD-3-Clause\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol":{"BoundValidatorInterface":{"abi":[{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"reporterPrice","type":"uint256"},{"internalType":"uint256","name":"anchorPrice","type":"uint256"}],"name":"validatePriceWithAnchorPrice","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"validatePriceWithAnchorPrice(address,uint256,uint256)":"97c7033e"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"reporterPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"anchorPrice\",\"type\":\"uint256\"}],\"name\":\"validatePriceWithAnchorPrice\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol\":\"BoundValidatorInterface\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\ninterface OracleInterface {\\n    function getPrice(address asset) external view returns (uint256);\\n}\\n\\ninterface ResilientOracleInterface is OracleInterface {\\n    function updatePrice(address vToken) external;\\n\\n    function updateAssetPrice(address asset) external;\\n\\n    function getUnderlyingPrice(address vToken) external view returns (uint256);\\n}\\n\\ninterface BoundValidatorInterface {\\n    function validatePriceWithAnchorPrice(\\n        address asset,\\n        uint256 reporterPrice,\\n        uint256 anchorPrice\\n    ) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}},"OracleInterface":{"abi":[{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"getPrice(address)":"41976e09"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol\":\"OracleInterface\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\ninterface OracleInterface {\\n    function getPrice(address asset) external view returns (uint256);\\n}\\n\\ninterface ResilientOracleInterface is OracleInterface {\\n    function updatePrice(address vToken) external;\\n\\n    function updateAssetPrice(address asset) external;\\n\\n    function getUnderlyingPrice(address vToken) external view returns (uint256);\\n}\\n\\ninterface BoundValidatorInterface {\\n    function validatePriceWithAnchorPrice(\\n        address asset,\\n        uint256 reporterPrice,\\n        uint256 anchorPrice\\n    ) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}},"ResilientOracleInterface":{"abi":[{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"vToken","type":"address"}],"name":"getUnderlyingPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"updateAssetPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"vToken","type":"address"}],"name":"updatePrice","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"getPrice(address)":"41976e09","getUnderlyingPrice(address)":"fc57d4df","updateAssetPrice(address)":"b62cad69","updatePrice(address)":"96e85ced"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vToken\",\"type\":\"address\"}],\"name\":\"getUnderlyingPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"updateAssetPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vToken\",\"type\":\"address\"}],\"name\":\"updatePrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol\":\"ResilientOracleInterface\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\ninterface OracleInterface {\\n    function getPrice(address asset) external view returns (uint256);\\n}\\n\\ninterface ResilientOracleInterface is OracleInterface {\\n    function updatePrice(address vToken) external;\\n\\n    function updateAssetPrice(address asset) external;\\n\\n    function getUnderlyingPrice(address vToken) external view returns (uint256);\\n}\\n\\ninterface BoundValidatorInterface {\\n    function validatePriceWithAnchorPrice(\\n        address asset,\\n        uint256 reporterPrice,\\n        uint256 anchorPrice\\n    ) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@venusprotocol/oracle/contracts/interfaces/PublicResolverInterface.sol":{"PublicResolverInterface":{"abi":[{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"}],"name":"addr","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"addr(bytes32)":"3b3b57de"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"addr\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@venusprotocol/oracle/contracts/interfaces/PublicResolverInterface.sol\":\"PublicResolverInterface\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@venusprotocol/oracle/contracts/interfaces/PublicResolverInterface.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\n// SPDX-FileCopyrightText: 2022 Venus\\npragma solidity ^0.8.25;\\n\\ninterface PublicResolverInterface {\\n    function addr(bytes32 node) external view returns (address payable);\\n}\\n\",\"keccak256\":\"0xe8ea3c3ec3b30f2b2022fe221530b15d18887eb6aa39c10d06d1fd5a0a7d1ece\",\"license\":\"BSD-3-Clause\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@venusprotocol/oracle/contracts/interfaces/SIDRegistryInterface.sol":{"SIDRegistryInterface":{"abi":[{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"}],"name":"resolver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"resolver(bytes32)":"0178b8bf"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"resolver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@venusprotocol/oracle/contracts/interfaces/SIDRegistryInterface.sol\":\"SIDRegistryInterface\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@venusprotocol/oracle/contracts/interfaces/SIDRegistryInterface.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\n// SPDX-FileCopyrightText: 2022 Venus\\npragma solidity ^0.8.25;\\n\\ninterface SIDRegistryInterface {\\n    function resolver(bytes32 node) external view returns (address);\\n}\\n\",\"keccak256\":\"0x306f0a50d27c016a6e13346901f6c692426af0a755eb913adc4e8494f311c2d2\",\"license\":\"BSD-3-Clause\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@venusprotocol/oracle/contracts/interfaces/VBep20Interface.sol":{"VBep20Interface":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"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":[],"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"},{"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets `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."},"balanceOf(address)":{"details":"Returns the amount of tokens owned by `account`."},"decimals()":{"details":"Returns the decimals places of the token."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token."},"totalSupply()":{"details":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"details":"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves `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."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","underlying()":"6f307dc3"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"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\":[],\"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\"},{\"inputs\":[],\"name\":\"underlying\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `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.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `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.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"underlying()\":{\"notice\":\"Underlying asset for this VToken\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@venusprotocol/oracle/contracts/interfaces/VBep20Interface.sol\":\"VBep20Interface\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.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(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\"},\"@openzeppelin/contracts/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\",\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\"},\"@venusprotocol/oracle/contracts/interfaces/VBep20Interface.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\\\";\\n\\ninterface VBep20Interface is IERC20Metadata {\\n    /**\\n     * @notice Underlying asset for this VToken\\n     */\\n    function underlying() external view returns (address);\\n}\\n\",\"keccak256\":\"0x6e71c3df86501df5c0e4bace1333c0c91f9f9cced252a54fb99eeda219b789d5\",\"license\":\"BSD-3-Clause\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"underlying()":{"notice":"Underlying asset for this VToken"}},"version":1}}},"@venusprotocol/venus-protocol/contracts/Utils/ReentrancyGuardTransient.sol":{"ReentrancyGuardTransient":{"abi":[{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"}],"devdoc":{"details":"Variant of {ReentrancyGuard} that uses transient storage. NOTE: This variant only works on networks where EIP-1153 is available. _Available since v5.1._","errors":{"ReentrancyGuardReentrantCall()":[{"details":"Unauthorized reentrant call."}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Variant of {ReentrancyGuard} that uses transient storage. NOTE: This variant only works on networks where EIP-1153 is available. _Available since v5.1._\",\"errors\":{\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@venusprotocol/venus-protocol/contracts/Utils/ReentrancyGuardTransient.sol\":\"ReentrancyGuardTransient\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@venusprotocol/venus-protocol/contracts/Utils/ReentrancyGuardTransient.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/ReentrancyGuardTransient.sol)\\n// https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuardTransient.sol\\npragma solidity ^0.8.25;\\n\\nimport { TransientSlot } from \\\"./TransientSlot.sol\\\";\\n\\n/**\\n * @dev Variant of {ReentrancyGuard} that uses transient storage.\\n *\\n * NOTE: This variant only works on networks where EIP-1153 is available.\\n *\\n * _Available since v5.1._\\n */\\nabstract contract ReentrancyGuardTransient {\\n    using TransientSlot for *;\\n\\n    // keccak256(abi.encode(uint256(keccak256(\\\"openzeppelin.storage.ReentrancyGuard\\\")) - 1)) & ~bytes32(uint256(0xff))\\n    bytes32 private constant REENTRANCY_GUARD_STORAGE =\\n        0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00;\\n\\n    /**\\n     * @dev Unauthorized reentrant call.\\n     */\\n    error ReentrancyGuardReentrantCall();\\n\\n    /**\\n     * @dev Prevents a contract from calling itself, directly or indirectly.\\n     * Calling a `nonReentrant` function from another `nonReentrant`\\n     * function is not supported. It is possible to prevent this from happening\\n     * by making the `nonReentrant` function external, and making it call a\\n     * `private` function that does the actual work.\\n     */\\n    modifier nonReentrant() {\\n        _nonReentrantBefore();\\n        _;\\n        _nonReentrantAfter();\\n    }\\n\\n    /**\\n     * @dev Returns true if the reentrancy guard is currently set to \\\"entered\\\", which indicates there is a\\n     * `nonReentrant` function in the call stack.\\n     */\\n    function _reentrancyGuardEntered() internal view returns (bool) {\\n        return REENTRANCY_GUARD_STORAGE.asBoolean().tload();\\n    }\\n\\n    function _nonReentrantBefore() private {\\n        // On the first call to nonReentrant, _status will be NOT_ENTERED\\n        if (_reentrancyGuardEntered()) {\\n            revert ReentrancyGuardReentrantCall();\\n        }\\n\\n        // Any calls to nonReentrant after this point will fail\\n        REENTRANCY_GUARD_STORAGE.asBoolean().tstore(true);\\n    }\\n\\n    function _nonReentrantAfter() private {\\n        REENTRANCY_GUARD_STORAGE.asBoolean().tstore(false);\\n    }\\n}\\n\",\"keccak256\":\"0xa27ad29257eb609e5d9ab43d3c84e68c7d22e0ea9bd9dbdc012250e7366d9604\",\"license\":\"MIT\"},\"@venusprotocol/venus-protocol/contracts/Utils/TransientSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/TransientSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/TransientSlot.js.\\n// https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/TransientSlot.sol\\npragma solidity ^0.8.25;\\n\\n/**\\n * @dev Library for reading and writing value-types to specific transient storage slots.\\n *\\n * Transient slots are often used to store temporary values that are removed after the current transaction.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n *  * Example reading and writing values using transient storage:\\n * ```solidity\\n * contract Lock {\\n *     using TransientSlot for *;\\n *\\n *     // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\\n *     bytes32 internal constant _LOCK_SLOT = 0xf4678858b2b588224636b8522b729e7722d32fc491da849ed75b3fdf3c84f542;\\n *\\n *     modifier locked() {\\n *         require(!_LOCK_SLOT.asBoolean().tload());\\n *\\n *         _LOCK_SLOT.asBoolean().tstore(true);\\n *         _;\\n *         _LOCK_SLOT.asBoolean().tstore(false);\\n *     }\\n * }\\n * ```\\n *\\n * TIP: Consider using this library along with {SlotDerivation}.\\n */\\nlibrary TransientSlot {\\n    /**\\n     * @dev UDVT that represent a slot holding a address.\\n     */\\n    type AddressSlot is bytes32;\\n\\n    /**\\n     * @dev Cast an arbitrary slot to a AddressSlot.\\n     */\\n    function asAddress(bytes32 slot) internal pure returns (AddressSlot) {\\n        return AddressSlot.wrap(slot);\\n    }\\n\\n    /**\\n     * @dev UDVT that represent a slot holding a bool.\\n     */\\n    type BooleanSlot is bytes32;\\n\\n    /**\\n     * @dev Cast an arbitrary slot to a BooleanSlot.\\n     */\\n    function asBoolean(bytes32 slot) internal pure returns (BooleanSlot) {\\n        return BooleanSlot.wrap(slot);\\n    }\\n\\n    /**\\n     * @dev UDVT that represent a slot holding a bytes32.\\n     */\\n    type Bytes32Slot is bytes32;\\n\\n    /**\\n     * @dev Cast an arbitrary slot to a Bytes32Slot.\\n     */\\n    function asBytes32(bytes32 slot) internal pure returns (Bytes32Slot) {\\n        return Bytes32Slot.wrap(slot);\\n    }\\n\\n    /**\\n     * @dev UDVT that represent a slot holding a uint256.\\n     */\\n    type Uint256Slot is bytes32;\\n\\n    /**\\n     * @dev Cast an arbitrary slot to a Uint256Slot.\\n     */\\n    function asUint256(bytes32 slot) internal pure returns (Uint256Slot) {\\n        return Uint256Slot.wrap(slot);\\n    }\\n\\n    /**\\n     * @dev UDVT that represent a slot holding a int256.\\n     */\\n    type Int256Slot is bytes32;\\n\\n    /**\\n     * @dev Cast an arbitrary slot to a Int256Slot.\\n     */\\n    function asInt256(bytes32 slot) internal pure returns (Int256Slot) {\\n        return Int256Slot.wrap(slot);\\n    }\\n\\n    /**\\n     * @dev Load the value held at location `slot` in transient storage.\\n     */\\n    function tload(AddressSlot slot) internal view returns (address value) {\\n        assembly (\\\"memory-safe\\\") {\\n            value := tload(slot)\\n        }\\n    }\\n\\n    /**\\n     * @dev Store `value` at location `slot` in transient storage.\\n     */\\n    function tstore(AddressSlot slot, address value) internal {\\n        assembly (\\\"memory-safe\\\") {\\n            tstore(slot, value)\\n        }\\n    }\\n\\n    /**\\n     * @dev Load the value held at location `slot` in transient storage.\\n     */\\n    function tload(BooleanSlot slot) internal view returns (bool value) {\\n        assembly (\\\"memory-safe\\\") {\\n            value := tload(slot)\\n        }\\n    }\\n\\n    /**\\n     * @dev Store `value` at location `slot` in transient storage.\\n     */\\n    function tstore(BooleanSlot slot, bool value) internal {\\n        assembly (\\\"memory-safe\\\") {\\n            tstore(slot, value)\\n        }\\n    }\\n\\n    /**\\n     * @dev Load the value held at location `slot` in transient storage.\\n     */\\n    function tload(Bytes32Slot slot) internal view returns (bytes32 value) {\\n        assembly (\\\"memory-safe\\\") {\\n            value := tload(slot)\\n        }\\n    }\\n\\n    /**\\n     * @dev Store `value` at location `slot` in transient storage.\\n     */\\n    function tstore(Bytes32Slot slot, bytes32 value) internal {\\n        assembly (\\\"memory-safe\\\") {\\n            tstore(slot, value)\\n        }\\n    }\\n\\n    /**\\n     * @dev Load the value held at location `slot` in transient storage.\\n     */\\n    function tload(Uint256Slot slot) internal view returns (uint256 value) {\\n        assembly (\\\"memory-safe\\\") {\\n            value := tload(slot)\\n        }\\n    }\\n\\n    /**\\n     * @dev Store `value` at location `slot` in transient storage.\\n     */\\n    function tstore(Uint256Slot slot, uint256 value) internal {\\n        assembly (\\\"memory-safe\\\") {\\n            tstore(slot, value)\\n        }\\n    }\\n\\n    /**\\n     * @dev Load the value held at location `slot` in transient storage.\\n     */\\n    function tload(Int256Slot slot) internal view returns (int256 value) {\\n        assembly (\\\"memory-safe\\\") {\\n            value := tload(slot)\\n        }\\n    }\\n\\n    /**\\n     * @dev Store `value` at location `slot` in transient storage.\\n     */\\n    function tstore(Int256Slot slot, int256 value) internal {\\n        assembly (\\\"memory-safe\\\") {\\n            tstore(slot, value)\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9ce486f12ba619221439564671d06e5d389b7ac1c72f18d0b08a1e26368a2765\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@venusprotocol/venus-protocol/contracts/Utils/TransientSlot.sol":{"TransientSlot":{"abi":[],"devdoc":{"details":"Library for reading and writing value-types to specific transient storage slots. Transient slots are often used to store temporary values that are removed after the current transaction. This library helps with reading and writing to such slots without the need for inline assembly.  * Example reading and writing values using transient storage: ```solidity contract Lock {     using TransientSlot for *;     // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.     bytes32 internal constant _LOCK_SLOT = 0xf4678858b2b588224636b8522b729e7722d32fc491da849ed75b3fdf3c84f542;     modifier locked() {         require(!_LOCK_SLOT.asBoolean().tload());         _LOCK_SLOT.asBoolean().tstore(true);         _;         _LOCK_SLOT.asBoolean().tstore(false);     } } ``` TIP: Consider using this library along with {SlotDerivation}.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220774c7d932a8d808c1b6a996d2d3cf8d09c3eeaacdeac746a23ae6586db5d99f164736f6c634300081c0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH24 0x4C7D932A8D808C1B6A996D2D3CF8D09C3EEAACDEAC746A23 0xAE PUSH6 0x86DB5D99F164 PUSH20 0x6F6C634300081C00330000000000000000000000 ","sourceMap":"1266:3905:36:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1266:3905:36;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220774c7d932a8d808c1b6a996d2d3cf8d09c3eeaacdeac746a23ae6586db5d99f164736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH24 0x4C7D932A8D808C1B6A996D2D3CF8D09C3EEAACDEAC746A23 0xAE PUSH6 0x86DB5D99F164 PUSH20 0x6F6C634300081C00330000000000000000000000 ","sourceMap":"1266:3905:36:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17000","executionCost":"96","totalCost":"17096"},"internal":{"asAddress(bytes32)":"infinite","asBoolean(bytes32)":"infinite","asBytes32(bytes32)":"infinite","asInt256(bytes32)":"infinite","asUint256(bytes32)":"infinite","tload(TransientSlot.AddressSlot)":"infinite","tload(TransientSlot.BooleanSlot)":"infinite","tload(TransientSlot.Bytes32Slot)":"infinite","tload(TransientSlot.Int256Slot)":"infinite","tload(TransientSlot.Uint256Slot)":"infinite","tstore(TransientSlot.AddressSlot,address)":"infinite","tstore(TransientSlot.BooleanSlot,bool)":"infinite","tstore(TransientSlot.Bytes32Slot,bytes32)":"infinite","tstore(TransientSlot.Int256Slot,int256)":"infinite","tstore(TransientSlot.Uint256Slot,uint256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for reading and writing value-types to specific transient storage slots. Transient slots are often used to store temporary values that are removed after the current transaction. This library helps with reading and writing to such slots without the need for inline assembly.  * Example reading and writing values using transient storage: ```solidity contract Lock {     using TransientSlot for *;     // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.     bytes32 internal constant _LOCK_SLOT = 0xf4678858b2b588224636b8522b729e7722d32fc491da849ed75b3fdf3c84f542;     modifier locked() {         require(!_LOCK_SLOT.asBoolean().tload());         _LOCK_SLOT.asBoolean().tstore(true);         _;         _LOCK_SLOT.asBoolean().tstore(false);     } } ``` TIP: Consider using this library along with {SlotDerivation}.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@venusprotocol/venus-protocol/contracts/Utils/TransientSlot.sol\":\"TransientSlot\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@venusprotocol/venus-protocol/contracts/Utils/TransientSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/TransientSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/TransientSlot.js.\\n// https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/TransientSlot.sol\\npragma solidity ^0.8.25;\\n\\n/**\\n * @dev Library for reading and writing value-types to specific transient storage slots.\\n *\\n * Transient slots are often used to store temporary values that are removed after the current transaction.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n *  * Example reading and writing values using transient storage:\\n * ```solidity\\n * contract Lock {\\n *     using TransientSlot for *;\\n *\\n *     // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\\n *     bytes32 internal constant _LOCK_SLOT = 0xf4678858b2b588224636b8522b729e7722d32fc491da849ed75b3fdf3c84f542;\\n *\\n *     modifier locked() {\\n *         require(!_LOCK_SLOT.asBoolean().tload());\\n *\\n *         _LOCK_SLOT.asBoolean().tstore(true);\\n *         _;\\n *         _LOCK_SLOT.asBoolean().tstore(false);\\n *     }\\n * }\\n * ```\\n *\\n * TIP: Consider using this library along with {SlotDerivation}.\\n */\\nlibrary TransientSlot {\\n    /**\\n     * @dev UDVT that represent a slot holding a address.\\n     */\\n    type AddressSlot is bytes32;\\n\\n    /**\\n     * @dev Cast an arbitrary slot to a AddressSlot.\\n     */\\n    function asAddress(bytes32 slot) internal pure returns (AddressSlot) {\\n        return AddressSlot.wrap(slot);\\n    }\\n\\n    /**\\n     * @dev UDVT that represent a slot holding a bool.\\n     */\\n    type BooleanSlot is bytes32;\\n\\n    /**\\n     * @dev Cast an arbitrary slot to a BooleanSlot.\\n     */\\n    function asBoolean(bytes32 slot) internal pure returns (BooleanSlot) {\\n        return BooleanSlot.wrap(slot);\\n    }\\n\\n    /**\\n     * @dev UDVT that represent a slot holding a bytes32.\\n     */\\n    type Bytes32Slot is bytes32;\\n\\n    /**\\n     * @dev Cast an arbitrary slot to a Bytes32Slot.\\n     */\\n    function asBytes32(bytes32 slot) internal pure returns (Bytes32Slot) {\\n        return Bytes32Slot.wrap(slot);\\n    }\\n\\n    /**\\n     * @dev UDVT that represent a slot holding a uint256.\\n     */\\n    type Uint256Slot is bytes32;\\n\\n    /**\\n     * @dev Cast an arbitrary slot to a Uint256Slot.\\n     */\\n    function asUint256(bytes32 slot) internal pure returns (Uint256Slot) {\\n        return Uint256Slot.wrap(slot);\\n    }\\n\\n    /**\\n     * @dev UDVT that represent a slot holding a int256.\\n     */\\n    type Int256Slot is bytes32;\\n\\n    /**\\n     * @dev Cast an arbitrary slot to a Int256Slot.\\n     */\\n    function asInt256(bytes32 slot) internal pure returns (Int256Slot) {\\n        return Int256Slot.wrap(slot);\\n    }\\n\\n    /**\\n     * @dev Load the value held at location `slot` in transient storage.\\n     */\\n    function tload(AddressSlot slot) internal view returns (address value) {\\n        assembly (\\\"memory-safe\\\") {\\n            value := tload(slot)\\n        }\\n    }\\n\\n    /**\\n     * @dev Store `value` at location `slot` in transient storage.\\n     */\\n    function tstore(AddressSlot slot, address value) internal {\\n        assembly (\\\"memory-safe\\\") {\\n            tstore(slot, value)\\n        }\\n    }\\n\\n    /**\\n     * @dev Load the value held at location `slot` in transient storage.\\n     */\\n    function tload(BooleanSlot slot) internal view returns (bool value) {\\n        assembly (\\\"memory-safe\\\") {\\n            value := tload(slot)\\n        }\\n    }\\n\\n    /**\\n     * @dev Store `value` at location `slot` in transient storage.\\n     */\\n    function tstore(BooleanSlot slot, bool value) internal {\\n        assembly (\\\"memory-safe\\\") {\\n            tstore(slot, value)\\n        }\\n    }\\n\\n    /**\\n     * @dev Load the value held at location `slot` in transient storage.\\n     */\\n    function tload(Bytes32Slot slot) internal view returns (bytes32 value) {\\n        assembly (\\\"memory-safe\\\") {\\n            value := tload(slot)\\n        }\\n    }\\n\\n    /**\\n     * @dev Store `value` at location `slot` in transient storage.\\n     */\\n    function tstore(Bytes32Slot slot, bytes32 value) internal {\\n        assembly (\\\"memory-safe\\\") {\\n            tstore(slot, value)\\n        }\\n    }\\n\\n    /**\\n     * @dev Load the value held at location `slot` in transient storage.\\n     */\\n    function tload(Uint256Slot slot) internal view returns (uint256 value) {\\n        assembly (\\\"memory-safe\\\") {\\n            value := tload(slot)\\n        }\\n    }\\n\\n    /**\\n     * @dev Store `value` at location `slot` in transient storage.\\n     */\\n    function tstore(Uint256Slot slot, uint256 value) internal {\\n        assembly (\\\"memory-safe\\\") {\\n            tstore(slot, value)\\n        }\\n    }\\n\\n    /**\\n     * @dev Load the value held at location `slot` in transient storage.\\n     */\\n    function tload(Int256Slot slot) internal view returns (int256 value) {\\n        assembly (\\\"memory-safe\\\") {\\n            value := tload(slot)\\n        }\\n    }\\n\\n    /**\\n     * @dev Store `value` at location `slot` in transient storage.\\n     */\\n    function tstore(Int256Slot slot, int256 value) internal {\\n        assembly (\\\"memory-safe\\\") {\\n            tstore(slot, value)\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9ce486f12ba619221439564671d06e5d389b7ac1c72f18d0b08a1e26368a2765\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/Interfaces.sol":{"IComptroller":{"abi":[{"inputs":[{"internalType":"address[]","name":"markets_","type":"address[]"},{"internalType":"enum IComptroller.Action[]","name":"actions_","type":"uint8[]"},{"internalType":"bool","name":"paused_","type":"bool"}],"name":"_setActionsPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"market","type":"address"},{"internalType":"enum IComptroller.Action","name":"action","type":"uint8"}],"name":"actionPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"borrower","type":"address"},{"internalType":"address","name":"delegate","type":"address"}],"name":"approvedDelegates","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"contract IVToken","name":"vToken","type":"address"}],"name":"checkMembership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"vToken","type":"address"}],"name":"enterMarket","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"onBehalf","type":"address"},{"internalType":"address","name":"vToken","type":"address"}],"name":"enterMarketBehalf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"vTokens","type":"address[]"}],"name":"enterMarkets","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"onBehalf","type":"address"},{"internalType":"address payable","name":"receiver","type":"address"},{"internalType":"contract IVToken[]","name":"vTokens","type":"address[]"},{"internalType":"uint256[]","name":"underlyingAmounts","type":"uint256[]"},{"internalType":"bytes","name":"param","type":"bytes"}],"name":"executeFlashLoan","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getAccountLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getBorrowingPower","outputs":[{"internalType":"uint256","name":"error","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"shortfall","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isForcedLiquidationEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidationIncentiveMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidatorContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"markets","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oracle","outputs":[{"internalType":"contract ResilientOracleInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vaiController","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"_setActionsPaused(address[],uint8[],bool)":"2b5d790c","actionPaused(address,uint8)":"e85a2960","approvedDelegates(address,address)":"10b98338","checkMembership(address,address)":"929fe9a1","enterMarket(address,address)":"24991d66","enterMarketBehalf(address,address)":"d585c3c6","enterMarkets(address[])":"c2998238","executeFlashLoan(address,address,address[],uint256[],bytes)":"5544ed9c","getAccountLiquidity(address)":"5ec88c79","getBorrowingPower(address)":"528a174c","isForcedLiquidationEnabled(address)":"8c1ac18a","liquidationIncentiveMantissa()":"4ada90af","liquidatorContract()":"9bb27d62","markets(address)":"8e8f294b","oracle()":"7dc0d1d0","treasuryPercent()":"04ef9d58","vaiController()":"9254f5e5"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"markets_\",\"type\":\"address[]\"},{\"internalType\":\"enum IComptroller.Action[]\",\"name\":\"actions_\",\"type\":\"uint8[]\"},{\"internalType\":\"bool\",\"name\":\"paused_\",\"type\":\"bool\"}],\"name\":\"_setActionsPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"market\",\"type\":\"address\"},{\"internalType\":\"enum IComptroller.Action\",\"name\":\"action\",\"type\":\"uint8\"}],\"name\":\"actionPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\"}],\"name\":\"approvedDelegates\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"contract IVToken\",\"name\":\"vToken\",\"type\":\"address\"}],\"name\":\"checkMembership\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vToken\",\"type\":\"address\"}],\"name\":\"enterMarket\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"onBehalf\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vToken\",\"type\":\"address\"}],\"name\":\"enterMarketBehalf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"vTokens\",\"type\":\"address[]\"}],\"name\":\"enterMarkets\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"onBehalf\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"contract IVToken[]\",\"name\":\"vTokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"underlyingAmounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"param\",\"type\":\"bytes\"}],\"name\":\"executeFlashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getAccountLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getBorrowingPower\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"error\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"shortfall\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isForcedLiquidationEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liquidationIncentiveMantissa\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liquidatorContract\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"markets\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oracle\",\"outputs\":[{\"internalType\":\"contract ResilientOracleInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"treasuryPercent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vaiController\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Interfaces.sol\":\"IComptroller\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.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 IERC20Upgradeable {\\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(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x0e1f0f5f62f67a881cd1a9597acbc0a5e4071f3c2c10449a183b922ae7272e3f\",\"license\":\"MIT\"},\"@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\ninterface OracleInterface {\\n    function getPrice(address asset) external view returns (uint256);\\n}\\n\\ninterface ResilientOracleInterface is OracleInterface {\\n    function updatePrice(address vToken) external;\\n\\n    function updateAssetPrice(address asset) external;\\n\\n    function getUnderlyingPrice(address vToken) external view returns (uint256);\\n}\\n\\ninterface BoundValidatorInterface {\\n    function validatePriceWithAnchorPrice(\\n        address asset,\\n        uint256 reporterPrice,\\n        uint256 anchorPrice\\n    ) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\"},\"contracts/Interfaces.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\nimport { IERC20Upgradeable } from \\\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\\\";\\nimport { ResilientOracleInterface } from \\\"@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol\\\";\\n\\ninterface IVToken is IERC20Upgradeable {\\n    function accrueInterest() external returns (uint256);\\n\\n    function redeem(uint256 redeemTokens) external returns (uint256);\\n\\n    function redeemUnderlying(uint256 redeemAmount) external returns (uint256);\\n\\n    function borrowBalanceCurrent(address borrower) external returns (uint256);\\n\\n    function balanceOfUnderlying(address owner) external returns (uint256);\\n\\n    function seize(address liquidator, address borrower, uint seizeTokens) external returns (uint);\\n\\n    function mintBehalf(address receiver, uint mintAmount) external returns (uint);\\n\\n    function borrowBehalf(address borrower, uint borrowAmount) external returns (uint256);\\n\\n    function repayBorrowBehalf(address borrower, uint repayAmount) external returns (uint256);\\n\\n    function redeemUnderlyingBehalf(address redeemer, uint redeemAmount) external returns (uint);\\n\\n    function comptroller() external view returns (IComptroller);\\n\\n    function borrowBalanceStored(address account) external view returns (uint256);\\n\\n    function underlying() external view returns (address);\\n}\\n\\ninterface IVBNB is IVToken {\\n    function repayBorrowBehalf(address borrower) external payable;\\n\\n    function liquidateBorrow(address borrower, IVToken vTokenCollateral) external payable;\\n}\\n\\ninterface IComptroller {\\n    enum Action {\\n        MINT,\\n        REDEEM,\\n        BORROW,\\n        REPAY,\\n        SEIZE,\\n        LIQUIDATE,\\n        TRANSFER,\\n        ENTER_MARKET,\\n        EXIT_MARKET\\n    }\\n\\n    function _setActionsPaused(address[] calldata markets_, Action[] calldata actions_, bool paused_) external;\\n\\n    function enterMarkets(address[] calldata vTokens) external returns (uint256[] memory);\\n\\n    function enterMarketBehalf(address onBehalf, address vToken) external returns (uint256);\\n\\n    function enterMarket(address user, address vToken) external returns (uint256);\\n\\n    function liquidationIncentiveMantissa() external view returns (uint256);\\n\\n    function vaiController() external view returns (address);\\n\\n    function liquidatorContract() external view returns (address);\\n\\n    function oracle() external view returns (ResilientOracleInterface);\\n\\n    function actionPaused(address market, Action action) external view returns (bool);\\n\\n    function markets(address) external view returns (bool, uint256, bool);\\n\\n    function isForcedLiquidationEnabled(address) external view returns (bool);\\n\\n    function approvedDelegates(address borrower, address delegate) external view returns (bool);\\n\\n    function getAccountLiquidity(address account) external view returns (uint256, uint256, uint256);\\n\\n    function checkMembership(address account, IVToken vToken) external view returns (bool);\\n\\n    function getBorrowingPower(\\n        address account\\n    ) external view returns (uint256 error, uint256 liquidity, uint256 shortfall);\\n\\n    function treasuryPercent() external view returns (uint256);\\n\\n    function executeFlashLoan(\\n        address payable onBehalf,\\n        address payable receiver,\\n        IVToken[] memory vTokens,\\n        uint256[] memory underlyingAmounts,\\n        bytes memory param\\n    ) external;\\n}\\n\\ninterface IFlashLoanReceiver {\\n    /**\\n     * @notice Executes an operation after receiving the flash-borrowed assets.\\n     * @dev Implementation of this function must ensure at least the premium (fee) is repaid within the same transaction.\\n     *      Any unpaid balance (principal + premium - repaid amount) will be added to the onBehalf address's borrow balance.\\n     * @param vTokens The vToken contracts corresponding to the flash-borrowed underlying assets.\\n     * @param amounts The amounts of each underlying asset that were flash-borrowed.\\n     * @param premiums The premiums (fees) associated with each flash-borrowed asset.\\n     * @param initiator The address that initiated the flash loan.\\n     * @param onBehalf The address of the user whose debt position will be used for any unpaid flash loan balance.\\n     * @param param Additional parameters encoded as bytes. These can be used to pass custom data to the receiver contract.\\n     * @return success True if the operation succeeds (regardless of repayment amount), false if the operation fails.\\n     * @return repayAmounts Array of uint256 representing the amounts to be repaid for each asset. The receiver contract\\n     *         must approve these amounts to the respective vToken contracts before this function returns.\\n     */\\n    function executeOperation(\\n        IVToken[] calldata vTokens,\\n        uint256[] calldata amounts,\\n        uint256[] calldata premiums,\\n        address initiator,\\n        address onBehalf,\\n        bytes calldata param\\n    ) external returns (bool success, uint256[] memory repayAmounts);\\n}\\n\\ninterface IWBNB is IERC20Upgradeable {\\n    function deposit() external payable;\\n\\n    function withdraw(uint256 amount) external;\\n}\\n\\ninterface IProtocolShareReserve {\\n    enum IncomeType {\\n        SPREAD,\\n        LIQUIDATION,\\n        ERC4626_WRAPPER_REWARDS,\\n        FLASHLOAN\\n    }\\n\\n    function updateAssetsState(address comptroller, address asset, IncomeType incomeType) external;\\n}\\n\",\"keccak256\":\"0x05825bb795ff9a56832449324737a282a3cc523697d5897ac8c3e7a43455942a\",\"license\":\"BSD-3-Clause\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}},"IFlashLoanReceiver":{"abi":[{"inputs":[{"internalType":"contract IVToken[]","name":"vTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256[]","name":"premiums","type":"uint256[]"},{"internalType":"address","name":"initiator","type":"address"},{"internalType":"address","name":"onBehalf","type":"address"},{"internalType":"bytes","name":"param","type":"bytes"}],"name":"executeOperation","outputs":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"uint256[]","name":"repayAmounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{"executeOperation(address[],uint256[],uint256[],address,address,bytes)":{"details":"Implementation of this function must ensure at least the premium (fee) is repaid within the same transaction.      Any unpaid balance (principal + premium - repaid amount) will be added to the onBehalf address's borrow balance.","params":{"amounts":"The amounts of each underlying asset that were flash-borrowed.","initiator":"The address that initiated the flash loan.","onBehalf":"The address of the user whose debt position will be used for any unpaid flash loan balance.","param":"Additional parameters encoded as bytes. These can be used to pass custom data to the receiver contract.","premiums":"The premiums (fees) associated with each flash-borrowed asset.","vTokens":"The vToken contracts corresponding to the flash-borrowed underlying assets."},"returns":{"repayAmounts":"Array of uint256 representing the amounts to be repaid for each asset. The receiver contract         must approve these amounts to the respective vToken contracts before this function returns.","success":"True if the operation succeeds (regardless of repayment amount), false if the operation fails."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"executeOperation(address[],uint256[],uint256[],address,address,bytes)":"fc08f9f6"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVToken[]\",\"name\":\"vTokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"premiums\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"onBehalf\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"param\",\"type\":\"bytes\"}],\"name\":\"executeOperation\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"uint256[]\",\"name\":\"repayAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"executeOperation(address[],uint256[],uint256[],address,address,bytes)\":{\"details\":\"Implementation of this function must ensure at least the premium (fee) is repaid within the same transaction.      Any unpaid balance (principal + premium - repaid amount) will be added to the onBehalf address's borrow balance.\",\"params\":{\"amounts\":\"The amounts of each underlying asset that were flash-borrowed.\",\"initiator\":\"The address that initiated the flash loan.\",\"onBehalf\":\"The address of the user whose debt position will be used for any unpaid flash loan balance.\",\"param\":\"Additional parameters encoded as bytes. These can be used to pass custom data to the receiver contract.\",\"premiums\":\"The premiums (fees) associated with each flash-borrowed asset.\",\"vTokens\":\"The vToken contracts corresponding to the flash-borrowed underlying assets.\"},\"returns\":{\"repayAmounts\":\"Array of uint256 representing the amounts to be repaid for each asset. The receiver contract         must approve these amounts to the respective vToken contracts before this function returns.\",\"success\":\"True if the operation succeeds (regardless of repayment amount), false if the operation fails.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"executeOperation(address[],uint256[],uint256[],address,address,bytes)\":{\"notice\":\"Executes an operation after receiving the flash-borrowed assets.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Interfaces.sol\":\"IFlashLoanReceiver\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.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 IERC20Upgradeable {\\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(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x0e1f0f5f62f67a881cd1a9597acbc0a5e4071f3c2c10449a183b922ae7272e3f\",\"license\":\"MIT\"},\"@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\ninterface OracleInterface {\\n    function getPrice(address asset) external view returns (uint256);\\n}\\n\\ninterface ResilientOracleInterface is OracleInterface {\\n    function updatePrice(address vToken) external;\\n\\n    function updateAssetPrice(address asset) external;\\n\\n    function getUnderlyingPrice(address vToken) external view returns (uint256);\\n}\\n\\ninterface BoundValidatorInterface {\\n    function validatePriceWithAnchorPrice(\\n        address asset,\\n        uint256 reporterPrice,\\n        uint256 anchorPrice\\n    ) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\"},\"contracts/Interfaces.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\nimport { IERC20Upgradeable } from \\\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\\\";\\nimport { ResilientOracleInterface } from \\\"@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol\\\";\\n\\ninterface IVToken is IERC20Upgradeable {\\n    function accrueInterest() external returns (uint256);\\n\\n    function redeem(uint256 redeemTokens) external returns (uint256);\\n\\n    function redeemUnderlying(uint256 redeemAmount) external returns (uint256);\\n\\n    function borrowBalanceCurrent(address borrower) external returns (uint256);\\n\\n    function balanceOfUnderlying(address owner) external returns (uint256);\\n\\n    function seize(address liquidator, address borrower, uint seizeTokens) external returns (uint);\\n\\n    function mintBehalf(address receiver, uint mintAmount) external returns (uint);\\n\\n    function borrowBehalf(address borrower, uint borrowAmount) external returns (uint256);\\n\\n    function repayBorrowBehalf(address borrower, uint repayAmount) external returns (uint256);\\n\\n    function redeemUnderlyingBehalf(address redeemer, uint redeemAmount) external returns (uint);\\n\\n    function comptroller() external view returns (IComptroller);\\n\\n    function borrowBalanceStored(address account) external view returns (uint256);\\n\\n    function underlying() external view returns (address);\\n}\\n\\ninterface IVBNB is IVToken {\\n    function repayBorrowBehalf(address borrower) external payable;\\n\\n    function liquidateBorrow(address borrower, IVToken vTokenCollateral) external payable;\\n}\\n\\ninterface IComptroller {\\n    enum Action {\\n        MINT,\\n        REDEEM,\\n        BORROW,\\n        REPAY,\\n        SEIZE,\\n        LIQUIDATE,\\n        TRANSFER,\\n        ENTER_MARKET,\\n        EXIT_MARKET\\n    }\\n\\n    function _setActionsPaused(address[] calldata markets_, Action[] calldata actions_, bool paused_) external;\\n\\n    function enterMarkets(address[] calldata vTokens) external returns (uint256[] memory);\\n\\n    function enterMarketBehalf(address onBehalf, address vToken) external returns (uint256);\\n\\n    function enterMarket(address user, address vToken) external returns (uint256);\\n\\n    function liquidationIncentiveMantissa() external view returns (uint256);\\n\\n    function vaiController() external view returns (address);\\n\\n    function liquidatorContract() external view returns (address);\\n\\n    function oracle() external view returns (ResilientOracleInterface);\\n\\n    function actionPaused(address market, Action action) external view returns (bool);\\n\\n    function markets(address) external view returns (bool, uint256, bool);\\n\\n    function isForcedLiquidationEnabled(address) external view returns (bool);\\n\\n    function approvedDelegates(address borrower, address delegate) external view returns (bool);\\n\\n    function getAccountLiquidity(address account) external view returns (uint256, uint256, uint256);\\n\\n    function checkMembership(address account, IVToken vToken) external view returns (bool);\\n\\n    function getBorrowingPower(\\n        address account\\n    ) external view returns (uint256 error, uint256 liquidity, uint256 shortfall);\\n\\n    function treasuryPercent() external view returns (uint256);\\n\\n    function executeFlashLoan(\\n        address payable onBehalf,\\n        address payable receiver,\\n        IVToken[] memory vTokens,\\n        uint256[] memory underlyingAmounts,\\n        bytes memory param\\n    ) external;\\n}\\n\\ninterface IFlashLoanReceiver {\\n    /**\\n     * @notice Executes an operation after receiving the flash-borrowed assets.\\n     * @dev Implementation of this function must ensure at least the premium (fee) is repaid within the same transaction.\\n     *      Any unpaid balance (principal + premium - repaid amount) will be added to the onBehalf address's borrow balance.\\n     * @param vTokens The vToken contracts corresponding to the flash-borrowed underlying assets.\\n     * @param amounts The amounts of each underlying asset that were flash-borrowed.\\n     * @param premiums The premiums (fees) associated with each flash-borrowed asset.\\n     * @param initiator The address that initiated the flash loan.\\n     * @param onBehalf The address of the user whose debt position will be used for any unpaid flash loan balance.\\n     * @param param Additional parameters encoded as bytes. These can be used to pass custom data to the receiver contract.\\n     * @return success True if the operation succeeds (regardless of repayment amount), false if the operation fails.\\n     * @return repayAmounts Array of uint256 representing the amounts to be repaid for each asset. The receiver contract\\n     *         must approve these amounts to the respective vToken contracts before this function returns.\\n     */\\n    function executeOperation(\\n        IVToken[] calldata vTokens,\\n        uint256[] calldata amounts,\\n        uint256[] calldata premiums,\\n        address initiator,\\n        address onBehalf,\\n        bytes calldata param\\n    ) external returns (bool success, uint256[] memory repayAmounts);\\n}\\n\\ninterface IWBNB is IERC20Upgradeable {\\n    function deposit() external payable;\\n\\n    function withdraw(uint256 amount) external;\\n}\\n\\ninterface IProtocolShareReserve {\\n    enum IncomeType {\\n        SPREAD,\\n        LIQUIDATION,\\n        ERC4626_WRAPPER_REWARDS,\\n        FLASHLOAN\\n    }\\n\\n    function updateAssetsState(address comptroller, address asset, IncomeType incomeType) external;\\n}\\n\",\"keccak256\":\"0x05825bb795ff9a56832449324737a282a3cc523697d5897ac8c3e7a43455942a\",\"license\":\"BSD-3-Clause\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"executeOperation(address[],uint256[],uint256[],address,address,bytes)":{"notice":"Executes an operation after receiving the flash-borrowed assets."}},"version":1}},"IProtocolShareReserve":{"abi":[{"inputs":[{"internalType":"address","name":"comptroller","type":"address"},{"internalType":"address","name":"asset","type":"address"},{"internalType":"enum IProtocolShareReserve.IncomeType","name":"incomeType","type":"uint8"}],"name":"updateAssetsState","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"updateAssetsState(address,address,uint8)":"16faecec"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"comptroller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"enum IProtocolShareReserve.IncomeType\",\"name\":\"incomeType\",\"type\":\"uint8\"}],\"name\":\"updateAssetsState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Interfaces.sol\":\"IProtocolShareReserve\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.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 IERC20Upgradeable {\\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(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x0e1f0f5f62f67a881cd1a9597acbc0a5e4071f3c2c10449a183b922ae7272e3f\",\"license\":\"MIT\"},\"@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\ninterface OracleInterface {\\n    function getPrice(address asset) external view returns (uint256);\\n}\\n\\ninterface ResilientOracleInterface is OracleInterface {\\n    function updatePrice(address vToken) external;\\n\\n    function updateAssetPrice(address asset) external;\\n\\n    function getUnderlyingPrice(address vToken) external view returns (uint256);\\n}\\n\\ninterface BoundValidatorInterface {\\n    function validatePriceWithAnchorPrice(\\n        address asset,\\n        uint256 reporterPrice,\\n        uint256 anchorPrice\\n    ) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\"},\"contracts/Interfaces.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\nimport { IERC20Upgradeable } from \\\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\\\";\\nimport { ResilientOracleInterface } from \\\"@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol\\\";\\n\\ninterface IVToken is IERC20Upgradeable {\\n    function accrueInterest() external returns (uint256);\\n\\n    function redeem(uint256 redeemTokens) external returns (uint256);\\n\\n    function redeemUnderlying(uint256 redeemAmount) external returns (uint256);\\n\\n    function borrowBalanceCurrent(address borrower) external returns (uint256);\\n\\n    function balanceOfUnderlying(address owner) external returns (uint256);\\n\\n    function seize(address liquidator, address borrower, uint seizeTokens) external returns (uint);\\n\\n    function mintBehalf(address receiver, uint mintAmount) external returns (uint);\\n\\n    function borrowBehalf(address borrower, uint borrowAmount) external returns (uint256);\\n\\n    function repayBorrowBehalf(address borrower, uint repayAmount) external returns (uint256);\\n\\n    function redeemUnderlyingBehalf(address redeemer, uint redeemAmount) external returns (uint);\\n\\n    function comptroller() external view returns (IComptroller);\\n\\n    function borrowBalanceStored(address account) external view returns (uint256);\\n\\n    function underlying() external view returns (address);\\n}\\n\\ninterface IVBNB is IVToken {\\n    function repayBorrowBehalf(address borrower) external payable;\\n\\n    function liquidateBorrow(address borrower, IVToken vTokenCollateral) external payable;\\n}\\n\\ninterface IComptroller {\\n    enum Action {\\n        MINT,\\n        REDEEM,\\n        BORROW,\\n        REPAY,\\n        SEIZE,\\n        LIQUIDATE,\\n        TRANSFER,\\n        ENTER_MARKET,\\n        EXIT_MARKET\\n    }\\n\\n    function _setActionsPaused(address[] calldata markets_, Action[] calldata actions_, bool paused_) external;\\n\\n    function enterMarkets(address[] calldata vTokens) external returns (uint256[] memory);\\n\\n    function enterMarketBehalf(address onBehalf, address vToken) external returns (uint256);\\n\\n    function enterMarket(address user, address vToken) external returns (uint256);\\n\\n    function liquidationIncentiveMantissa() external view returns (uint256);\\n\\n    function vaiController() external view returns (address);\\n\\n    function liquidatorContract() external view returns (address);\\n\\n    function oracle() external view returns (ResilientOracleInterface);\\n\\n    function actionPaused(address market, Action action) external view returns (bool);\\n\\n    function markets(address) external view returns (bool, uint256, bool);\\n\\n    function isForcedLiquidationEnabled(address) external view returns (bool);\\n\\n    function approvedDelegates(address borrower, address delegate) external view returns (bool);\\n\\n    function getAccountLiquidity(address account) external view returns (uint256, uint256, uint256);\\n\\n    function checkMembership(address account, IVToken vToken) external view returns (bool);\\n\\n    function getBorrowingPower(\\n        address account\\n    ) external view returns (uint256 error, uint256 liquidity, uint256 shortfall);\\n\\n    function treasuryPercent() external view returns (uint256);\\n\\n    function executeFlashLoan(\\n        address payable onBehalf,\\n        address payable receiver,\\n        IVToken[] memory vTokens,\\n        uint256[] memory underlyingAmounts,\\n        bytes memory param\\n    ) external;\\n}\\n\\ninterface IFlashLoanReceiver {\\n    /**\\n     * @notice Executes an operation after receiving the flash-borrowed assets.\\n     * @dev Implementation of this function must ensure at least the premium (fee) is repaid within the same transaction.\\n     *      Any unpaid balance (principal + premium - repaid amount) will be added to the onBehalf address's borrow balance.\\n     * @param vTokens The vToken contracts corresponding to the flash-borrowed underlying assets.\\n     * @param amounts The amounts of each underlying asset that were flash-borrowed.\\n     * @param premiums The premiums (fees) associated with each flash-borrowed asset.\\n     * @param initiator The address that initiated the flash loan.\\n     * @param onBehalf The address of the user whose debt position will be used for any unpaid flash loan balance.\\n     * @param param Additional parameters encoded as bytes. These can be used to pass custom data to the receiver contract.\\n     * @return success True if the operation succeeds (regardless of repayment amount), false if the operation fails.\\n     * @return repayAmounts Array of uint256 representing the amounts to be repaid for each asset. The receiver contract\\n     *         must approve these amounts to the respective vToken contracts before this function returns.\\n     */\\n    function executeOperation(\\n        IVToken[] calldata vTokens,\\n        uint256[] calldata amounts,\\n        uint256[] calldata premiums,\\n        address initiator,\\n        address onBehalf,\\n        bytes calldata param\\n    ) external returns (bool success, uint256[] memory repayAmounts);\\n}\\n\\ninterface IWBNB is IERC20Upgradeable {\\n    function deposit() external payable;\\n\\n    function withdraw(uint256 amount) external;\\n}\\n\\ninterface IProtocolShareReserve {\\n    enum IncomeType {\\n        SPREAD,\\n        LIQUIDATION,\\n        ERC4626_WRAPPER_REWARDS,\\n        FLASHLOAN\\n    }\\n\\n    function updateAssetsState(address comptroller, address asset, IncomeType incomeType) external;\\n}\\n\",\"keccak256\":\"0x05825bb795ff9a56832449324737a282a3cc523697d5897ac8c3e7a43455942a\",\"license\":\"BSD-3-Clause\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}},"IVBNB":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"accrueInterest","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"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":"owner","type":"address"}],"name":"balanceOfUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"borrower","type":"address"}],"name":"borrowBalanceCurrent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"borrowBalanceStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"borrowAmount","type":"uint256"}],"name":"borrowBehalf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"comptroller","outputs":[{"internalType":"contract IComptroller","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"borrower","type":"address"},{"internalType":"contract IVToken","name":"vTokenCollateral","type":"address"}],"name":"liquidateBorrow","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"mintAmount","type":"uint256"}],"name":"mintBehalf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redeemTokens","type":"uint256"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redeemAmount","type":"uint256"}],"name":"redeemUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"redeemer","type":"address"},{"internalType":"uint256","name":"redeemAmount","type":"uint256"}],"name":"redeemUnderlyingBehalf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"repayAmount","type":"uint256"}],"name":"repayBorrowBehalf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"borrower","type":"address"}],"name":"repayBorrowBehalf","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"liquidator","type":"address"},{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"seizeTokens","type":"uint256"}],"name":"seize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","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"},{"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets `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."},"balanceOf(address)":{"details":"Returns the amount of tokens owned by `account`."},"totalSupply()":{"details":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"details":"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves `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."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"accrueInterest()":"a6afed95","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","balanceOfUnderlying(address)":"3af9e669","borrowBalanceCurrent(address)":"17bfdfbc","borrowBalanceStored(address)":"95dd9193","borrowBehalf(address,uint256)":"856e5bb3","comptroller()":"5fe3b567","liquidateBorrow(address,address)":"aae40a2a","mintBehalf(address,uint256)":"23323e03","redeem(uint256)":"db006a75","redeemUnderlying(uint256)":"852a12e3","redeemUnderlyingBehalf(address,uint256)":"df3a516e","repayBorrowBehalf(address)":"e5974619","repayBorrowBehalf(address,uint256)":"2608f818","seize(address,address,uint256)":"b2a02ff1","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","underlying()":"6f307dc3"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"accrueInterest\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"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\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOfUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"}],\"name\":\"borrowBalanceCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"borrowBalanceStored\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"borrowBehalf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"comptroller\",\"outputs\":[{\"internalType\":\"contract IComptroller\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"contract IVToken\",\"name\":\"vTokenCollateral\",\"type\":\"address\"}],\"name\":\"liquidateBorrow\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"}],\"name\":\"mintBehalf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemAmount\",\"type\":\"uint256\"}],\"name\":\"redeemUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"redeemAmount\",\"type\":\"uint256\"}],\"name\":\"redeemUnderlyingBehalf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowBehalf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"}],\"name\":\"repayBorrowBehalf\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"seizeTokens\",\"type\":\"uint256\"}],\"name\":\"seize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"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\"},{\"inputs\":[],\"name\":\"underlying\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `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.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `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.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Interfaces.sol\":\"IVBNB\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.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 IERC20Upgradeable {\\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(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x0e1f0f5f62f67a881cd1a9597acbc0a5e4071f3c2c10449a183b922ae7272e3f\",\"license\":\"MIT\"},\"@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\ninterface OracleInterface {\\n    function getPrice(address asset) external view returns (uint256);\\n}\\n\\ninterface ResilientOracleInterface is OracleInterface {\\n    function updatePrice(address vToken) external;\\n\\n    function updateAssetPrice(address asset) external;\\n\\n    function getUnderlyingPrice(address vToken) external view returns (uint256);\\n}\\n\\ninterface BoundValidatorInterface {\\n    function validatePriceWithAnchorPrice(\\n        address asset,\\n        uint256 reporterPrice,\\n        uint256 anchorPrice\\n    ) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\"},\"contracts/Interfaces.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\nimport { IERC20Upgradeable } from \\\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\\\";\\nimport { ResilientOracleInterface } from \\\"@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol\\\";\\n\\ninterface IVToken is IERC20Upgradeable {\\n    function accrueInterest() external returns (uint256);\\n\\n    function redeem(uint256 redeemTokens) external returns (uint256);\\n\\n    function redeemUnderlying(uint256 redeemAmount) external returns (uint256);\\n\\n    function borrowBalanceCurrent(address borrower) external returns (uint256);\\n\\n    function balanceOfUnderlying(address owner) external returns (uint256);\\n\\n    function seize(address liquidator, address borrower, uint seizeTokens) external returns (uint);\\n\\n    function mintBehalf(address receiver, uint mintAmount) external returns (uint);\\n\\n    function borrowBehalf(address borrower, uint borrowAmount) external returns (uint256);\\n\\n    function repayBorrowBehalf(address borrower, uint repayAmount) external returns (uint256);\\n\\n    function redeemUnderlyingBehalf(address redeemer, uint redeemAmount) external returns (uint);\\n\\n    function comptroller() external view returns (IComptroller);\\n\\n    function borrowBalanceStored(address account) external view returns (uint256);\\n\\n    function underlying() external view returns (address);\\n}\\n\\ninterface IVBNB is IVToken {\\n    function repayBorrowBehalf(address borrower) external payable;\\n\\n    function liquidateBorrow(address borrower, IVToken vTokenCollateral) external payable;\\n}\\n\\ninterface IComptroller {\\n    enum Action {\\n        MINT,\\n        REDEEM,\\n        BORROW,\\n        REPAY,\\n        SEIZE,\\n        LIQUIDATE,\\n        TRANSFER,\\n        ENTER_MARKET,\\n        EXIT_MARKET\\n    }\\n\\n    function _setActionsPaused(address[] calldata markets_, Action[] calldata actions_, bool paused_) external;\\n\\n    function enterMarkets(address[] calldata vTokens) external returns (uint256[] memory);\\n\\n    function enterMarketBehalf(address onBehalf, address vToken) external returns (uint256);\\n\\n    function enterMarket(address user, address vToken) external returns (uint256);\\n\\n    function liquidationIncentiveMantissa() external view returns (uint256);\\n\\n    function vaiController() external view returns (address);\\n\\n    function liquidatorContract() external view returns (address);\\n\\n    function oracle() external view returns (ResilientOracleInterface);\\n\\n    function actionPaused(address market, Action action) external view returns (bool);\\n\\n    function markets(address) external view returns (bool, uint256, bool);\\n\\n    function isForcedLiquidationEnabled(address) external view returns (bool);\\n\\n    function approvedDelegates(address borrower, address delegate) external view returns (bool);\\n\\n    function getAccountLiquidity(address account) external view returns (uint256, uint256, uint256);\\n\\n    function checkMembership(address account, IVToken vToken) external view returns (bool);\\n\\n    function getBorrowingPower(\\n        address account\\n    ) external view returns (uint256 error, uint256 liquidity, uint256 shortfall);\\n\\n    function treasuryPercent() external view returns (uint256);\\n\\n    function executeFlashLoan(\\n        address payable onBehalf,\\n        address payable receiver,\\n        IVToken[] memory vTokens,\\n        uint256[] memory underlyingAmounts,\\n        bytes memory param\\n    ) external;\\n}\\n\\ninterface IFlashLoanReceiver {\\n    /**\\n     * @notice Executes an operation after receiving the flash-borrowed assets.\\n     * @dev Implementation of this function must ensure at least the premium (fee) is repaid within the same transaction.\\n     *      Any unpaid balance (principal + premium - repaid amount) will be added to the onBehalf address's borrow balance.\\n     * @param vTokens The vToken contracts corresponding to the flash-borrowed underlying assets.\\n     * @param amounts The amounts of each underlying asset that were flash-borrowed.\\n     * @param premiums The premiums (fees) associated with each flash-borrowed asset.\\n     * @param initiator The address that initiated the flash loan.\\n     * @param onBehalf The address of the user whose debt position will be used for any unpaid flash loan balance.\\n     * @param param Additional parameters encoded as bytes. These can be used to pass custom data to the receiver contract.\\n     * @return success True if the operation succeeds (regardless of repayment amount), false if the operation fails.\\n     * @return repayAmounts Array of uint256 representing the amounts to be repaid for each asset. The receiver contract\\n     *         must approve these amounts to the respective vToken contracts before this function returns.\\n     */\\n    function executeOperation(\\n        IVToken[] calldata vTokens,\\n        uint256[] calldata amounts,\\n        uint256[] calldata premiums,\\n        address initiator,\\n        address onBehalf,\\n        bytes calldata param\\n    ) external returns (bool success, uint256[] memory repayAmounts);\\n}\\n\\ninterface IWBNB is IERC20Upgradeable {\\n    function deposit() external payable;\\n\\n    function withdraw(uint256 amount) external;\\n}\\n\\ninterface IProtocolShareReserve {\\n    enum IncomeType {\\n        SPREAD,\\n        LIQUIDATION,\\n        ERC4626_WRAPPER_REWARDS,\\n        FLASHLOAN\\n    }\\n\\n    function updateAssetsState(address comptroller, address asset, IncomeType incomeType) external;\\n}\\n\",\"keccak256\":\"0x05825bb795ff9a56832449324737a282a3cc523697d5897ac8c3e7a43455942a\",\"license\":\"BSD-3-Clause\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}},"IVToken":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"accrueInterest","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"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":"owner","type":"address"}],"name":"balanceOfUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"borrower","type":"address"}],"name":"borrowBalanceCurrent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"borrowBalanceStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"borrowAmount","type":"uint256"}],"name":"borrowBehalf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"comptroller","outputs":[{"internalType":"contract IComptroller","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"mintAmount","type":"uint256"}],"name":"mintBehalf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redeemTokens","type":"uint256"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redeemAmount","type":"uint256"}],"name":"redeemUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"redeemer","type":"address"},{"internalType":"uint256","name":"redeemAmount","type":"uint256"}],"name":"redeemUnderlyingBehalf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"repayAmount","type":"uint256"}],"name":"repayBorrowBehalf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"liquidator","type":"address"},{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"seizeTokens","type":"uint256"}],"name":"seize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","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"},{"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets `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."},"balanceOf(address)":{"details":"Returns the amount of tokens owned by `account`."},"totalSupply()":{"details":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"details":"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves `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."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"accrueInterest()":"a6afed95","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","balanceOfUnderlying(address)":"3af9e669","borrowBalanceCurrent(address)":"17bfdfbc","borrowBalanceStored(address)":"95dd9193","borrowBehalf(address,uint256)":"856e5bb3","comptroller()":"5fe3b567","mintBehalf(address,uint256)":"23323e03","redeem(uint256)":"db006a75","redeemUnderlying(uint256)":"852a12e3","redeemUnderlyingBehalf(address,uint256)":"df3a516e","repayBorrowBehalf(address,uint256)":"2608f818","seize(address,address,uint256)":"b2a02ff1","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","underlying()":"6f307dc3"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"accrueInterest\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"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\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOfUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"}],\"name\":\"borrowBalanceCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"borrowBalanceStored\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"borrowBehalf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"comptroller\",\"outputs\":[{\"internalType\":\"contract IComptroller\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"}],\"name\":\"mintBehalf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemAmount\",\"type\":\"uint256\"}],\"name\":\"redeemUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"redeemAmount\",\"type\":\"uint256\"}],\"name\":\"redeemUnderlyingBehalf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowBehalf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"liquidator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"seizeTokens\",\"type\":\"uint256\"}],\"name\":\"seize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"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\"},{\"inputs\":[],\"name\":\"underlying\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `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.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `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.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Interfaces.sol\":\"IVToken\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.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 IERC20Upgradeable {\\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(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x0e1f0f5f62f67a881cd1a9597acbc0a5e4071f3c2c10449a183b922ae7272e3f\",\"license\":\"MIT\"},\"@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\ninterface OracleInterface {\\n    function getPrice(address asset) external view returns (uint256);\\n}\\n\\ninterface ResilientOracleInterface is OracleInterface {\\n    function updatePrice(address vToken) external;\\n\\n    function updateAssetPrice(address asset) external;\\n\\n    function getUnderlyingPrice(address vToken) external view returns (uint256);\\n}\\n\\ninterface BoundValidatorInterface {\\n    function validatePriceWithAnchorPrice(\\n        address asset,\\n        uint256 reporterPrice,\\n        uint256 anchorPrice\\n    ) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\"},\"contracts/Interfaces.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\nimport { IERC20Upgradeable } from \\\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\\\";\\nimport { ResilientOracleInterface } from \\\"@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol\\\";\\n\\ninterface IVToken is IERC20Upgradeable {\\n    function accrueInterest() external returns (uint256);\\n\\n    function redeem(uint256 redeemTokens) external returns (uint256);\\n\\n    function redeemUnderlying(uint256 redeemAmount) external returns (uint256);\\n\\n    function borrowBalanceCurrent(address borrower) external returns (uint256);\\n\\n    function balanceOfUnderlying(address owner) external returns (uint256);\\n\\n    function seize(address liquidator, address borrower, uint seizeTokens) external returns (uint);\\n\\n    function mintBehalf(address receiver, uint mintAmount) external returns (uint);\\n\\n    function borrowBehalf(address borrower, uint borrowAmount) external returns (uint256);\\n\\n    function repayBorrowBehalf(address borrower, uint repayAmount) external returns (uint256);\\n\\n    function redeemUnderlyingBehalf(address redeemer, uint redeemAmount) external returns (uint);\\n\\n    function comptroller() external view returns (IComptroller);\\n\\n    function borrowBalanceStored(address account) external view returns (uint256);\\n\\n    function underlying() external view returns (address);\\n}\\n\\ninterface IVBNB is IVToken {\\n    function repayBorrowBehalf(address borrower) external payable;\\n\\n    function liquidateBorrow(address borrower, IVToken vTokenCollateral) external payable;\\n}\\n\\ninterface IComptroller {\\n    enum Action {\\n        MINT,\\n        REDEEM,\\n        BORROW,\\n        REPAY,\\n        SEIZE,\\n        LIQUIDATE,\\n        TRANSFER,\\n        ENTER_MARKET,\\n        EXIT_MARKET\\n    }\\n\\n    function _setActionsPaused(address[] calldata markets_, Action[] calldata actions_, bool paused_) external;\\n\\n    function enterMarkets(address[] calldata vTokens) external returns (uint256[] memory);\\n\\n    function enterMarketBehalf(address onBehalf, address vToken) external returns (uint256);\\n\\n    function enterMarket(address user, address vToken) external returns (uint256);\\n\\n    function liquidationIncentiveMantissa() external view returns (uint256);\\n\\n    function vaiController() external view returns (address);\\n\\n    function liquidatorContract() external view returns (address);\\n\\n    function oracle() external view returns (ResilientOracleInterface);\\n\\n    function actionPaused(address market, Action action) external view returns (bool);\\n\\n    function markets(address) external view returns (bool, uint256, bool);\\n\\n    function isForcedLiquidationEnabled(address) external view returns (bool);\\n\\n    function approvedDelegates(address borrower, address delegate) external view returns (bool);\\n\\n    function getAccountLiquidity(address account) external view returns (uint256, uint256, uint256);\\n\\n    function checkMembership(address account, IVToken vToken) external view returns (bool);\\n\\n    function getBorrowingPower(\\n        address account\\n    ) external view returns (uint256 error, uint256 liquidity, uint256 shortfall);\\n\\n    function treasuryPercent() external view returns (uint256);\\n\\n    function executeFlashLoan(\\n        address payable onBehalf,\\n        address payable receiver,\\n        IVToken[] memory vTokens,\\n        uint256[] memory underlyingAmounts,\\n        bytes memory param\\n    ) external;\\n}\\n\\ninterface IFlashLoanReceiver {\\n    /**\\n     * @notice Executes an operation after receiving the flash-borrowed assets.\\n     * @dev Implementation of this function must ensure at least the premium (fee) is repaid within the same transaction.\\n     *      Any unpaid balance (principal + premium - repaid amount) will be added to the onBehalf address's borrow balance.\\n     * @param vTokens The vToken contracts corresponding to the flash-borrowed underlying assets.\\n     * @param amounts The amounts of each underlying asset that were flash-borrowed.\\n     * @param premiums The premiums (fees) associated with each flash-borrowed asset.\\n     * @param initiator The address that initiated the flash loan.\\n     * @param onBehalf The address of the user whose debt position will be used for any unpaid flash loan balance.\\n     * @param param Additional parameters encoded as bytes. These can be used to pass custom data to the receiver contract.\\n     * @return success True if the operation succeeds (regardless of repayment amount), false if the operation fails.\\n     * @return repayAmounts Array of uint256 representing the amounts to be repaid for each asset. The receiver contract\\n     *         must approve these amounts to the respective vToken contracts before this function returns.\\n     */\\n    function executeOperation(\\n        IVToken[] calldata vTokens,\\n        uint256[] calldata amounts,\\n        uint256[] calldata premiums,\\n        address initiator,\\n        address onBehalf,\\n        bytes calldata param\\n    ) external returns (bool success, uint256[] memory repayAmounts);\\n}\\n\\ninterface IWBNB is IERC20Upgradeable {\\n    function deposit() external payable;\\n\\n    function withdraw(uint256 amount) external;\\n}\\n\\ninterface IProtocolShareReserve {\\n    enum IncomeType {\\n        SPREAD,\\n        LIQUIDATION,\\n        ERC4626_WRAPPER_REWARDS,\\n        FLASHLOAN\\n    }\\n\\n    function updateAssetsState(address comptroller, address asset, IncomeType incomeType) external;\\n}\\n\",\"keccak256\":\"0x05825bb795ff9a56832449324737a282a3cc523697d5897ac8c3e7a43455942a\",\"license\":\"BSD-3-Clause\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}},"IWBNB":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"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":"deposit","outputs":[],"stateMutability":"payable","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"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets `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."},"balanceOf(address)":{"details":"Returns the amount of tokens owned by `account`."},"totalSupply()":{"details":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"details":"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves `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."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","deposit()":"d0e30db0","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"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\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"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\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `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.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `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.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Interfaces.sol\":\"IWBNB\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.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 IERC20Upgradeable {\\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(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x0e1f0f5f62f67a881cd1a9597acbc0a5e4071f3c2c10449a183b922ae7272e3f\",\"license\":\"MIT\"},\"@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\ninterface OracleInterface {\\n    function getPrice(address asset) external view returns (uint256);\\n}\\n\\ninterface ResilientOracleInterface is OracleInterface {\\n    function updatePrice(address vToken) external;\\n\\n    function updateAssetPrice(address asset) external;\\n\\n    function getUnderlyingPrice(address vToken) external view returns (uint256);\\n}\\n\\ninterface BoundValidatorInterface {\\n    function validatePriceWithAnchorPrice(\\n        address asset,\\n        uint256 reporterPrice,\\n        uint256 anchorPrice\\n    ) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\"},\"contracts/Interfaces.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\nimport { IERC20Upgradeable } from \\\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\\\";\\nimport { ResilientOracleInterface } from \\\"@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol\\\";\\n\\ninterface IVToken is IERC20Upgradeable {\\n    function accrueInterest() external returns (uint256);\\n\\n    function redeem(uint256 redeemTokens) external returns (uint256);\\n\\n    function redeemUnderlying(uint256 redeemAmount) external returns (uint256);\\n\\n    function borrowBalanceCurrent(address borrower) external returns (uint256);\\n\\n    function balanceOfUnderlying(address owner) external returns (uint256);\\n\\n    function seize(address liquidator, address borrower, uint seizeTokens) external returns (uint);\\n\\n    function mintBehalf(address receiver, uint mintAmount) external returns (uint);\\n\\n    function borrowBehalf(address borrower, uint borrowAmount) external returns (uint256);\\n\\n    function repayBorrowBehalf(address borrower, uint repayAmount) external returns (uint256);\\n\\n    function redeemUnderlyingBehalf(address redeemer, uint redeemAmount) external returns (uint);\\n\\n    function comptroller() external view returns (IComptroller);\\n\\n    function borrowBalanceStored(address account) external view returns (uint256);\\n\\n    function underlying() external view returns (address);\\n}\\n\\ninterface IVBNB is IVToken {\\n    function repayBorrowBehalf(address borrower) external payable;\\n\\n    function liquidateBorrow(address borrower, IVToken vTokenCollateral) external payable;\\n}\\n\\ninterface IComptroller {\\n    enum Action {\\n        MINT,\\n        REDEEM,\\n        BORROW,\\n        REPAY,\\n        SEIZE,\\n        LIQUIDATE,\\n        TRANSFER,\\n        ENTER_MARKET,\\n        EXIT_MARKET\\n    }\\n\\n    function _setActionsPaused(address[] calldata markets_, Action[] calldata actions_, bool paused_) external;\\n\\n    function enterMarkets(address[] calldata vTokens) external returns (uint256[] memory);\\n\\n    function enterMarketBehalf(address onBehalf, address vToken) external returns (uint256);\\n\\n    function enterMarket(address user, address vToken) external returns (uint256);\\n\\n    function liquidationIncentiveMantissa() external view returns (uint256);\\n\\n    function vaiController() external view returns (address);\\n\\n    function liquidatorContract() external view returns (address);\\n\\n    function oracle() external view returns (ResilientOracleInterface);\\n\\n    function actionPaused(address market, Action action) external view returns (bool);\\n\\n    function markets(address) external view returns (bool, uint256, bool);\\n\\n    function isForcedLiquidationEnabled(address) external view returns (bool);\\n\\n    function approvedDelegates(address borrower, address delegate) external view returns (bool);\\n\\n    function getAccountLiquidity(address account) external view returns (uint256, uint256, uint256);\\n\\n    function checkMembership(address account, IVToken vToken) external view returns (bool);\\n\\n    function getBorrowingPower(\\n        address account\\n    ) external view returns (uint256 error, uint256 liquidity, uint256 shortfall);\\n\\n    function treasuryPercent() external view returns (uint256);\\n\\n    function executeFlashLoan(\\n        address payable onBehalf,\\n        address payable receiver,\\n        IVToken[] memory vTokens,\\n        uint256[] memory underlyingAmounts,\\n        bytes memory param\\n    ) external;\\n}\\n\\ninterface IFlashLoanReceiver {\\n    /**\\n     * @notice Executes an operation after receiving the flash-borrowed assets.\\n     * @dev Implementation of this function must ensure at least the premium (fee) is repaid within the same transaction.\\n     *      Any unpaid balance (principal + premium - repaid amount) will be added to the onBehalf address's borrow balance.\\n     * @param vTokens The vToken contracts corresponding to the flash-borrowed underlying assets.\\n     * @param amounts The amounts of each underlying asset that were flash-borrowed.\\n     * @param premiums The premiums (fees) associated with each flash-borrowed asset.\\n     * @param initiator The address that initiated the flash loan.\\n     * @param onBehalf The address of the user whose debt position will be used for any unpaid flash loan balance.\\n     * @param param Additional parameters encoded as bytes. These can be used to pass custom data to the receiver contract.\\n     * @return success True if the operation succeeds (regardless of repayment amount), false if the operation fails.\\n     * @return repayAmounts Array of uint256 representing the amounts to be repaid for each asset. The receiver contract\\n     *         must approve these amounts to the respective vToken contracts before this function returns.\\n     */\\n    function executeOperation(\\n        IVToken[] calldata vTokens,\\n        uint256[] calldata amounts,\\n        uint256[] calldata premiums,\\n        address initiator,\\n        address onBehalf,\\n        bytes calldata param\\n    ) external returns (bool success, uint256[] memory repayAmounts);\\n}\\n\\ninterface IWBNB is IERC20Upgradeable {\\n    function deposit() external payable;\\n\\n    function withdraw(uint256 amount) external;\\n}\\n\\ninterface IProtocolShareReserve {\\n    enum IncomeType {\\n        SPREAD,\\n        LIQUIDATION,\\n        ERC4626_WRAPPER_REWARDS,\\n        FLASHLOAN\\n    }\\n\\n    function updateAssetsState(address comptroller, address asset, IncomeType incomeType) external;\\n}\\n\",\"keccak256\":\"0x05825bb795ff9a56832449324737a282a3cc523697d5897ac8c3e7a43455942a\",\"license\":\"BSD-3-Clause\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/LeverageManager/ILeverageStrategiesManager.sol":{"ILeverageStrategiesManager":{"abi":[{"inputs":[{"internalType":"uint256","name":"errorCode","type":"uint256"}],"name":"AccrueInterestFailed","type":"error"},{"inputs":[{"internalType":"uint256","name":"errorCode","type":"uint256"}],"name":"BorrowBehalfFailed","type":"error"},{"inputs":[{"internalType":"uint256","name":"err","type":"uint256"}],"name":"EnterMarketFailed","type":"error"},{"inputs":[],"name":"FlashLoanAssetOrAmountMismatch","type":"error"},{"inputs":[],"name":"IdenticalMarkets","type":"error"},{"inputs":[],"name":"InitiatorMismatch","type":"error"},{"inputs":[],"name":"InsufficientFundsToRepayFlashloan","type":"error"},{"inputs":[],"name":"InvalidExecuteOperation","type":"error"},{"inputs":[{"internalType":"address","name":"market","type":"address"}],"name":"MarketNotListed","type":"error"},{"inputs":[{"internalType":"uint256","name":"errorCode","type":"uint256"}],"name":"MintBehalfFailed","type":"error"},{"inputs":[],"name":"NotAnApprovedDelegate","type":"error"},{"inputs":[],"name":"OnBehalfMismatch","type":"error"},{"inputs":[{"internalType":"uint256","name":"errorCode","type":"uint256"}],"name":"OperationCausesLiquidation","type":"error"},{"inputs":[{"internalType":"uint256","name":"errorCode","type":"uint256"}],"name":"RedeemBehalfFailed","type":"error"},{"inputs":[{"internalType":"uint256","name":"errorCode","type":"uint256"}],"name":"RepayBehalfFailed","type":"error"},{"inputs":[],"name":"SlippageExceeded","type":"error"},{"inputs":[],"name":"TokenSwapCallFailed","type":"error"},{"inputs":[],"name":"UnauthorizedExecutor","type":"error"},{"inputs":[],"name":"VBNBNotSupported","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"inputs":[],"name":"ZeroFlashLoanAmount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"DustTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"contract IVToken","name":"collateralMarket","type":"address"},{"indexed":false,"internalType":"uint256","name":"collateralAmountSeed","type":"uint256"},{"indexed":true,"internalType":"contract IVToken","name":"borrowedMarket","type":"address"},{"indexed":false,"internalType":"uint256","name":"borrowedAmountToFlashLoan","type":"uint256"}],"name":"LeverageEntered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"contract IVToken","name":"collateralMarket","type":"address"},{"indexed":true,"internalType":"contract IVToken","name":"borrowedMarket","type":"address"},{"indexed":false,"internalType":"uint256","name":"borrowedAmountSeed","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"borrowedAmountToFlashLoan","type":"uint256"}],"name":"LeverageEnteredFromBorrow","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"contract IVToken","name":"collateralMarket","type":"address"},{"indexed":false,"internalType":"uint256","name":"collateralAmountToRedeemForSwap","type":"uint256"},{"indexed":true,"internalType":"contract IVToken","name":"borrowedMarket","type":"address"},{"indexed":false,"internalType":"uint256","name":"borrowedAmountToFlashLoan","type":"uint256"}],"name":"LeverageExited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"contract IVToken","name":"collateralMarket","type":"address"},{"indexed":false,"internalType":"uint256","name":"collateralAmountSeed","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"collateralAmountToFlashLoan","type":"uint256"}],"name":"SingleAssetLeverageEntered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"contract IVToken","name":"collateralMarket","type":"address"},{"indexed":false,"internalType":"uint256","name":"collateralAmountToFlashLoan","type":"uint256"}],"name":"SingleAssetLeverageExited","type":"event"},{"inputs":[{"internalType":"contract IVToken","name":"collateralMarket","type":"address"},{"internalType":"uint256","name":"collateralAmountSeed","type":"uint256"},{"internalType":"contract IVToken","name":"borrowedMarket","type":"address"},{"internalType":"uint256","name":"borrowedAmountToFlashLoan","type":"uint256"},{"internalType":"uint256","name":"minAmountOutAfterSwap","type":"uint256"},{"internalType":"bytes","name":"swapData","type":"bytes"}],"name":"enterLeverage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IVToken","name":"collateralMarket","type":"address"},{"internalType":"contract IVToken","name":"borrowedMarket","type":"address"},{"internalType":"uint256","name":"borrowedAmountSeed","type":"uint256"},{"internalType":"uint256","name":"borrowedAmountToFlashLoan","type":"uint256"},{"internalType":"uint256","name":"minAmountOutAfterSwap","type":"uint256"},{"internalType":"bytes","name":"swapData","type":"bytes"}],"name":"enterLeverageFromBorrow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IVToken","name":"collateralMarket","type":"address"},{"internalType":"uint256","name":"collateralAmountSeed","type":"uint256"},{"internalType":"uint256","name":"collateralAmountToFlashLoan","type":"uint256"}],"name":"enterSingleAssetLeverage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IVToken","name":"collateralMarket","type":"address"},{"internalType":"uint256","name":"collateralAmountToRedeemForSwap","type":"uint256"},{"internalType":"contract IVToken","name":"borrowedMarket","type":"address"},{"internalType":"uint256","name":"borrowedAmountToFlashLoan","type":"uint256"},{"internalType":"uint256","name":"minAmountOutAfterSwap","type":"uint256"},{"internalType":"bytes","name":"swapData","type":"bytes"}],"name":"exitLeverage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IVToken","name":"collateralMarket","type":"address"},{"internalType":"uint256","name":"collateralAmountToFlashLoan","type":"uint256"}],"name":"exitSingleAssetLeverage","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"author":"Venus Protocol","details":"This interface defines the functionality for entering and exiting leveraged positions      using flash loans and token swaps. The contract allows users to amplify their exposure      to specific assets by borrowing against their collateral and reinvesting the borrowed funds.","errors":{"AccrueInterestFailed(uint256)":[{"custom:error":"AccrueInterestFailed accrueInterest on a vToken market returned a non-zero error code"}],"BorrowBehalfFailed(uint256)":[{"custom:error":"BorrowBehalfFailed borrowBehalf on a vToken market returned a non-zero error code"}],"EnterMarketFailed(uint256)":[{"custom:error":"EnterMarketFailed Comptroller.enterMarketBehalf returned a non-zero error code"}],"FlashLoanAssetOrAmountMismatch()":[{"custom:error":"FlashLoanAssetOrAmountMismatch Invalid flash loan arrays length or >1 elements"}],"IdenticalMarkets()":[{"custom:error":"IdenticalMarkets Collateral and borrow markets cannot be the same"}],"InitiatorMismatch()":[{"custom:error":"InitiatorMismatch Invalid initiator address in flash loan callback"}],"InsufficientFundsToRepayFlashloan()":[{"custom:error":"InsufficientFundsToRepayFlashloan Not enough proceeds to repay flash loan plus fees"}],"InvalidExecuteOperation()":[{"custom:error":"InvalidExecuteOperation Unknown operation type in flash loan callback"}],"MarketNotListed(address)":[{"custom:error":"MarketNotListed Provided vToken market is not listed in Comptroller"}],"MintBehalfFailed(uint256)":[{"custom:error":"MintBehalfFailed mintBehalf on a vToken market returned a non-zero error code"}],"NotAnApprovedDelegate()":[{"custom:error":"NotAnApprovedDelegate User has not approved this contract as a delegate"}],"OnBehalfMismatch()":[{"custom:error":"OnBehalfMismatch Invalid onBehalf address in flash loan callback"}],"OperationCausesLiquidation(uint256)":[{"custom:error":"OperationCausesLiquidation Operation would put the account at risk (undercollateralized) returns a non-zero error code from getBorrowingPower"}],"RedeemBehalfFailed(uint256)":[{"custom:error":"RedeemBehalfFailed redeemBehalf on a vToken market returned a non-zero error code"}],"RepayBehalfFailed(uint256)":[{"custom:error":"RepayBehalfFailed repayBehalf on a vToken market returned a non-zero error code"}],"SlippageExceeded()":[{"custom:error":"SlippageExceeded Swap output lower than required minimum"}],"TokenSwapCallFailed()":[{"custom:error":"TokenSwapCallFailed Swap helper call reverted or returned false"}],"UnauthorizedExecutor()":[{"custom:error":"UnauthorizedExecutor Caller is not the expected Comptroller"}],"VBNBNotSupported()":[{"custom:error":"VBNBNotSupported vBNB market is not supported for leverage operations"}],"ZeroAddress()":[{"custom:error":"ZeroAddress One of the required addresses is zero"}],"ZeroFlashLoanAmount()":[{"custom:error":"ZeroFlashLoanAmount Flash loan amount cannot be zero"}]},"events":{"DustTransferred(address,address,uint256)":{"params":{"amount":"The amount of dust transferred","recipient":"The address receiving the dust (user or protocol share reserve)","token":"The underlying token address"}},"LeverageEntered(address,address,uint256,address,uint256)":{"params":{"borrowedAmountToFlashLoan":"The amount being flash loaned","borrowedMarket":"The vToken market being borrowed from","collateralAmountSeed":"The initial collateral amount provided by the user","collateralMarket":"The vToken market used as collateral","user":"The address of the user entering the position"}},"LeverageEnteredFromBorrow(address,address,address,uint256,uint256)":{"params":{"borrowedAmountSeed":"The initial borrowed asset amount provided by the user","borrowedAmountToFlashLoan":"The amount being flash loaned","borrowedMarket":"The vToken market being borrowed from","collateralMarket":"The vToken market used as collateral","user":"The address of the user entering the position"}},"LeverageExited(address,address,uint256,address,uint256)":{"params":{"borrowedAmountToFlashLoan":"The amount being flash loaned","borrowedMarket":"The vToken market being repaid","collateralAmountToRedeemForSwap":"The amount of collateral being redeemed for swap","collateralMarket":"The vToken market being redeemed","user":"The address of the user exiting the position"}},"SingleAssetLeverageEntered(address,address,uint256,uint256)":{"params":{"collateralAmountSeed":"The initial collateral amount provided by the user","collateralAmountToFlashLoan":"The amount being flash loaned","collateralMarket":"The vToken market used as collateral","user":"The address of the user entering the position"}},"SingleAssetLeverageExited(address,address,uint256)":{"params":{"collateralAmountToFlashLoan":"The amount being flash loaned","collateralMarket":"The vToken market used for both collateral and borrowed asset","user":"The address of the user exiting the position"}}},"kind":"dev","methods":{"enterLeverage(address,uint256,address,uint256,uint256,bytes)":{"custom:emits":"LeverageEntered","custom:error":"IdenticalMarkets if collateral and borrow markets are the sameNotAnApprovedDelegate if caller has not delegated to this contractAccrueInterestFailed if interest accrual fails on any marketMarketNotListed if any market is not listed in ComptrollerVBNBNotSupported if collateral or borrow market is vBNBOperationCausesLiquidation if the operation would make the account unsafeTransferFromUserFailed if seed amount transfer from user failsMintBehalfFailed if mint behalf operation failsBorrowBehalfFailed if borrow behalf operation failsTokenSwapCallFailed if token swap execution failsSlippageExceeded if collateral balance after swap is below minimum","details":"This function uses flash loans to borrow assets, swaps them for collateral tokens,      and supplies the collateral to the Venus protocol to amplify the user's position.      The user must have delegated permission to this contract via the comptroller.      Any remaining dust (both collateral and borrowed assets) after the operation is returned to the user.","params":{"borrowedAmountToFlashLoan":"The amount to borrow via flash loan for leverage","borrowedMarket":"The vToken market from which assets will be borrowed via flash loan (must not be vBNB)","collateralAmountSeed":"The initial amount of collateral the user provides (can be 0)","collateralMarket":"The vToken market where collateral will be supplied (must not be vBNB)","minAmountOutAfterSwap":"The minimum amount of collateral expected after swap (for slippage protection)","swapData":"Bytes containing swap instructions for converting borrowed assets to collateral"}},"enterLeverageFromBorrow(address,address,uint256,uint256,uint256,bytes)":{"custom:emits":"LeverageEnteredFromBorrow","custom:error":"IdenticalMarkets if collateral and borrow markets are the sameNotAnApprovedDelegate if caller has not delegated to this contractAccrueInterestFailed if interest accrual fails on any marketMarketNotListed if any market is not listed in ComptrollerVBNBNotSupported if collateral or borrow market is vBNBOperationCausesLiquidation if the operation would make the account unsafeTransferFromUserFailed if seed amount transfer from user failsMintBehalfFailed if mint behalf operation failsBorrowBehalfFailed if borrow behalf operation failsTokenSwapCallFailed if token swap execution failsSlippageExceeded if collateral balance after swap is below minimum","details":"This function uses flash loans to borrow additional assets, swaps the total borrowed amount      for collateral tokens, and supplies the collateral to the Venus protocol to amplify the user's position.      The user must have delegated permission to this contract via the comptroller.      Any remaining dust (both collateral and borrowed assets) after the operation is returned to the user.","params":{"borrowedAmountSeed":"The initial amount of borrowed assets the user provides (can be 0)","borrowedAmountToFlashLoan":"The additional amount to borrow via flash loan for leverage","borrowedMarket":"The vToken market from which assets will be borrowed via flash loan (must not be vBNB)","collateralMarket":"The vToken market where collateral will be supplied (must not be vBNB)","minAmountOutAfterSwap":"The minimum amount of collateral expected after swap (for slippage protection)","swapData":"Bytes containing swap instructions for converting borrowed assets to collateral"}},"enterSingleAssetLeverage(address,uint256,uint256)":{"custom:emits":"SingleAssetLeverageEntered","custom:error":"NotAnApprovedDelegate if caller has not delegated to this contractAccrueInterestFailed if interest accrual fails on the collateral marketMarketNotListed if the market is not listed in ComptrollerVBNBNotSupported if the market is vBNBOperationCausesLiquidation if the operation would make the account unsafeTransferFromUserFailed if seed amount transfer from user failsMintBehalfFailed if mint behalf operation failsBorrowBehalfFailed if borrow behalf operation fails","details":"This function flash loans additional collateral assets, amplifying the user's supplied collateral      in the Venus protocol. The user must have delegated permission to this contract via the comptroller.      Any remaining collateral dust after the operation is returned to the user.","params":{"collateralAmountSeed":"The initial amount of collateral the user provides (can be 0)","collateralAmountToFlashLoan":"The amount to borrow via flash loan for leverage","collateralMarket":"The vToken market where collateral will be supplied (must not be vBNB)"}},"exitLeverage(address,uint256,address,uint256,uint256,bytes)":{"custom:emits":"LeverageExited","custom:error":"IdenticalMarkets if collateral and borrow markets are the sameNotAnApprovedDelegate if caller has not delegated to this contractMarketNotListed if any market is not listed in ComptrollerVBNBNotSupported if collateral or borrow market is vBNBOperationCausesLiquidation if the operation would make the account unsafeRepayBehalfFailed if repay operation failsRedeemBehalfFailed if redeem operation failsTokenSwapCallFailed if token swap execution failsSlippageExceeded if swap output is below minimum requiredInsufficientFundsToRepayFlashloan if insufficient funds to repay flash loan","details":"This function uses flash loans to temporarily repay debt, redeems collateral,      swaps collateral for borrowed assets, and repays the flash loan. Any remaining      dust (both collateral and borrowed assets) is returned to the user. This ensures      users who swap more than required as protection against price volatility receive      their excess tokens back.      The flash loan amount can exceed actual debt to account for interest accrual      between transaction creation and mining. The contract caps repayment to actual      debt and uses leftover funds toward flash loan repayment.      NOTE: No pre-operation safety check is performed because exiting leverage reduces      debt exposure, which can only improve account health. Post-operation safety is      still validated to ensure the final position is healthy.      IMPORTANT: If treasuryPercent() is nonzero, the user must provide a      collateralAmountToRedeemForSwap that accounts for the treasury fee. Only      (1 - treasuryPercent/1e18) of the redeemed amount is transferred to this contract.      Required gross amount = netAmountNeeded * 1e18 / (1e18 - treasuryPercent)","params":{"borrowedAmountToFlashLoan":"The amount to borrow via flash loan for debt repayment (can exceed actual debt)","borrowedMarket":"The vToken market where debt will be repaid via flash loan (must not be vBNB)","collateralAmountToRedeemForSwap":"The gross amount of collateral to redeem (must account for treasury fee if nonzero)","collateralMarket":"The vToken market from which collateral will be redeemed (must not be vBNB)","minAmountOutAfterSwap":"The minimum amount of borrowed asset expected after swap (for slippage protection)","swapData":"Bytes containing swap instructions for converting collateral to borrowed assets"}},"exitSingleAssetLeverage(address,uint256)":{"custom:emits":"SingleAssetLeverageExited","custom:error":"NotAnApprovedDelegate if caller has not delegated to this contractMarketNotListed if the market is not listed in ComptrollerVBNBNotSupported if the market is vBNBOperationCausesLiquidation if the operation would make the account unsafeRepayBehalfFailed if repay operation failsRedeemBehalfFailed if redeem operation failsInsufficientFundsToRepayFlashloan if insufficient funds to repay flash loan","details":"This function uses flash loans to temporarily repay debt, redeems collateral,      and repays the flash loan without requiring token swaps. This is more gas-efficient      than exitLeverage when dealing with single-asset positions. Any remaining collateral      dust after the operation is returned to the user.      The flash loan amount can exceed actual debt to account for interest accrual      between transaction creation and mining. The contract caps repayment to actual      debt and uses leftover funds toward flash loan repayment.      If treasuryPercent() is nonzero, the contract automatically adjusts the redeem      amount to ensure sufficient funds are received to repay the flash loan after the      treasury fee deduction.      NOTE: No pre-operation safety check is performed because exiting leverage reduces      debt exposure, which can only improve account health. Post-operation safety is      still validated to ensure the final position is healthy.","params":{"collateralAmountToFlashLoan":"The amount to borrow via flash loan for debt repayment (can exceed actual debt)","collateralMarket":"The vToken market for both collateral and borrowed asset (must not be vBNB)"}}},"title":"ILeverageStrategiesManager","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"enterLeverage(address,uint256,address,uint256,uint256,bytes)":"3a8f8c43","enterLeverageFromBorrow(address,address,uint256,uint256,uint256,bytes)":"13424801","enterSingleAssetLeverage(address,uint256,uint256)":"3c3a2c21","exitLeverage(address,uint256,address,uint256,uint256,bytes)":"c78befbe","exitSingleAssetLeverage(address,uint256)":"c6cd25f6"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"errorCode\",\"type\":\"uint256\"}],\"name\":\"AccrueInterestFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"errorCode\",\"type\":\"uint256\"}],\"name\":\"BorrowBehalfFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"err\",\"type\":\"uint256\"}],\"name\":\"EnterMarketFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FlashLoanAssetOrAmountMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IdenticalMarkets\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InitiatorMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientFundsToRepayFlashloan\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidExecuteOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"market\",\"type\":\"address\"}],\"name\":\"MarketNotListed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"errorCode\",\"type\":\"uint256\"}],\"name\":\"MintBehalfFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAnApprovedDelegate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnBehalfMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"errorCode\",\"type\":\"uint256\"}],\"name\":\"OperationCausesLiquidation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"errorCode\",\"type\":\"uint256\"}],\"name\":\"RedeemBehalfFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"errorCode\",\"type\":\"uint256\"}],\"name\":\"RepayBehalfFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SlippageExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenSwapCallFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnauthorizedExecutor\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VBNBNotSupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroFlashLoanAmount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"DustTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IVToken\",\"name\":\"collateralMarket\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"collateralAmountSeed\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"contract IVToken\",\"name\":\"borrowedMarket\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowedAmountToFlashLoan\",\"type\":\"uint256\"}],\"name\":\"LeverageEntered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IVToken\",\"name\":\"collateralMarket\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IVToken\",\"name\":\"borrowedMarket\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowedAmountSeed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowedAmountToFlashLoan\",\"type\":\"uint256\"}],\"name\":\"LeverageEnteredFromBorrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IVToken\",\"name\":\"collateralMarket\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"collateralAmountToRedeemForSwap\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"contract IVToken\",\"name\":\"borrowedMarket\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowedAmountToFlashLoan\",\"type\":\"uint256\"}],\"name\":\"LeverageExited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IVToken\",\"name\":\"collateralMarket\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"collateralAmountSeed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"collateralAmountToFlashLoan\",\"type\":\"uint256\"}],\"name\":\"SingleAssetLeverageEntered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IVToken\",\"name\":\"collateralMarket\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"collateralAmountToFlashLoan\",\"type\":\"uint256\"}],\"name\":\"SingleAssetLeverageExited\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract IVToken\",\"name\":\"collateralMarket\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"collateralAmountSeed\",\"type\":\"uint256\"},{\"internalType\":\"contract IVToken\",\"name\":\"borrowedMarket\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"borrowedAmountToFlashLoan\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOutAfterSwap\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"swapData\",\"type\":\"bytes\"}],\"name\":\"enterLeverage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IVToken\",\"name\":\"collateralMarket\",\"type\":\"address\"},{\"internalType\":\"contract IVToken\",\"name\":\"borrowedMarket\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"borrowedAmountSeed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrowedAmountToFlashLoan\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOutAfterSwap\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"swapData\",\"type\":\"bytes\"}],\"name\":\"enterLeverageFromBorrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IVToken\",\"name\":\"collateralMarket\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"collateralAmountSeed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateralAmountToFlashLoan\",\"type\":\"uint256\"}],\"name\":\"enterSingleAssetLeverage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IVToken\",\"name\":\"collateralMarket\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"collateralAmountToRedeemForSwap\",\"type\":\"uint256\"},{\"internalType\":\"contract IVToken\",\"name\":\"borrowedMarket\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"borrowedAmountToFlashLoan\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOutAfterSwap\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"swapData\",\"type\":\"bytes\"}],\"name\":\"exitLeverage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IVToken\",\"name\":\"collateralMarket\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"collateralAmountToFlashLoan\",\"type\":\"uint256\"}],\"name\":\"exitSingleAssetLeverage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus Protocol\",\"details\":\"This interface defines the functionality for entering and exiting leveraged positions      using flash loans and token swaps. The contract allows users to amplify their exposure      to specific assets by borrowing against their collateral and reinvesting the borrowed funds.\",\"errors\":{\"AccrueInterestFailed(uint256)\":[{\"custom:error\":\"AccrueInterestFailed accrueInterest on a vToken market returned a non-zero error code\"}],\"BorrowBehalfFailed(uint256)\":[{\"custom:error\":\"BorrowBehalfFailed borrowBehalf on a vToken market returned a non-zero error code\"}],\"EnterMarketFailed(uint256)\":[{\"custom:error\":\"EnterMarketFailed Comptroller.enterMarketBehalf returned a non-zero error code\"}],\"FlashLoanAssetOrAmountMismatch()\":[{\"custom:error\":\"FlashLoanAssetOrAmountMismatch Invalid flash loan arrays length or >1 elements\"}],\"IdenticalMarkets()\":[{\"custom:error\":\"IdenticalMarkets Collateral and borrow markets cannot be the same\"}],\"InitiatorMismatch()\":[{\"custom:error\":\"InitiatorMismatch Invalid initiator address in flash loan callback\"}],\"InsufficientFundsToRepayFlashloan()\":[{\"custom:error\":\"InsufficientFundsToRepayFlashloan Not enough proceeds to repay flash loan plus fees\"}],\"InvalidExecuteOperation()\":[{\"custom:error\":\"InvalidExecuteOperation Unknown operation type in flash loan callback\"}],\"MarketNotListed(address)\":[{\"custom:error\":\"MarketNotListed Provided vToken market is not listed in Comptroller\"}],\"MintBehalfFailed(uint256)\":[{\"custom:error\":\"MintBehalfFailed mintBehalf on a vToken market returned a non-zero error code\"}],\"NotAnApprovedDelegate()\":[{\"custom:error\":\"NotAnApprovedDelegate User has not approved this contract as a delegate\"}],\"OnBehalfMismatch()\":[{\"custom:error\":\"OnBehalfMismatch Invalid onBehalf address in flash loan callback\"}],\"OperationCausesLiquidation(uint256)\":[{\"custom:error\":\"OperationCausesLiquidation Operation would put the account at risk (undercollateralized) returns a non-zero error code from getBorrowingPower\"}],\"RedeemBehalfFailed(uint256)\":[{\"custom:error\":\"RedeemBehalfFailed redeemBehalf on a vToken market returned a non-zero error code\"}],\"RepayBehalfFailed(uint256)\":[{\"custom:error\":\"RepayBehalfFailed repayBehalf on a vToken market returned a non-zero error code\"}],\"SlippageExceeded()\":[{\"custom:error\":\"SlippageExceeded Swap output lower than required minimum\"}],\"TokenSwapCallFailed()\":[{\"custom:error\":\"TokenSwapCallFailed Swap helper call reverted or returned false\"}],\"UnauthorizedExecutor()\":[{\"custom:error\":\"UnauthorizedExecutor Caller is not the expected Comptroller\"}],\"VBNBNotSupported()\":[{\"custom:error\":\"VBNBNotSupported vBNB market is not supported for leverage operations\"}],\"ZeroAddress()\":[{\"custom:error\":\"ZeroAddress One of the required addresses is zero\"}],\"ZeroFlashLoanAmount()\":[{\"custom:error\":\"ZeroFlashLoanAmount Flash loan amount cannot be zero\"}]},\"events\":{\"DustTransferred(address,address,uint256)\":{\"params\":{\"amount\":\"The amount of dust transferred\",\"recipient\":\"The address receiving the dust (user or protocol share reserve)\",\"token\":\"The underlying token address\"}},\"LeverageEntered(address,address,uint256,address,uint256)\":{\"params\":{\"borrowedAmountToFlashLoan\":\"The amount being flash loaned\",\"borrowedMarket\":\"The vToken market being borrowed from\",\"collateralAmountSeed\":\"The initial collateral amount provided by the user\",\"collateralMarket\":\"The vToken market used as collateral\",\"user\":\"The address of the user entering the position\"}},\"LeverageEnteredFromBorrow(address,address,address,uint256,uint256)\":{\"params\":{\"borrowedAmountSeed\":\"The initial borrowed asset amount provided by the user\",\"borrowedAmountToFlashLoan\":\"The amount being flash loaned\",\"borrowedMarket\":\"The vToken market being borrowed from\",\"collateralMarket\":\"The vToken market used as collateral\",\"user\":\"The address of the user entering the position\"}},\"LeverageExited(address,address,uint256,address,uint256)\":{\"params\":{\"borrowedAmountToFlashLoan\":\"The amount being flash loaned\",\"borrowedMarket\":\"The vToken market being repaid\",\"collateralAmountToRedeemForSwap\":\"The amount of collateral being redeemed for swap\",\"collateralMarket\":\"The vToken market being redeemed\",\"user\":\"The address of the user exiting the position\"}},\"SingleAssetLeverageEntered(address,address,uint256,uint256)\":{\"params\":{\"collateralAmountSeed\":\"The initial collateral amount provided by the user\",\"collateralAmountToFlashLoan\":\"The amount being flash loaned\",\"collateralMarket\":\"The vToken market used as collateral\",\"user\":\"The address of the user entering the position\"}},\"SingleAssetLeverageExited(address,address,uint256)\":{\"params\":{\"collateralAmountToFlashLoan\":\"The amount being flash loaned\",\"collateralMarket\":\"The vToken market used for both collateral and borrowed asset\",\"user\":\"The address of the user exiting the position\"}}},\"kind\":\"dev\",\"methods\":{\"enterLeverage(address,uint256,address,uint256,uint256,bytes)\":{\"custom:emits\":\"LeverageEntered\",\"custom:error\":\"IdenticalMarkets if collateral and borrow markets are the sameNotAnApprovedDelegate if caller has not delegated to this contractAccrueInterestFailed if interest accrual fails on any marketMarketNotListed if any market is not listed in ComptrollerVBNBNotSupported if collateral or borrow market is vBNBOperationCausesLiquidation if the operation would make the account unsafeTransferFromUserFailed if seed amount transfer from user failsMintBehalfFailed if mint behalf operation failsBorrowBehalfFailed if borrow behalf operation failsTokenSwapCallFailed if token swap execution failsSlippageExceeded if collateral balance after swap is below minimum\",\"details\":\"This function uses flash loans to borrow assets, swaps them for collateral tokens,      and supplies the collateral to the Venus protocol to amplify the user's position.      The user must have delegated permission to this contract via the comptroller.      Any remaining dust (both collateral and borrowed assets) after the operation is returned to the user.\",\"params\":{\"borrowedAmountToFlashLoan\":\"The amount to borrow via flash loan for leverage\",\"borrowedMarket\":\"The vToken market from which assets will be borrowed via flash loan (must not be vBNB)\",\"collateralAmountSeed\":\"The initial amount of collateral the user provides (can be 0)\",\"collateralMarket\":\"The vToken market where collateral will be supplied (must not be vBNB)\",\"minAmountOutAfterSwap\":\"The minimum amount of collateral expected after swap (for slippage protection)\",\"swapData\":\"Bytes containing swap instructions for converting borrowed assets to collateral\"}},\"enterLeverageFromBorrow(address,address,uint256,uint256,uint256,bytes)\":{\"custom:emits\":\"LeverageEnteredFromBorrow\",\"custom:error\":\"IdenticalMarkets if collateral and borrow markets are the sameNotAnApprovedDelegate if caller has not delegated to this contractAccrueInterestFailed if interest accrual fails on any marketMarketNotListed if any market is not listed in ComptrollerVBNBNotSupported if collateral or borrow market is vBNBOperationCausesLiquidation if the operation would make the account unsafeTransferFromUserFailed if seed amount transfer from user failsMintBehalfFailed if mint behalf operation failsBorrowBehalfFailed if borrow behalf operation failsTokenSwapCallFailed if token swap execution failsSlippageExceeded if collateral balance after swap is below minimum\",\"details\":\"This function uses flash loans to borrow additional assets, swaps the total borrowed amount      for collateral tokens, and supplies the collateral to the Venus protocol to amplify the user's position.      The user must have delegated permission to this contract via the comptroller.      Any remaining dust (both collateral and borrowed assets) after the operation is returned to the user.\",\"params\":{\"borrowedAmountSeed\":\"The initial amount of borrowed assets the user provides (can be 0)\",\"borrowedAmountToFlashLoan\":\"The additional amount to borrow via flash loan for leverage\",\"borrowedMarket\":\"The vToken market from which assets will be borrowed via flash loan (must not be vBNB)\",\"collateralMarket\":\"The vToken market where collateral will be supplied (must not be vBNB)\",\"minAmountOutAfterSwap\":\"The minimum amount of collateral expected after swap (for slippage protection)\",\"swapData\":\"Bytes containing swap instructions for converting borrowed assets to collateral\"}},\"enterSingleAssetLeverage(address,uint256,uint256)\":{\"custom:emits\":\"SingleAssetLeverageEntered\",\"custom:error\":\"NotAnApprovedDelegate if caller has not delegated to this contractAccrueInterestFailed if interest accrual fails on the collateral marketMarketNotListed if the market is not listed in ComptrollerVBNBNotSupported if the market is vBNBOperationCausesLiquidation if the operation would make the account unsafeTransferFromUserFailed if seed amount transfer from user failsMintBehalfFailed if mint behalf operation failsBorrowBehalfFailed if borrow behalf operation fails\",\"details\":\"This function flash loans additional collateral assets, amplifying the user's supplied collateral      in the Venus protocol. The user must have delegated permission to this contract via the comptroller.      Any remaining collateral dust after the operation is returned to the user.\",\"params\":{\"collateralAmountSeed\":\"The initial amount of collateral the user provides (can be 0)\",\"collateralAmountToFlashLoan\":\"The amount to borrow via flash loan for leverage\",\"collateralMarket\":\"The vToken market where collateral will be supplied (must not be vBNB)\"}},\"exitLeverage(address,uint256,address,uint256,uint256,bytes)\":{\"custom:emits\":\"LeverageExited\",\"custom:error\":\"IdenticalMarkets if collateral and borrow markets are the sameNotAnApprovedDelegate if caller has not delegated to this contractMarketNotListed if any market is not listed in ComptrollerVBNBNotSupported if collateral or borrow market is vBNBOperationCausesLiquidation if the operation would make the account unsafeRepayBehalfFailed if repay operation failsRedeemBehalfFailed if redeem operation failsTokenSwapCallFailed if token swap execution failsSlippageExceeded if swap output is below minimum requiredInsufficientFundsToRepayFlashloan if insufficient funds to repay flash loan\",\"details\":\"This function uses flash loans to temporarily repay debt, redeems collateral,      swaps collateral for borrowed assets, and repays the flash loan. Any remaining      dust (both collateral and borrowed assets) is returned to the user. This ensures      users who swap more than required as protection against price volatility receive      their excess tokens back.      The flash loan amount can exceed actual debt to account for interest accrual      between transaction creation and mining. The contract caps repayment to actual      debt and uses leftover funds toward flash loan repayment.      NOTE: No pre-operation safety check is performed because exiting leverage reduces      debt exposure, which can only improve account health. Post-operation safety is      still validated to ensure the final position is healthy.      IMPORTANT: If treasuryPercent() is nonzero, the user must provide a      collateralAmountToRedeemForSwap that accounts for the treasury fee. Only      (1 - treasuryPercent/1e18) of the redeemed amount is transferred to this contract.      Required gross amount = netAmountNeeded * 1e18 / (1e18 - treasuryPercent)\",\"params\":{\"borrowedAmountToFlashLoan\":\"The amount to borrow via flash loan for debt repayment (can exceed actual debt)\",\"borrowedMarket\":\"The vToken market where debt will be repaid via flash loan (must not be vBNB)\",\"collateralAmountToRedeemForSwap\":\"The gross amount of collateral to redeem (must account for treasury fee if nonzero)\",\"collateralMarket\":\"The vToken market from which collateral will be redeemed (must not be vBNB)\",\"minAmountOutAfterSwap\":\"The minimum amount of borrowed asset expected after swap (for slippage protection)\",\"swapData\":\"Bytes containing swap instructions for converting collateral to borrowed assets\"}},\"exitSingleAssetLeverage(address,uint256)\":{\"custom:emits\":\"SingleAssetLeverageExited\",\"custom:error\":\"NotAnApprovedDelegate if caller has not delegated to this contractMarketNotListed if the market is not listed in ComptrollerVBNBNotSupported if the market is vBNBOperationCausesLiquidation if the operation would make the account unsafeRepayBehalfFailed if repay operation failsRedeemBehalfFailed if redeem operation failsInsufficientFundsToRepayFlashloan if insufficient funds to repay flash loan\",\"details\":\"This function uses flash loans to temporarily repay debt, redeems collateral,      and repays the flash loan without requiring token swaps. This is more gas-efficient      than exitLeverage when dealing with single-asset positions. Any remaining collateral      dust after the operation is returned to the user.      The flash loan amount can exceed actual debt to account for interest accrual      between transaction creation and mining. The contract caps repayment to actual      debt and uses leftover funds toward flash loan repayment.      If treasuryPercent() is nonzero, the contract automatically adjusts the redeem      amount to ensure sufficient funds are received to repay the flash loan after the      treasury fee deduction.      NOTE: No pre-operation safety check is performed because exiting leverage reduces      debt exposure, which can only improve account health. Post-operation safety is      still validated to ensure the final position is healthy.\",\"params\":{\"collateralAmountToFlashLoan\":\"The amount to borrow via flash loan for debt repayment (can exceed actual debt)\",\"collateralMarket\":\"The vToken market for both collateral and borrowed asset (must not be vBNB)\"}}},\"title\":\"ILeverageStrategiesManager\",\"version\":1},\"userdoc\":{\"events\":{\"DustTransferred(address,address,uint256)\":{\"notice\":\"Emitted when dust amounts are transferred after a leverage operation\"},\"LeverageEntered(address,address,uint256,address,uint256)\":{\"notice\":\"Emitted when a user enters a leveraged position with collateral seed\"},\"LeverageEnteredFromBorrow(address,address,address,uint256,uint256)\":{\"notice\":\"Emitted when a user enters a leveraged position with borrowed asset seed\"},\"LeverageExited(address,address,uint256,address,uint256)\":{\"notice\":\"Emitted when a user exits a leveraged position\"},\"SingleAssetLeverageEntered(address,address,uint256,uint256)\":{\"notice\":\"Emitted when a user enters a leveraged position with single collateral asset\"},\"SingleAssetLeverageExited(address,address,uint256)\":{\"notice\":\"Emitted when a user exits a leveraged position with single collateral asset\"}},\"kind\":\"user\",\"methods\":{\"enterLeverage(address,uint256,address,uint256,uint256,bytes)\":{\"notice\":\"Enters a leveraged position by borrowing assets and converting them to collateral\"},\"enterLeverageFromBorrow(address,address,uint256,uint256,uint256,bytes)\":{\"notice\":\"Enters a leveraged position by using existing borrowed assets and converting them to collateral\"},\"enterSingleAssetLeverage(address,uint256,uint256)\":{\"notice\":\"Enters a leveraged position using only collateral provided by the user\"},\"exitLeverage(address,uint256,address,uint256,uint256,bytes)\":{\"notice\":\"Exits a leveraged position by redeeming collateral and repaying borrowed assets\"},\"exitSingleAssetLeverage(address,uint256)\":{\"notice\":\"Exits a leveraged position when collateral and borrowed assets are the same token\"}},\"notice\":\"Interface for the Leverage Strategies Manager contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/LeverageManager/ILeverageStrategiesManager.sol\":\"ILeverageStrategiesManager\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.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 IERC20Upgradeable {\\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(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x0e1f0f5f62f67a881cd1a9597acbc0a5e4071f3c2c10449a183b922ae7272e3f\",\"license\":\"MIT\"},\"@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\ninterface OracleInterface {\\n    function getPrice(address asset) external view returns (uint256);\\n}\\n\\ninterface ResilientOracleInterface is OracleInterface {\\n    function updatePrice(address vToken) external;\\n\\n    function updateAssetPrice(address asset) external;\\n\\n    function getUnderlyingPrice(address vToken) external view returns (uint256);\\n}\\n\\ninterface BoundValidatorInterface {\\n    function validatePriceWithAnchorPrice(\\n        address asset,\\n        uint256 reporterPrice,\\n        uint256 anchorPrice\\n    ) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\"},\"contracts/Interfaces.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\nimport { IERC20Upgradeable } from \\\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\\\";\\nimport { ResilientOracleInterface } from \\\"@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol\\\";\\n\\ninterface IVToken is IERC20Upgradeable {\\n    function accrueInterest() external returns (uint256);\\n\\n    function redeem(uint256 redeemTokens) external returns (uint256);\\n\\n    function redeemUnderlying(uint256 redeemAmount) external returns (uint256);\\n\\n    function borrowBalanceCurrent(address borrower) external returns (uint256);\\n\\n    function balanceOfUnderlying(address owner) external returns (uint256);\\n\\n    function seize(address liquidator, address borrower, uint seizeTokens) external returns (uint);\\n\\n    function mintBehalf(address receiver, uint mintAmount) external returns (uint);\\n\\n    function borrowBehalf(address borrower, uint borrowAmount) external returns (uint256);\\n\\n    function repayBorrowBehalf(address borrower, uint repayAmount) external returns (uint256);\\n\\n    function redeemUnderlyingBehalf(address redeemer, uint redeemAmount) external returns (uint);\\n\\n    function comptroller() external view returns (IComptroller);\\n\\n    function borrowBalanceStored(address account) external view returns (uint256);\\n\\n    function underlying() external view returns (address);\\n}\\n\\ninterface IVBNB is IVToken {\\n    function repayBorrowBehalf(address borrower) external payable;\\n\\n    function liquidateBorrow(address borrower, IVToken vTokenCollateral) external payable;\\n}\\n\\ninterface IComptroller {\\n    enum Action {\\n        MINT,\\n        REDEEM,\\n        BORROW,\\n        REPAY,\\n        SEIZE,\\n        LIQUIDATE,\\n        TRANSFER,\\n        ENTER_MARKET,\\n        EXIT_MARKET\\n    }\\n\\n    function _setActionsPaused(address[] calldata markets_, Action[] calldata actions_, bool paused_) external;\\n\\n    function enterMarkets(address[] calldata vTokens) external returns (uint256[] memory);\\n\\n    function enterMarketBehalf(address onBehalf, address vToken) external returns (uint256);\\n\\n    function enterMarket(address user, address vToken) external returns (uint256);\\n\\n    function liquidationIncentiveMantissa() external view returns (uint256);\\n\\n    function vaiController() external view returns (address);\\n\\n    function liquidatorContract() external view returns (address);\\n\\n    function oracle() external view returns (ResilientOracleInterface);\\n\\n    function actionPaused(address market, Action action) external view returns (bool);\\n\\n    function markets(address) external view returns (bool, uint256, bool);\\n\\n    function isForcedLiquidationEnabled(address) external view returns (bool);\\n\\n    function approvedDelegates(address borrower, address delegate) external view returns (bool);\\n\\n    function getAccountLiquidity(address account) external view returns (uint256, uint256, uint256);\\n\\n    function checkMembership(address account, IVToken vToken) external view returns (bool);\\n\\n    function getBorrowingPower(\\n        address account\\n    ) external view returns (uint256 error, uint256 liquidity, uint256 shortfall);\\n\\n    function treasuryPercent() external view returns (uint256);\\n\\n    function executeFlashLoan(\\n        address payable onBehalf,\\n        address payable receiver,\\n        IVToken[] memory vTokens,\\n        uint256[] memory underlyingAmounts,\\n        bytes memory param\\n    ) external;\\n}\\n\\ninterface IFlashLoanReceiver {\\n    /**\\n     * @notice Executes an operation after receiving the flash-borrowed assets.\\n     * @dev Implementation of this function must ensure at least the premium (fee) is repaid within the same transaction.\\n     *      Any unpaid balance (principal + premium - repaid amount) will be added to the onBehalf address's borrow balance.\\n     * @param vTokens The vToken contracts corresponding to the flash-borrowed underlying assets.\\n     * @param amounts The amounts of each underlying asset that were flash-borrowed.\\n     * @param premiums The premiums (fees) associated with each flash-borrowed asset.\\n     * @param initiator The address that initiated the flash loan.\\n     * @param onBehalf The address of the user whose debt position will be used for any unpaid flash loan balance.\\n     * @param param Additional parameters encoded as bytes. These can be used to pass custom data to the receiver contract.\\n     * @return success True if the operation succeeds (regardless of repayment amount), false if the operation fails.\\n     * @return repayAmounts Array of uint256 representing the amounts to be repaid for each asset. The receiver contract\\n     *         must approve these amounts to the respective vToken contracts before this function returns.\\n     */\\n    function executeOperation(\\n        IVToken[] calldata vTokens,\\n        uint256[] calldata amounts,\\n        uint256[] calldata premiums,\\n        address initiator,\\n        address onBehalf,\\n        bytes calldata param\\n    ) external returns (bool success, uint256[] memory repayAmounts);\\n}\\n\\ninterface IWBNB is IERC20Upgradeable {\\n    function deposit() external payable;\\n\\n    function withdraw(uint256 amount) external;\\n}\\n\\ninterface IProtocolShareReserve {\\n    enum IncomeType {\\n        SPREAD,\\n        LIQUIDATION,\\n        ERC4626_WRAPPER_REWARDS,\\n        FLASHLOAN\\n    }\\n\\n    function updateAssetsState(address comptroller, address asset, IncomeType incomeType) external;\\n}\\n\",\"keccak256\":\"0x05825bb795ff9a56832449324737a282a3cc523697d5897ac8c3e7a43455942a\",\"license\":\"BSD-3-Clause\"},\"contracts/LeverageManager/ILeverageStrategiesManager.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.28;\\n\\nimport { IVToken } from \\\"../Interfaces.sol\\\";\\n\\n/**\\n * @title ILeverageStrategiesManager\\n * @author Venus Protocol\\n * @notice Interface for the Leverage Strategies Manager contract\\n * @dev This interface defines the functionality for entering and exiting leveraged positions\\n *      using flash loans and token swaps. The contract allows users to amplify their exposure\\n *      to specific assets by borrowing against their collateral and reinvesting the borrowed funds.\\n */\\ninterface ILeverageStrategiesManager {\\n    /// @custom:error MintBehalfFailed mintBehalf on a vToken market returned a non-zero error code\\n    error MintBehalfFailed(uint256 errorCode);\\n\\n    /// @custom:error BorrowBehalfFailed borrowBehalf on a vToken market returned a non-zero error code\\n    error BorrowBehalfFailed(uint256 errorCode);\\n\\n    /// @custom:error RepayBehalfFailed repayBehalf on a vToken market returned a non-zero error code\\n    error RepayBehalfFailed(uint256 errorCode);\\n\\n    /// @custom:error RedeemBehalfFailed redeemBehalf on a vToken market returned a non-zero error code\\n    error RedeemBehalfFailed(uint256 errorCode);\\n\\n    /// @custom:error OperationCausesLiquidation Operation would put the account at risk (undercollateralized) returns a non-zero error code from getBorrowingPower\\n    error OperationCausesLiquidation(uint256 errorCode);\\n\\n    /// @custom:error TokenSwapCallFailed Swap helper call reverted or returned false\\n    error TokenSwapCallFailed();\\n\\n    /// @custom:error FlashLoanAssetOrAmountMismatch Invalid flash loan arrays length or >1 elements\\n    error FlashLoanAssetOrAmountMismatch();\\n\\n    /// @custom:error UnauthorizedExecutor Caller is not the expected Comptroller\\n    error UnauthorizedExecutor();\\n\\n    /// @custom:error InvalidExecuteOperation Unknown operation type in flash loan callback\\n    error InvalidExecuteOperation();\\n\\n    /// @custom:error SlippageExceeded Swap output lower than required minimum\\n    error SlippageExceeded();\\n\\n    /// @custom:error InsufficientFundsToRepayFlashloan Not enough proceeds to repay flash loan plus fees\\n    error InsufficientFundsToRepayFlashloan();\\n\\n    /// @custom:error InitiatorMismatch Invalid initiator address in flash loan callback\\n    error InitiatorMismatch();\\n\\n    /// @custom:error OnBehalfMismatch Invalid onBehalf address in flash loan callback\\n    error OnBehalfMismatch();\\n\\n    /// @custom:error EnterMarketFailed Comptroller.enterMarketBehalf returned a non-zero error code\\n    error EnterMarketFailed(uint256 err);\\n\\n    /// @custom:error MarketNotListed Provided vToken market is not listed in Comptroller\\n    error MarketNotListed(address market);\\n\\n    /// @custom:error VBNBNotSupported vBNB market is not supported for leverage operations\\n    error VBNBNotSupported();\\n\\n    /// @custom:error ZeroAddress One of the required addresses is zero\\n    error ZeroAddress();\\n\\n    /// @custom:error NotAnApprovedDelegate User has not approved this contract as a delegate\\n    error NotAnApprovedDelegate();\\n\\n    /// @custom:error ZeroFlashLoanAmount Flash loan amount cannot be zero\\n    error ZeroFlashLoanAmount();\\n\\n    /// @custom:error AccrueInterestFailed accrueInterest on a vToken market returned a non-zero error code\\n    error AccrueInterestFailed(uint256 errorCode);\\n\\n    /// @custom:error IdenticalMarkets Collateral and borrow markets cannot be the same\\n    error IdenticalMarkets();\\n\\n    /// @notice Emitted when dust amounts are transferred after a leverage operation\\n    /// @param recipient The address receiving the dust (user or protocol share reserve)\\n    /// @param token The underlying token address\\n    /// @param amount The amount of dust transferred\\n    event DustTransferred(address indexed recipient, address indexed token, uint256 amount);\\n\\n    /// @notice Emitted when a user enters a leveraged position with single collateral asset\\n    /// @param user The address of the user entering the position\\n    /// @param collateralMarket The vToken market used as collateral\\n    /// @param collateralAmountSeed The initial collateral amount provided by the user\\n    /// @param collateralAmountToFlashLoan The amount being flash loaned\\n    event SingleAssetLeverageEntered(\\n        address indexed user,\\n        IVToken indexed collateralMarket,\\n        uint256 collateralAmountSeed,\\n        uint256 collateralAmountToFlashLoan\\n    );\\n\\n    /// @notice Emitted when a user enters a leveraged position with collateral seed\\n    /// @param user The address of the user entering the position\\n    /// @param collateralMarket The vToken market used as collateral\\n    /// @param collateralAmountSeed The initial collateral amount provided by the user\\n    /// @param borrowedMarket The vToken market being borrowed from\\n    /// @param borrowedAmountToFlashLoan The amount being flash loaned\\n    event LeverageEntered(\\n        address indexed user,\\n        IVToken indexed collateralMarket,\\n        uint256 collateralAmountSeed,\\n        IVToken indexed borrowedMarket,\\n        uint256 borrowedAmountToFlashLoan\\n    );\\n\\n    /// @notice Emitted when a user enters a leveraged position with borrowed asset seed\\n    /// @param user The address of the user entering the position\\n    /// @param collateralMarket The vToken market used as collateral\\n    /// @param borrowedMarket The vToken market being borrowed from\\n    /// @param borrowedAmountSeed The initial borrowed asset amount provided by the user\\n    /// @param borrowedAmountToFlashLoan The amount being flash loaned\\n    event LeverageEnteredFromBorrow(\\n        address indexed user,\\n        IVToken indexed collateralMarket,\\n        IVToken indexed borrowedMarket,\\n        uint256 borrowedAmountSeed,\\n        uint256 borrowedAmountToFlashLoan\\n    );\\n\\n    /// @notice Emitted when a user exits a leveraged position\\n    /// @param user The address of the user exiting the position\\n    /// @param collateralMarket The vToken market being redeemed\\n    /// @param collateralAmountToRedeemForSwap The amount of collateral being redeemed for swap\\n    /// @param borrowedMarket The vToken market being repaid\\n    /// @param borrowedAmountToFlashLoan The amount being flash loaned\\n    event LeverageExited(\\n        address indexed user,\\n        IVToken indexed collateralMarket,\\n        uint256 collateralAmountToRedeemForSwap,\\n        IVToken indexed borrowedMarket,\\n        uint256 borrowedAmountToFlashLoan\\n    );\\n\\n    /// @notice Emitted when a user exits a leveraged position with single collateral asset\\n    /// @param user The address of the user exiting the position\\n    /// @param collateralMarket The vToken market used for both collateral and borrowed asset\\n    /// @param collateralAmountToFlashLoan The amount being flash loaned\\n    event SingleAssetLeverageExited(\\n        address indexed user,\\n        IVToken indexed collateralMarket,\\n        uint256 collateralAmountToFlashLoan\\n    );\\n\\n    /**\\n     * @notice Enumeration of operation types for flash loan callbacks\\n     * @param NONE Default value indicating no operation set\\n     * @param ENTER_SINGLE_ASSET Operation for entering a leveraged position using single asset (no swap)\\n     * @param ENTER_COLLATERAL Operation for entering a leveraged position with collateral seed\\n     * @param ENTER_BORROW Operation for entering a leveraged position with borrowed asset seed\\n     * @param EXIT_COLLATERAL Operation for exiting a leveraged position with swap\\n     * @param EXIT_SINGLE_ASSET Operation for exiting a leveraged position using single asset (no swap)\\n     */\\n    enum OperationType {\\n        NONE,\\n        ENTER_SINGLE_ASSET,\\n        ENTER_COLLATERAL,\\n        ENTER_BORROW,\\n        EXIT_COLLATERAL,\\n        EXIT_SINGLE_ASSET\\n    }\\n\\n    /**\\n     * @notice Enters a leveraged position using only collateral provided by the user\\n     * @dev This function flash loans additional collateral assets, amplifying the user's supplied collateral\\n     *      in the Venus protocol. The user must have delegated permission to this contract via the comptroller.\\n     *      Any remaining collateral dust after the operation is returned to the user.\\n     * @param collateralMarket The vToken market where collateral will be supplied (must not be vBNB)\\n     * @param collateralAmountSeed The initial amount of collateral the user provides (can be 0)\\n     * @param collateralAmountToFlashLoan The amount to borrow via flash loan for leverage\\n     * @custom:emits SingleAssetLeverageEntered\\n     * @custom:error NotAnApprovedDelegate if caller has not delegated to this contract\\n     * @custom:error AccrueInterestFailed if interest accrual fails on the collateral market\\n     * @custom:error MarketNotListed if the market is not listed in Comptroller\\n     * @custom:error VBNBNotSupported if the market is vBNB\\n     * @custom:error OperationCausesLiquidation if the operation would make the account unsafe\\n     * @custom:error TransferFromUserFailed if seed amount transfer from user fails\\n     * @custom:error MintBehalfFailed if mint behalf operation fails\\n     * @custom:error BorrowBehalfFailed if borrow behalf operation fails\\n     */\\n    function enterSingleAssetLeverage(\\n        IVToken collateralMarket,\\n        uint256 collateralAmountSeed,\\n        uint256 collateralAmountToFlashLoan\\n    ) external;\\n\\n    /**\\n     * @notice Enters a leveraged position by borrowing assets and converting them to collateral\\n     * @dev This function uses flash loans to borrow assets, swaps them for collateral tokens,\\n     *      and supplies the collateral to the Venus protocol to amplify the user's position.\\n     *      The user must have delegated permission to this contract via the comptroller.\\n     *      Any remaining dust (both collateral and borrowed assets) after the operation is returned to the user.\\n     * @param collateralMarket The vToken market where collateral will be supplied (must not be vBNB)\\n     * @param collateralAmountSeed The initial amount of collateral the user provides (can be 0)\\n     * @param borrowedMarket The vToken market from which assets will be borrowed via flash loan (must not be vBNB)\\n     * @param borrowedAmountToFlashLoan The amount to borrow via flash loan for leverage\\n     * @param minAmountOutAfterSwap The minimum amount of collateral expected after swap (for slippage protection)\\n     * @param swapData Bytes containing swap instructions for converting borrowed assets to collateral\\n     * @custom:emits LeverageEntered\\n     * @custom:error IdenticalMarkets if collateral and borrow markets are the same\\n     * @custom:error NotAnApprovedDelegate if caller has not delegated to this contract\\n     * @custom:error AccrueInterestFailed if interest accrual fails on any market\\n     * @custom:error MarketNotListed if any market is not listed in Comptroller\\n     * @custom:error VBNBNotSupported if collateral or borrow market is vBNB\\n     * @custom:error OperationCausesLiquidation if the operation would make the account unsafe\\n     * @custom:error TransferFromUserFailed if seed amount transfer from user fails\\n     * @custom:error MintBehalfFailed if mint behalf operation fails\\n     * @custom:error BorrowBehalfFailed if borrow behalf operation fails\\n     * @custom:error TokenSwapCallFailed if token swap execution fails\\n     * @custom:error SlippageExceeded if collateral balance after swap is below minimum\\n     */\\n    function enterLeverage(\\n        IVToken collateralMarket,\\n        uint256 collateralAmountSeed,\\n        IVToken borrowedMarket,\\n        uint256 borrowedAmountToFlashLoan,\\n        uint256 minAmountOutAfterSwap,\\n        bytes calldata swapData\\n    ) external;\\n\\n    /**\\n     * @notice Enters a leveraged position by using existing borrowed assets and converting them to collateral\\n     * @dev This function uses flash loans to borrow additional assets, swaps the total borrowed amount\\n     *      for collateral tokens, and supplies the collateral to the Venus protocol to amplify the user's position.\\n     *      The user must have delegated permission to this contract via the comptroller.\\n     *      Any remaining dust (both collateral and borrowed assets) after the operation is returned to the user.\\n     * @param collateralMarket The vToken market where collateral will be supplied (must not be vBNB)\\n     * @param borrowedMarket The vToken market from which assets will be borrowed via flash loan (must not be vBNB)\\n     * @param borrowedAmountSeed The initial amount of borrowed assets the user provides (can be 0)\\n     * @param borrowedAmountToFlashLoan The additional amount to borrow via flash loan for leverage\\n     * @param minAmountOutAfterSwap The minimum amount of collateral expected after swap (for slippage protection)\\n     * @param swapData Bytes containing swap instructions for converting borrowed assets to collateral\\n     * @custom:emits LeverageEnteredFromBorrow\\n     * @custom:error IdenticalMarkets if collateral and borrow markets are the same\\n     * @custom:error NotAnApprovedDelegate if caller has not delegated to this contract\\n     * @custom:error AccrueInterestFailed if interest accrual fails on any market\\n     * @custom:error MarketNotListed if any market is not listed in Comptroller\\n     * @custom:error VBNBNotSupported if collateral or borrow market is vBNB\\n     * @custom:error OperationCausesLiquidation if the operation would make the account unsafe\\n     * @custom:error TransferFromUserFailed if seed amount transfer from user fails\\n     * @custom:error MintBehalfFailed if mint behalf operation fails\\n     * @custom:error BorrowBehalfFailed if borrow behalf operation fails\\n     * @custom:error TokenSwapCallFailed if token swap execution fails\\n     * @custom:error SlippageExceeded if collateral balance after swap is below minimum\\n     */\\n    function enterLeverageFromBorrow(\\n        IVToken collateralMarket,\\n        IVToken borrowedMarket,\\n        uint256 borrowedAmountSeed,\\n        uint256 borrowedAmountToFlashLoan,\\n        uint256 minAmountOutAfterSwap,\\n        bytes calldata swapData\\n    ) external;\\n\\n    /**\\n     * @notice Exits a leveraged position by redeeming collateral and repaying borrowed assets\\n     * @dev This function uses flash loans to temporarily repay debt, redeems collateral,\\n     *      swaps collateral for borrowed assets, and repays the flash loan. Any remaining\\n     *      dust (both collateral and borrowed assets) is returned to the user. This ensures\\n     *      users who swap more than required as protection against price volatility receive\\n     *      their excess tokens back.\\n     *\\n     *      The flash loan amount can exceed actual debt to account for interest accrual\\n     *      between transaction creation and mining. The contract caps repayment to actual\\n     *      debt and uses leftover funds toward flash loan repayment.\\n     *\\n     *      NOTE: No pre-operation safety check is performed because exiting leverage reduces\\n     *      debt exposure, which can only improve account health. Post-operation safety is\\n     *      still validated to ensure the final position is healthy.\\n     *\\n     *      IMPORTANT: If treasuryPercent() is nonzero, the user must provide a\\n     *      collateralAmountToRedeemForSwap that accounts for the treasury fee. Only\\n     *      (1 - treasuryPercent/1e18) of the redeemed amount is transferred to this contract.\\n     *      Required gross amount = netAmountNeeded * 1e18 / (1e18 - treasuryPercent)\\n     * @param collateralMarket The vToken market from which collateral will be redeemed (must not be vBNB)\\n     * @param collateralAmountToRedeemForSwap The gross amount of collateral to redeem (must account for treasury fee if nonzero)\\n     * @param borrowedMarket The vToken market where debt will be repaid via flash loan (must not be vBNB)\\n     * @param borrowedAmountToFlashLoan The amount to borrow via flash loan for debt repayment (can exceed actual debt)\\n     * @param minAmountOutAfterSwap The minimum amount of borrowed asset expected after swap (for slippage protection)\\n     * @param swapData Bytes containing swap instructions for converting collateral to borrowed assets\\n     * @custom:emits LeverageExited\\n     * @custom:error IdenticalMarkets if collateral and borrow markets are the same\\n     * @custom:error NotAnApprovedDelegate if caller has not delegated to this contract\\n     * @custom:error MarketNotListed if any market is not listed in Comptroller\\n     * @custom:error VBNBNotSupported if collateral or borrow market is vBNB\\n     * @custom:error OperationCausesLiquidation if the operation would make the account unsafe\\n     * @custom:error RepayBehalfFailed if repay operation fails\\n     * @custom:error RedeemBehalfFailed if redeem operation fails\\n     * @custom:error TokenSwapCallFailed if token swap execution fails\\n     * @custom:error SlippageExceeded if swap output is below minimum required\\n     * @custom:error InsufficientFundsToRepayFlashloan if insufficient funds to repay flash loan\\n     */\\n    function exitLeverage(\\n        IVToken collateralMarket,\\n        uint256 collateralAmountToRedeemForSwap,\\n        IVToken borrowedMarket,\\n        uint256 borrowedAmountToFlashLoan,\\n        uint256 minAmountOutAfterSwap,\\n        bytes calldata swapData\\n    ) external;\\n\\n    /**\\n     * @notice Exits a leveraged position when collateral and borrowed assets are the same token\\n     * @dev This function uses flash loans to temporarily repay debt, redeems collateral,\\n     *      and repays the flash loan without requiring token swaps. This is more gas-efficient\\n     *      than exitLeverage when dealing with single-asset positions. Any remaining collateral\\n     *      dust after the operation is returned to the user.\\n     *\\n     *      The flash loan amount can exceed actual debt to account for interest accrual\\n     *      between transaction creation and mining. The contract caps repayment to actual\\n     *      debt and uses leftover funds toward flash loan repayment.\\n     *\\n     *      If treasuryPercent() is nonzero, the contract automatically adjusts the redeem\\n     *      amount to ensure sufficient funds are received to repay the flash loan after the\\n     *      treasury fee deduction.\\n     *\\n     *      NOTE: No pre-operation safety check is performed because exiting leverage reduces\\n     *      debt exposure, which can only improve account health. Post-operation safety is\\n     *      still validated to ensure the final position is healthy.\\n     * @param collateralMarket The vToken market for both collateral and borrowed asset (must not be vBNB)\\n     * @param collateralAmountToFlashLoan The amount to borrow via flash loan for debt repayment (can exceed actual debt)\\n     * @custom:emits SingleAssetLeverageExited\\n     * @custom:error NotAnApprovedDelegate if caller has not delegated to this contract\\n     * @custom:error MarketNotListed if the market is not listed in Comptroller\\n     * @custom:error VBNBNotSupported if the market is vBNB\\n     * @custom:error OperationCausesLiquidation if the operation would make the account unsafe\\n     * @custom:error RepayBehalfFailed if repay operation fails\\n     * @custom:error RedeemBehalfFailed if redeem operation fails\\n     * @custom:error InsufficientFundsToRepayFlashloan if insufficient funds to repay flash loan\\n     */\\n    function exitSingleAssetLeverage(IVToken collateralMarket, uint256 collateralAmountToFlashLoan) external;\\n}\\n\",\"keccak256\":\"0x3f23cd2776950188bfe1e3f32a77ad71860cf2996c0df1abff87f86e3da4b4f9\",\"license\":\"BSD-3-Clause\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"events":{"DustTransferred(address,address,uint256)":{"notice":"Emitted when dust amounts are transferred after a leverage operation"},"LeverageEntered(address,address,uint256,address,uint256)":{"notice":"Emitted when a user enters a leveraged position with collateral seed"},"LeverageEnteredFromBorrow(address,address,address,uint256,uint256)":{"notice":"Emitted when a user enters a leveraged position with borrowed asset seed"},"LeverageExited(address,address,uint256,address,uint256)":{"notice":"Emitted when a user exits a leveraged position"},"SingleAssetLeverageEntered(address,address,uint256,uint256)":{"notice":"Emitted when a user enters a leveraged position with single collateral asset"},"SingleAssetLeverageExited(address,address,uint256)":{"notice":"Emitted when a user exits a leveraged position with single collateral asset"}},"kind":"user","methods":{"enterLeverage(address,uint256,address,uint256,uint256,bytes)":{"notice":"Enters a leveraged position by borrowing assets and converting them to collateral"},"enterLeverageFromBorrow(address,address,uint256,uint256,uint256,bytes)":{"notice":"Enters a leveraged position by using existing borrowed assets and converting them to collateral"},"enterSingleAssetLeverage(address,uint256,uint256)":{"notice":"Enters a leveraged position using only collateral provided by the user"},"exitLeverage(address,uint256,address,uint256,uint256,bytes)":{"notice":"Exits a leveraged position by redeeming collateral and repaying borrowed assets"},"exitSingleAssetLeverage(address,uint256)":{"notice":"Exits a leveraged position when collateral and borrowed assets are the same token"}},"notice":"Interface for the Leverage Strategies Manager contract","version":1}}},"contracts/LeverageManager/LeverageStrategiesManager.sol":{"LeverageStrategiesManager":{"abi":[{"inputs":[{"internalType":"contract IComptroller","name":"_comptroller","type":"address"},{"internalType":"contract SwapHelper","name":"_swapHelper","type":"address"},{"internalType":"contract IVToken","name":"_vBNB","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"errorCode","type":"uint256"}],"name":"AccrueInterestFailed","type":"error"},{"inputs":[{"internalType":"uint256","name":"errorCode","type":"uint256"}],"name":"BorrowBehalfFailed","type":"error"},{"inputs":[{"internalType":"uint256","name":"err","type":"uint256"}],"name":"EnterMarketFailed","type":"error"},{"inputs":[],"name":"FlashLoanAssetOrAmountMismatch","type":"error"},{"inputs":[],"name":"IdenticalMarkets","type":"error"},{"inputs":[],"name":"InitiatorMismatch","type":"error"},{"inputs":[],"name":"InsufficientFundsToRepayFlashloan","type":"error"},{"inputs":[],"name":"InvalidExecuteOperation","type":"error"},{"inputs":[{"internalType":"address","name":"market","type":"address"}],"name":"MarketNotListed","type":"error"},{"inputs":[{"internalType":"uint256","name":"errorCode","type":"uint256"}],"name":"MintBehalfFailed","type":"error"},{"inputs":[],"name":"NotAnApprovedDelegate","type":"error"},{"inputs":[],"name":"OnBehalfMismatch","type":"error"},{"inputs":[{"internalType":"uint256","name":"errorCode","type":"uint256"}],"name":"OperationCausesLiquidation","type":"error"},{"inputs":[{"internalType":"uint256","name":"errorCode","type":"uint256"}],"name":"RedeemBehalfFailed","type":"error"},{"inputs":[{"internalType":"uint256","name":"errorCode","type":"uint256"}],"name":"RepayBehalfFailed","type":"error"},{"inputs":[],"name":"SlippageExceeded","type":"error"},{"inputs":[],"name":"TokenSwapCallFailed","type":"error"},{"inputs":[],"name":"UnauthorizedExecutor","type":"error"},{"inputs":[],"name":"VBNBNotSupported","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"inputs":[],"name":"ZeroFlashLoanAmount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"DustTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"contract IVToken","name":"collateralMarket","type":"address"},{"indexed":false,"internalType":"uint256","name":"collateralAmountSeed","type":"uint256"},{"indexed":true,"internalType":"contract IVToken","name":"borrowedMarket","type":"address"},{"indexed":false,"internalType":"uint256","name":"borrowedAmountToFlashLoan","type":"uint256"}],"name":"LeverageEntered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"contract IVToken","name":"collateralMarket","type":"address"},{"indexed":true,"internalType":"contract IVToken","name":"borrowedMarket","type":"address"},{"indexed":false,"internalType":"uint256","name":"borrowedAmountSeed","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"borrowedAmountToFlashLoan","type":"uint256"}],"name":"LeverageEnteredFromBorrow","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"contract IVToken","name":"collateralMarket","type":"address"},{"indexed":false,"internalType":"uint256","name":"collateralAmountToRedeemForSwap","type":"uint256"},{"indexed":true,"internalType":"contract IVToken","name":"borrowedMarket","type":"address"},{"indexed":false,"internalType":"uint256","name":"borrowedAmountToFlashLoan","type":"uint256"}],"name":"LeverageExited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"contract IVToken","name":"collateralMarket","type":"address"},{"indexed":false,"internalType":"uint256","name":"collateralAmountSeed","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"collateralAmountToFlashLoan","type":"uint256"}],"name":"SingleAssetLeverageEntered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"contract IVToken","name":"collateralMarket","type":"address"},{"indexed":false,"internalType":"uint256","name":"collateralAmountToFlashLoan","type":"uint256"}],"name":"SingleAssetLeverageExited","type":"event"},{"inputs":[],"name":"COMPTROLLER","outputs":[{"internalType":"contract IComptroller","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IVToken","name":"_collateralMarket","type":"address"},{"internalType":"uint256","name":"_collateralAmountSeed","type":"uint256"},{"internalType":"contract IVToken","name":"_borrowedMarket","type":"address"},{"internalType":"uint256","name":"_borrowedAmountToFlashLoan","type":"uint256"},{"internalType":"uint256","name":"_minAmountOutAfterSwap","type":"uint256"},{"internalType":"bytes","name":"_swapData","type":"bytes"}],"name":"enterLeverage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IVToken","name":"_collateralMarket","type":"address"},{"internalType":"contract IVToken","name":"_borrowedMarket","type":"address"},{"internalType":"uint256","name":"_borrowedAmountSeed","type":"uint256"},{"internalType":"uint256","name":"_borrowedAmountToFlashLoan","type":"uint256"},{"internalType":"uint256","name":"_minAmountOutAfterSwap","type":"uint256"},{"internalType":"bytes","name":"_swapData","type":"bytes"}],"name":"enterLeverageFromBorrow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IVToken","name":"_collateralMarket","type":"address"},{"internalType":"uint256","name":"_collateralAmountSeed","type":"uint256"},{"internalType":"uint256","name":"_collateralAmountToFlashLoan","type":"uint256"}],"name":"enterSingleAssetLeverage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IVToken[]","name":"vTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256[]","name":"premiums","type":"uint256[]"},{"internalType":"address","name":"initiator","type":"address"},{"internalType":"address","name":"onBehalf","type":"address"},{"internalType":"bytes","name":"param","type":"bytes"}],"name":"executeOperation","outputs":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"uint256[]","name":"repayAmounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IVToken","name":"_collateralMarket","type":"address"},{"internalType":"uint256","name":"_collateralAmountToRedeemForSwap","type":"uint256"},{"internalType":"contract IVToken","name":"_borrowedMarket","type":"address"},{"internalType":"uint256","name":"_borrowedAmountToFlashLoan","type":"uint256"},{"internalType":"uint256","name":"_minAmountOutAfterSwap","type":"uint256"},{"internalType":"bytes","name":"_swapData","type":"bytes"}],"name":"exitLeverage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IVToken","name":"_collateralMarket","type":"address"},{"internalType":"uint256","name":"_collateralAmountToFlashLoan","type":"uint256"}],"name":"exitSingleAssetLeverage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapHelper","outputs":[{"internalType":"contract SwapHelper","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vBNB","outputs":[{"internalType":"contract IVToken","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Venus Protocol","errors":{"AccrueInterestFailed(uint256)":[{"custom:error":"AccrueInterestFailed accrueInterest on a vToken market returned a non-zero error code"}],"BorrowBehalfFailed(uint256)":[{"custom:error":"BorrowBehalfFailed borrowBehalf on a vToken market returned a non-zero error code"}],"EnterMarketFailed(uint256)":[{"custom:error":"EnterMarketFailed Comptroller.enterMarketBehalf returned a non-zero error code"}],"FlashLoanAssetOrAmountMismatch()":[{"custom:error":"FlashLoanAssetOrAmountMismatch Invalid flash loan arrays length or >1 elements"}],"IdenticalMarkets()":[{"custom:error":"IdenticalMarkets Collateral and borrow markets cannot be the same"}],"InitiatorMismatch()":[{"custom:error":"InitiatorMismatch Invalid initiator address in flash loan callback"}],"InsufficientFundsToRepayFlashloan()":[{"custom:error":"InsufficientFundsToRepayFlashloan Not enough proceeds to repay flash loan plus fees"}],"InvalidExecuteOperation()":[{"custom:error":"InvalidExecuteOperation Unknown operation type in flash loan callback"}],"MarketNotListed(address)":[{"custom:error":"MarketNotListed Provided vToken market is not listed in Comptroller"}],"MintBehalfFailed(uint256)":[{"custom:error":"MintBehalfFailed mintBehalf on a vToken market returned a non-zero error code"}],"NotAnApprovedDelegate()":[{"custom:error":"NotAnApprovedDelegate User has not approved this contract as a delegate"}],"OnBehalfMismatch()":[{"custom:error":"OnBehalfMismatch Invalid onBehalf address in flash loan callback"}],"OperationCausesLiquidation(uint256)":[{"custom:error":"OperationCausesLiquidation Operation would put the account at risk (undercollateralized) returns a non-zero error code from getBorrowingPower"}],"RedeemBehalfFailed(uint256)":[{"custom:error":"RedeemBehalfFailed redeemBehalf on a vToken market returned a non-zero error code"}],"RepayBehalfFailed(uint256)":[{"custom:error":"RepayBehalfFailed repayBehalf on a vToken market returned a non-zero error code"}],"SlippageExceeded()":[{"custom:error":"SlippageExceeded Swap output lower than required minimum"}],"TokenSwapCallFailed()":[{"custom:error":"TokenSwapCallFailed Swap helper call reverted or returned false"}],"UnauthorizedExecutor()":[{"custom:error":"UnauthorizedExecutor Caller is not the expected Comptroller"}],"VBNBNotSupported()":[{"custom:error":"VBNBNotSupported vBNB market is not supported for leverage operations"}],"ZeroAddress()":[{"custom:error":"ZeroAddress One of the required addresses is zero"}],"ZeroFlashLoanAmount()":[{"custom:error":"ZeroFlashLoanAmount Flash loan amount cannot be zero"}]},"events":{"DustTransferred(address,address,uint256)":{"params":{"amount":"The amount of dust transferred","recipient":"The address receiving the dust (user or protocol share reserve)","token":"The underlying token address"}},"Initialized(uint8)":{"details":"Triggered when the contract has been initialized or reinitialized."},"LeverageEntered(address,address,uint256,address,uint256)":{"params":{"borrowedAmountToFlashLoan":"The amount being flash loaned","borrowedMarket":"The vToken market being borrowed from","collateralAmountSeed":"The initial collateral amount provided by the user","collateralMarket":"The vToken market used as collateral","user":"The address of the user entering the position"}},"LeverageEnteredFromBorrow(address,address,address,uint256,uint256)":{"params":{"borrowedAmountSeed":"The initial borrowed asset amount provided by the user","borrowedAmountToFlashLoan":"The amount being flash loaned","borrowedMarket":"The vToken market being borrowed from","collateralMarket":"The vToken market used as collateral","user":"The address of the user entering the position"}},"LeverageExited(address,address,uint256,address,uint256)":{"params":{"borrowedAmountToFlashLoan":"The amount being flash loaned","borrowedMarket":"The vToken market being repaid","collateralAmountToRedeemForSwap":"The amount of collateral being redeemed for swap","collateralMarket":"The vToken market being redeemed","user":"The address of the user exiting the position"}},"SingleAssetLeverageEntered(address,address,uint256,uint256)":{"params":{"collateralAmountSeed":"The initial collateral amount provided by the user","collateralAmountToFlashLoan":"The amount being flash loaned","collateralMarket":"The vToken market used as collateral","user":"The address of the user entering the position"}},"SingleAssetLeverageExited(address,address,uint256)":{"params":{"collateralAmountToFlashLoan":"The amount being flash loaned","collateralMarket":"The vToken market used for both collateral and borrowed asset","user":"The address of the user exiting the position"}}},"kind":"dev","methods":{"acceptOwnership()":{"details":"The new owner accepts the ownership transfer."},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor","details":"Sets immutable variables and disables initializers for the implementation contract","params":{"_comptroller":"The Venus comptroller contract address","_swapHelper":"The swap helper contract address","_vBNB":"The vBNB market address (not supported for leverage operations)"}},"enterLeverage(address,uint256,address,uint256,uint256,bytes)":{"details":"This function uses flash loans to borrow assets, swaps them for collateral tokens,      and supplies the collateral to the Venus protocol to amplify the user's position.      The user must have delegated permission to this contract via the comptroller.      Any remaining dust (both collateral and borrowed assets) after the operation is returned to the user.","params":{"borrowedAmountToFlashLoan":"The amount to borrow via flash loan for leverage","borrowedMarket":"The vToken market from which assets will be borrowed via flash loan (must not be vBNB)","collateralAmountSeed":"The initial amount of collateral the user provides (can be 0)","collateralMarket":"The vToken market where collateral will be supplied (must not be vBNB)","minAmountOutAfterSwap":"The minimum amount of collateral expected after swap (for slippage protection)","swapData":"Bytes containing swap instructions for converting borrowed assets to collateral"}},"enterLeverageFromBorrow(address,address,uint256,uint256,uint256,bytes)":{"details":"This function uses flash loans to borrow additional assets, swaps the total borrowed amount      for collateral tokens, and supplies the collateral to the Venus protocol to amplify the user's position.      The user must have delegated permission to this contract via the comptroller.      Any remaining dust (both collateral and borrowed assets) after the operation is returned to the user.","params":{"borrowedAmountSeed":"The initial amount of borrowed assets the user provides (can be 0)","borrowedAmountToFlashLoan":"The additional amount to borrow via flash loan for leverage","borrowedMarket":"The vToken market from which assets will be borrowed via flash loan (must not be vBNB)","collateralMarket":"The vToken market where collateral will be supplied (must not be vBNB)","minAmountOutAfterSwap":"The minimum amount of collateral expected after swap (for slippage protection)","swapData":"Bytes containing swap instructions for converting borrowed assets to collateral"}},"enterSingleAssetLeverage(address,uint256,uint256)":{"details":"This function flash loans additional collateral assets, amplifying the user's supplied collateral      in the Venus protocol. The user must have delegated permission to this contract via the comptroller.      Any remaining collateral dust after the operation is returned to the user.","params":{"collateralAmountSeed":"The initial amount of collateral the user provides (can be 0)","collateralAmountToFlashLoan":"The amount to borrow via flash loan for leverage","collateralMarket":"The vToken market where collateral will be supplied (must not be vBNB)"}},"executeOperation(address[],uint256[],uint256[],address,address,bytes)":{"custom:error":"InitiatorMismatch When initiator is not this contractOnBehalfMismatch When onBehalf is not the operation initiatorUnauthorizedExecutor When caller is not the ComptrollerFlashLoanAssetOrAmountMismatch When array lengths mismatch or > 1 elementInvalidExecuteOperation When operation type is unknown","details":"Protected by nonReentrant modifier to prevent reentrancy attacks during flash loan execution","params":{"amounts":"Array with the borrowed underlying amount (single element)","initiator":"The address that initiated the flash loan (must be this contract)","onBehalf":"The user for whom debt will be opened","param":"Encoded auxiliary data for the operation (e.g., swap multicall)","premiums":"Array with the flash loan fee amount (single element)","vTokens":"Array with the borrowed vToken market (single element)"},"returns":{"repayAmounts":"Amounts to approve for flash loan repayment","success":"Whether the execution succeeded"}},"exitLeverage(address,uint256,address,uint256,uint256,bytes)":{"details":"This function uses flash loans to temporarily repay debt, redeems collateral,      swaps collateral for borrowed assets, and repays the flash loan. Any remaining      dust (both collateral and borrowed assets) is returned to the user. This ensures      users who swap more than required as protection against price volatility receive      their excess tokens back.      The flash loan amount can exceed actual debt to account for interest accrual      between transaction creation and mining. The contract caps repayment to actual      debt and uses leftover funds toward flash loan repayment.      NOTE: No pre-operation safety check is performed because exiting leverage reduces      debt exposure, which can only improve account health. Post-operation safety is      still validated to ensure the final position is healthy.      IMPORTANT: If treasuryPercent() is nonzero, the user must provide a      collateralAmountToRedeemForSwap that accounts for the treasury fee. Only      (1 - treasuryPercent/1e18) of the redeemed amount is transferred to this contract.      Required gross amount = netAmountNeeded * 1e18 / (1e18 - treasuryPercent)","params":{"borrowedAmountToFlashLoan":"The amount to borrow via flash loan for debt repayment (can exceed actual debt)","borrowedMarket":"The vToken market where debt will be repaid via flash loan (must not be vBNB)","collateralAmountToRedeemForSwap":"The gross amount of collateral to redeem (must account for treasury fee if nonzero)","collateralMarket":"The vToken market from which collateral will be redeemed (must not be vBNB)","minAmountOutAfterSwap":"The minimum amount of borrowed asset expected after swap (for slippage protection)","swapData":"Bytes containing swap instructions for converting collateral to borrowed assets"}},"exitSingleAssetLeverage(address,uint256)":{"details":"This function uses flash loans to temporarily repay debt, redeems collateral,      and repays the flash loan without requiring token swaps. This is more gas-efficient      than exitLeverage when dealing with single-asset positions. Any remaining collateral      dust after the operation is returned to the user.      The flash loan amount can exceed actual debt to account for interest accrual      between transaction creation and mining. The contract caps repayment to actual      debt and uses leftover funds toward flash loan repayment.      If treasuryPercent() is nonzero, the contract automatically adjusts the redeem      amount to ensure sufficient funds are received to repay the flash loan after the      treasury fee deduction.      NOTE: No pre-operation safety check is performed because exiting leverage reduces      debt exposure, which can only improve account health. Post-operation safety is      still validated to ensure the final position is healthy.","params":{"collateralAmountToFlashLoan":"The amount to borrow via flash loan for debt repayment (can exceed actual debt)","collateralMarket":"The vToken market for both collateral and borrowed asset (must not be vBNB)"}},"initialize()":{"details":"Sets up the Ownable2Step functionality. Can only be called once."},"owner()":{"details":"Returns the address of the current owner."},"pendingOwner()":{"details":"Returns the address of the pending owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner."}},"stateVariables":{"MANTISSA_ONE":{"details":"Mantissa for fixed-point arithmetic (1e18 = 100%)"},"SUCCESS":{"details":"Success return value for VToken operations (mint, borrow, repay, redeem)"},"borrowedAmountSeed":{"details":"Transient (EIP-1153): Cleared at transaction end. Stores borrowed amount seed for enterLeverageFromBorrow."},"collateralAmount":{"details":"Transient (EIP-1153): Cleared at transaction end. Stores collateral seed (enter) or redeem amount (exit)."},"collateralMarket":{"details":"Transient (EIP-1153): Cleared at transaction end. Stores collateral market for flash loan callback."},"minAmountOutAfterSwap":{"details":"Transient (EIP-1153): Cleared at transaction end. Stores minimum expected output after swap."},"operationInitiator":{"details":"Transient (EIP-1153): Cleared at transaction end. Stores msg.sender for flash loan callback context."},"operationType":{"details":"Transient (EIP-1153): Cleared at transaction end. Tracks operation type during flash loan callback."}},"title":"LeverageStrategiesManager","version":1},"evm":{"bytecode":{"functionDebugData":{"@_5883":{"entryPoint":null,"id":5883,"parameterSlots":3,"returnSlots":0},"@_disableInitializers_435":{"entryPoint":164,"id":435,"parameterSlots":0,"returnSlots":0},"abi_decode_t_contract$_IComptroller_$5454_fromMemory":{"entryPoint":346,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_contract$_IVToken_$5277_fromMemory":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_contract$_SwapHelper_$8322_fromMemory":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IComptroller_$5454t_contract$_SwapHelper_$8322t_contract$_IVToken_$5277_fromMemory":{"entryPoint":357,"id":null,"parameterSlots":2,"returnSlots":3},"abi_encode_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a_to_t_string_memory_ptr_fromStack":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_uint8_to_t_uint8_fromStack":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":433,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":508,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_unbounded":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_address":{"entryPoint":296,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_contract$_IComptroller_$5454":{"entryPoint":314,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_contract$_IVToken_$5277":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_contract$_SwapHelper_$8322":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint8":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"store_literal_in_memory_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_contract$_IComptroller_$5454":{"entryPoint":324,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_contract$_IVToken_$5277":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_contract$_SwapHelper_$8322":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:4397:55","nodeType":"YulBlock","src":"0:4397:55","statements":[{"body":{"nativeSrc":"47:35:55","nodeType":"YulBlock","src":"47:35:55","statements":[{"nativeSrc":"57:19:55","nodeType":"YulAssignment","src":"57:19:55","value":{"arguments":[{"kind":"number","nativeSrc":"73:2:55","nodeType":"YulLiteral","src":"73:2:55","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"67:5:55","nodeType":"YulIdentifier","src":"67:5:55"},"nativeSrc":"67:9:55","nodeType":"YulFunctionCall","src":"67:9:55"},"variableNames":[{"name":"memPtr","nativeSrc":"57:6:55","nodeType":"YulIdentifier","src":"57:6:55"}]}]},"name":"allocate_unbounded","nativeSrc":"7:75:55","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"40:6:55","nodeType":"YulTypedName","src":"40:6:55","type":""}],"src":"7:75:55"},{"body":{"nativeSrc":"177:28:55","nodeType":"YulBlock","src":"177:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"194:1:55","nodeType":"YulLiteral","src":"194:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"197:1:55","nodeType":"YulLiteral","src":"197:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"187:6:55","nodeType":"YulIdentifier","src":"187:6:55"},"nativeSrc":"187:12:55","nodeType":"YulFunctionCall","src":"187:12:55"},"nativeSrc":"187:12:55","nodeType":"YulExpressionStatement","src":"187:12:55"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"88:117:55","nodeType":"YulFunctionDefinition","src":"88:117:55"},{"body":{"nativeSrc":"300:28:55","nodeType":"YulBlock","src":"300:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"317:1:55","nodeType":"YulLiteral","src":"317:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"320:1:55","nodeType":"YulLiteral","src":"320:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"310:6:55","nodeType":"YulIdentifier","src":"310:6:55"},"nativeSrc":"310:12:55","nodeType":"YulFunctionCall","src":"310:12:55"},"nativeSrc":"310:12:55","nodeType":"YulExpressionStatement","src":"310:12:55"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"211:117:55","nodeType":"YulFunctionDefinition","src":"211:117:55"},{"body":{"nativeSrc":"379:81:55","nodeType":"YulBlock","src":"379:81:55","statements":[{"nativeSrc":"389:65:55","nodeType":"YulAssignment","src":"389:65:55","value":{"arguments":[{"name":"value","nativeSrc":"404:5:55","nodeType":"YulIdentifier","src":"404:5:55"},{"kind":"number","nativeSrc":"411:42:55","nodeType":"YulLiteral","src":"411:42:55","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"400:3:55","nodeType":"YulIdentifier","src":"400:3:55"},"nativeSrc":"400:54:55","nodeType":"YulFunctionCall","src":"400:54:55"},"variableNames":[{"name":"cleaned","nativeSrc":"389:7:55","nodeType":"YulIdentifier","src":"389:7:55"}]}]},"name":"cleanup_t_uint160","nativeSrc":"334:126:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"361:5:55","nodeType":"YulTypedName","src":"361:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"371:7:55","nodeType":"YulTypedName","src":"371:7:55","type":""}],"src":"334:126:55"},{"body":{"nativeSrc":"511:51:55","nodeType":"YulBlock","src":"511:51:55","statements":[{"nativeSrc":"521:35:55","nodeType":"YulAssignment","src":"521:35:55","value":{"arguments":[{"name":"value","nativeSrc":"550:5:55","nodeType":"YulIdentifier","src":"550:5:55"}],"functionName":{"name":"cleanup_t_uint160","nativeSrc":"532:17:55","nodeType":"YulIdentifier","src":"532:17:55"},"nativeSrc":"532:24:55","nodeType":"YulFunctionCall","src":"532:24:55"},"variableNames":[{"name":"cleaned","nativeSrc":"521:7:55","nodeType":"YulIdentifier","src":"521:7:55"}]}]},"name":"cleanup_t_address","nativeSrc":"466:96:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"493:5:55","nodeType":"YulTypedName","src":"493:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"503:7:55","nodeType":"YulTypedName","src":"503:7:55","type":""}],"src":"466:96:55"},{"body":{"nativeSrc":"634:51:55","nodeType":"YulBlock","src":"634:51:55","statements":[{"nativeSrc":"644:35:55","nodeType":"YulAssignment","src":"644:35:55","value":{"arguments":[{"name":"value","nativeSrc":"673:5:55","nodeType":"YulIdentifier","src":"673:5:55"}],"functionName":{"name":"cleanup_t_address","nativeSrc":"655:17:55","nodeType":"YulIdentifier","src":"655:17:55"},"nativeSrc":"655:24:55","nodeType":"YulFunctionCall","src":"655:24:55"},"variableNames":[{"name":"cleaned","nativeSrc":"644:7:55","nodeType":"YulIdentifier","src":"644:7:55"}]}]},"name":"cleanup_t_contract$_IComptroller_$5454","nativeSrc":"568:117:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"616:5:55","nodeType":"YulTypedName","src":"616:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"626:7:55","nodeType":"YulTypedName","src":"626:7:55","type":""}],"src":"568:117:55"},{"body":{"nativeSrc":"755:100:55","nodeType":"YulBlock","src":"755:100:55","statements":[{"body":{"nativeSrc":"833:16:55","nodeType":"YulBlock","src":"833:16:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"842:1:55","nodeType":"YulLiteral","src":"842:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"845:1:55","nodeType":"YulLiteral","src":"845:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"835:6:55","nodeType":"YulIdentifier","src":"835:6:55"},"nativeSrc":"835:12:55","nodeType":"YulFunctionCall","src":"835:12:55"},"nativeSrc":"835:12:55","nodeType":"YulExpressionStatement","src":"835:12:55"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"778:5:55","nodeType":"YulIdentifier","src":"778:5:55"},{"arguments":[{"name":"value","nativeSrc":"824:5:55","nodeType":"YulIdentifier","src":"824:5:55"}],"functionName":{"name":"cleanup_t_contract$_IComptroller_$5454","nativeSrc":"785:38:55","nodeType":"YulIdentifier","src":"785:38:55"},"nativeSrc":"785:45:55","nodeType":"YulFunctionCall","src":"785:45:55"}],"functionName":{"name":"eq","nativeSrc":"775:2:55","nodeType":"YulIdentifier","src":"775:2:55"},"nativeSrc":"775:56:55","nodeType":"YulFunctionCall","src":"775:56:55"}],"functionName":{"name":"iszero","nativeSrc":"768:6:55","nodeType":"YulIdentifier","src":"768:6:55"},"nativeSrc":"768:64:55","nodeType":"YulFunctionCall","src":"768:64:55"},"nativeSrc":"765:84:55","nodeType":"YulIf","src":"765:84:55"}]},"name":"validator_revert_t_contract$_IComptroller_$5454","nativeSrc":"691:164:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"748:5:55","nodeType":"YulTypedName","src":"748:5:55","type":""}],"src":"691:164:55"},{"body":{"nativeSrc":"945:101:55","nodeType":"YulBlock","src":"945:101:55","statements":[{"nativeSrc":"955:22:55","nodeType":"YulAssignment","src":"955:22:55","value":{"arguments":[{"name":"offset","nativeSrc":"970:6:55","nodeType":"YulIdentifier","src":"970:6:55"}],"functionName":{"name":"mload","nativeSrc":"964:5:55","nodeType":"YulIdentifier","src":"964:5:55"},"nativeSrc":"964:13:55","nodeType":"YulFunctionCall","src":"964:13:55"},"variableNames":[{"name":"value","nativeSrc":"955:5:55","nodeType":"YulIdentifier","src":"955:5:55"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"1034:5:55","nodeType":"YulIdentifier","src":"1034:5:55"}],"functionName":{"name":"validator_revert_t_contract$_IComptroller_$5454","nativeSrc":"986:47:55","nodeType":"YulIdentifier","src":"986:47:55"},"nativeSrc":"986:54:55","nodeType":"YulFunctionCall","src":"986:54:55"},"nativeSrc":"986:54:55","nodeType":"YulExpressionStatement","src":"986:54:55"}]},"name":"abi_decode_t_contract$_IComptroller_$5454_fromMemory","nativeSrc":"861:185:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"923:6:55","nodeType":"YulTypedName","src":"923:6:55","type":""},{"name":"end","nativeSrc":"931:3:55","nodeType":"YulTypedName","src":"931:3:55","type":""}],"returnVariables":[{"name":"value","nativeSrc":"939:5:55","nodeType":"YulTypedName","src":"939:5:55","type":""}],"src":"861:185:55"},{"body":{"nativeSrc":"1116:51:55","nodeType":"YulBlock","src":"1116:51:55","statements":[{"nativeSrc":"1126:35:55","nodeType":"YulAssignment","src":"1126:35:55","value":{"arguments":[{"name":"value","nativeSrc":"1155:5:55","nodeType":"YulIdentifier","src":"1155:5:55"}],"functionName":{"name":"cleanup_t_address","nativeSrc":"1137:17:55","nodeType":"YulIdentifier","src":"1137:17:55"},"nativeSrc":"1137:24:55","nodeType":"YulFunctionCall","src":"1137:24:55"},"variableNames":[{"name":"cleaned","nativeSrc":"1126:7:55","nodeType":"YulIdentifier","src":"1126:7:55"}]}]},"name":"cleanup_t_contract$_SwapHelper_$8322","nativeSrc":"1052:115:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1098:5:55","nodeType":"YulTypedName","src":"1098:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"1108:7:55","nodeType":"YulTypedName","src":"1108:7:55","type":""}],"src":"1052:115:55"},{"body":{"nativeSrc":"1235:98:55","nodeType":"YulBlock","src":"1235:98:55","statements":[{"body":{"nativeSrc":"1311:16:55","nodeType":"YulBlock","src":"1311:16:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1320:1:55","nodeType":"YulLiteral","src":"1320:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"1323:1:55","nodeType":"YulLiteral","src":"1323:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1313:6:55","nodeType":"YulIdentifier","src":"1313:6:55"},"nativeSrc":"1313:12:55","nodeType":"YulFunctionCall","src":"1313:12:55"},"nativeSrc":"1313:12:55","nodeType":"YulExpressionStatement","src":"1313:12:55"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1258:5:55","nodeType":"YulIdentifier","src":"1258:5:55"},{"arguments":[{"name":"value","nativeSrc":"1302:5:55","nodeType":"YulIdentifier","src":"1302:5:55"}],"functionName":{"name":"cleanup_t_contract$_SwapHelper_$8322","nativeSrc":"1265:36:55","nodeType":"YulIdentifier","src":"1265:36:55"},"nativeSrc":"1265:43:55","nodeType":"YulFunctionCall","src":"1265:43:55"}],"functionName":{"name":"eq","nativeSrc":"1255:2:55","nodeType":"YulIdentifier","src":"1255:2:55"},"nativeSrc":"1255:54:55","nodeType":"YulFunctionCall","src":"1255:54:55"}],"functionName":{"name":"iszero","nativeSrc":"1248:6:55","nodeType":"YulIdentifier","src":"1248:6:55"},"nativeSrc":"1248:62:55","nodeType":"YulFunctionCall","src":"1248:62:55"},"nativeSrc":"1245:82:55","nodeType":"YulIf","src":"1245:82:55"}]},"name":"validator_revert_t_contract$_SwapHelper_$8322","nativeSrc":"1173:160:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1228:5:55","nodeType":"YulTypedName","src":"1228:5:55","type":""}],"src":"1173:160:55"},{"body":{"nativeSrc":"1421:99:55","nodeType":"YulBlock","src":"1421:99:55","statements":[{"nativeSrc":"1431:22:55","nodeType":"YulAssignment","src":"1431:22:55","value":{"arguments":[{"name":"offset","nativeSrc":"1446:6:55","nodeType":"YulIdentifier","src":"1446:6:55"}],"functionName":{"name":"mload","nativeSrc":"1440:5:55","nodeType":"YulIdentifier","src":"1440:5:55"},"nativeSrc":"1440:13:55","nodeType":"YulFunctionCall","src":"1440:13:55"},"variableNames":[{"name":"value","nativeSrc":"1431:5:55","nodeType":"YulIdentifier","src":"1431:5:55"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"1508:5:55","nodeType":"YulIdentifier","src":"1508:5:55"}],"functionName":{"name":"validator_revert_t_contract$_SwapHelper_$8322","nativeSrc":"1462:45:55","nodeType":"YulIdentifier","src":"1462:45:55"},"nativeSrc":"1462:52:55","nodeType":"YulFunctionCall","src":"1462:52:55"},"nativeSrc":"1462:52:55","nodeType":"YulExpressionStatement","src":"1462:52:55"}]},"name":"abi_decode_t_contract$_SwapHelper_$8322_fromMemory","nativeSrc":"1339:181:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1399:6:55","nodeType":"YulTypedName","src":"1399:6:55","type":""},{"name":"end","nativeSrc":"1407:3:55","nodeType":"YulTypedName","src":"1407:3:55","type":""}],"returnVariables":[{"name":"value","nativeSrc":"1415:5:55","nodeType":"YulTypedName","src":"1415:5:55","type":""}],"src":"1339:181:55"},{"body":{"nativeSrc":"1587:51:55","nodeType":"YulBlock","src":"1587:51:55","statements":[{"nativeSrc":"1597:35:55","nodeType":"YulAssignment","src":"1597:35:55","value":{"arguments":[{"name":"value","nativeSrc":"1626:5:55","nodeType":"YulIdentifier","src":"1626:5:55"}],"functionName":{"name":"cleanup_t_address","nativeSrc":"1608:17:55","nodeType":"YulIdentifier","src":"1608:17:55"},"nativeSrc":"1608:24:55","nodeType":"YulFunctionCall","src":"1608:24:55"},"variableNames":[{"name":"cleaned","nativeSrc":"1597:7:55","nodeType":"YulIdentifier","src":"1597:7:55"}]}]},"name":"cleanup_t_contract$_IVToken_$5277","nativeSrc":"1526:112:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1569:5:55","nodeType":"YulTypedName","src":"1569:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"1579:7:55","nodeType":"YulTypedName","src":"1579:7:55","type":""}],"src":"1526:112:55"},{"body":{"nativeSrc":"1703:95:55","nodeType":"YulBlock","src":"1703:95:55","statements":[{"body":{"nativeSrc":"1776:16:55","nodeType":"YulBlock","src":"1776:16:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1785:1:55","nodeType":"YulLiteral","src":"1785:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"1788:1:55","nodeType":"YulLiteral","src":"1788:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1778:6:55","nodeType":"YulIdentifier","src":"1778:6:55"},"nativeSrc":"1778:12:55","nodeType":"YulFunctionCall","src":"1778:12:55"},"nativeSrc":"1778:12:55","nodeType":"YulExpressionStatement","src":"1778:12:55"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1726:5:55","nodeType":"YulIdentifier","src":"1726:5:55"},{"arguments":[{"name":"value","nativeSrc":"1767:5:55","nodeType":"YulIdentifier","src":"1767:5:55"}],"functionName":{"name":"cleanup_t_contract$_IVToken_$5277","nativeSrc":"1733:33:55","nodeType":"YulIdentifier","src":"1733:33:55"},"nativeSrc":"1733:40:55","nodeType":"YulFunctionCall","src":"1733:40:55"}],"functionName":{"name":"eq","nativeSrc":"1723:2:55","nodeType":"YulIdentifier","src":"1723:2:55"},"nativeSrc":"1723:51:55","nodeType":"YulFunctionCall","src":"1723:51:55"}],"functionName":{"name":"iszero","nativeSrc":"1716:6:55","nodeType":"YulIdentifier","src":"1716:6:55"},"nativeSrc":"1716:59:55","nodeType":"YulFunctionCall","src":"1716:59:55"},"nativeSrc":"1713:79:55","nodeType":"YulIf","src":"1713:79:55"}]},"name":"validator_revert_t_contract$_IVToken_$5277","nativeSrc":"1644:154:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1696:5:55","nodeType":"YulTypedName","src":"1696:5:55","type":""}],"src":"1644:154:55"},{"body":{"nativeSrc":"1883:96:55","nodeType":"YulBlock","src":"1883:96:55","statements":[{"nativeSrc":"1893:22:55","nodeType":"YulAssignment","src":"1893:22:55","value":{"arguments":[{"name":"offset","nativeSrc":"1908:6:55","nodeType":"YulIdentifier","src":"1908:6:55"}],"functionName":{"name":"mload","nativeSrc":"1902:5:55","nodeType":"YulIdentifier","src":"1902:5:55"},"nativeSrc":"1902:13:55","nodeType":"YulFunctionCall","src":"1902:13:55"},"variableNames":[{"name":"value","nativeSrc":"1893:5:55","nodeType":"YulIdentifier","src":"1893:5:55"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"1967:5:55","nodeType":"YulIdentifier","src":"1967:5:55"}],"functionName":{"name":"validator_revert_t_contract$_IVToken_$5277","nativeSrc":"1924:42:55","nodeType":"YulIdentifier","src":"1924:42:55"},"nativeSrc":"1924:49:55","nodeType":"YulFunctionCall","src":"1924:49:55"},"nativeSrc":"1924:49:55","nodeType":"YulExpressionStatement","src":"1924:49:55"}]},"name":"abi_decode_t_contract$_IVToken_$5277_fromMemory","nativeSrc":"1804:175:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1861:6:55","nodeType":"YulTypedName","src":"1861:6:55","type":""},{"name":"end","nativeSrc":"1869:3:55","nodeType":"YulTypedName","src":"1869:3:55","type":""}],"returnVariables":[{"name":"value","nativeSrc":"1877:5:55","nodeType":"YulTypedName","src":"1877:5:55","type":""}],"src":"1804:175:55"},{"body":{"nativeSrc":"2152:608:55","nodeType":"YulBlock","src":"2152:608:55","statements":[{"body":{"nativeSrc":"2198:83:55","nodeType":"YulBlock","src":"2198:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"2200:77:55","nodeType":"YulIdentifier","src":"2200:77:55"},"nativeSrc":"2200:79:55","nodeType":"YulFunctionCall","src":"2200:79:55"},"nativeSrc":"2200:79:55","nodeType":"YulExpressionStatement","src":"2200:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2173:7:55","nodeType":"YulIdentifier","src":"2173:7:55"},{"name":"headStart","nativeSrc":"2182:9:55","nodeType":"YulIdentifier","src":"2182:9:55"}],"functionName":{"name":"sub","nativeSrc":"2169:3:55","nodeType":"YulIdentifier","src":"2169:3:55"},"nativeSrc":"2169:23:55","nodeType":"YulFunctionCall","src":"2169:23:55"},{"kind":"number","nativeSrc":"2194:2:55","nodeType":"YulLiteral","src":"2194:2:55","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"2165:3:55","nodeType":"YulIdentifier","src":"2165:3:55"},"nativeSrc":"2165:32:55","nodeType":"YulFunctionCall","src":"2165:32:55"},"nativeSrc":"2162:119:55","nodeType":"YulIf","src":"2162:119:55"},{"nativeSrc":"2291:149:55","nodeType":"YulBlock","src":"2291:149:55","statements":[{"nativeSrc":"2306:15:55","nodeType":"YulVariableDeclaration","src":"2306:15:55","value":{"kind":"number","nativeSrc":"2320:1:55","nodeType":"YulLiteral","src":"2320:1:55","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"2310:6:55","nodeType":"YulTypedName","src":"2310:6:55","type":""}]},{"nativeSrc":"2335:95:55","nodeType":"YulAssignment","src":"2335:95:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2402:9:55","nodeType":"YulIdentifier","src":"2402:9:55"},{"name":"offset","nativeSrc":"2413:6:55","nodeType":"YulIdentifier","src":"2413:6:55"}],"functionName":{"name":"add","nativeSrc":"2398:3:55","nodeType":"YulIdentifier","src":"2398:3:55"},"nativeSrc":"2398:22:55","nodeType":"YulFunctionCall","src":"2398:22:55"},{"name":"dataEnd","nativeSrc":"2422:7:55","nodeType":"YulIdentifier","src":"2422:7:55"}],"functionName":{"name":"abi_decode_t_contract$_IComptroller_$5454_fromMemory","nativeSrc":"2345:52:55","nodeType":"YulIdentifier","src":"2345:52:55"},"nativeSrc":"2345:85:55","nodeType":"YulFunctionCall","src":"2345:85:55"},"variableNames":[{"name":"value0","nativeSrc":"2335:6:55","nodeType":"YulIdentifier","src":"2335:6:55"}]}]},{"nativeSrc":"2450:148:55","nodeType":"YulBlock","src":"2450:148:55","statements":[{"nativeSrc":"2465:16:55","nodeType":"YulVariableDeclaration","src":"2465:16:55","value":{"kind":"number","nativeSrc":"2479:2:55","nodeType":"YulLiteral","src":"2479:2:55","type":"","value":"32"},"variables":[{"name":"offset","nativeSrc":"2469:6:55","nodeType":"YulTypedName","src":"2469:6:55","type":""}]},{"nativeSrc":"2495:93:55","nodeType":"YulAssignment","src":"2495:93:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2560:9:55","nodeType":"YulIdentifier","src":"2560:9:55"},{"name":"offset","nativeSrc":"2571:6:55","nodeType":"YulIdentifier","src":"2571:6:55"}],"functionName":{"name":"add","nativeSrc":"2556:3:55","nodeType":"YulIdentifier","src":"2556:3:55"},"nativeSrc":"2556:22:55","nodeType":"YulFunctionCall","src":"2556:22:55"},{"name":"dataEnd","nativeSrc":"2580:7:55","nodeType":"YulIdentifier","src":"2580:7:55"}],"functionName":{"name":"abi_decode_t_contract$_SwapHelper_$8322_fromMemory","nativeSrc":"2505:50:55","nodeType":"YulIdentifier","src":"2505:50:55"},"nativeSrc":"2505:83:55","nodeType":"YulFunctionCall","src":"2505:83:55"},"variableNames":[{"name":"value1","nativeSrc":"2495:6:55","nodeType":"YulIdentifier","src":"2495:6:55"}]}]},{"nativeSrc":"2608:145:55","nodeType":"YulBlock","src":"2608:145:55","statements":[{"nativeSrc":"2623:16:55","nodeType":"YulVariableDeclaration","src":"2623:16:55","value":{"kind":"number","nativeSrc":"2637:2:55","nodeType":"YulLiteral","src":"2637:2:55","type":"","value":"64"},"variables":[{"name":"offset","nativeSrc":"2627:6:55","nodeType":"YulTypedName","src":"2627:6:55","type":""}]},{"nativeSrc":"2653:90:55","nodeType":"YulAssignment","src":"2653:90:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2715:9:55","nodeType":"YulIdentifier","src":"2715:9:55"},{"name":"offset","nativeSrc":"2726:6:55","nodeType":"YulIdentifier","src":"2726:6:55"}],"functionName":{"name":"add","nativeSrc":"2711:3:55","nodeType":"YulIdentifier","src":"2711:3:55"},"nativeSrc":"2711:22:55","nodeType":"YulFunctionCall","src":"2711:22:55"},{"name":"dataEnd","nativeSrc":"2735:7:55","nodeType":"YulIdentifier","src":"2735:7:55"}],"functionName":{"name":"abi_decode_t_contract$_IVToken_$5277_fromMemory","nativeSrc":"2663:47:55","nodeType":"YulIdentifier","src":"2663:47:55"},"nativeSrc":"2663:80:55","nodeType":"YulFunctionCall","src":"2663:80:55"},"variableNames":[{"name":"value2","nativeSrc":"2653:6:55","nodeType":"YulIdentifier","src":"2653:6:55"}]}]}]},"name":"abi_decode_tuple_t_contract$_IComptroller_$5454t_contract$_SwapHelper_$8322t_contract$_IVToken_$5277_fromMemory","nativeSrc":"1985:775:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2106:9:55","nodeType":"YulTypedName","src":"2106:9:55","type":""},{"name":"dataEnd","nativeSrc":"2117:7:55","nodeType":"YulTypedName","src":"2117:7:55","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2129:6:55","nodeType":"YulTypedName","src":"2129:6:55","type":""},{"name":"value1","nativeSrc":"2137:6:55","nodeType":"YulTypedName","src":"2137:6:55","type":""},{"name":"value2","nativeSrc":"2145:6:55","nodeType":"YulTypedName","src":"2145:6:55","type":""}],"src":"1985:775:55"},{"body":{"nativeSrc":"2862:73:55","nodeType":"YulBlock","src":"2862:73:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"2879:3:55","nodeType":"YulIdentifier","src":"2879:3:55"},{"name":"length","nativeSrc":"2884:6:55","nodeType":"YulIdentifier","src":"2884:6:55"}],"functionName":{"name":"mstore","nativeSrc":"2872:6:55","nodeType":"YulIdentifier","src":"2872:6:55"},"nativeSrc":"2872:19:55","nodeType":"YulFunctionCall","src":"2872:19:55"},"nativeSrc":"2872:19:55","nodeType":"YulExpressionStatement","src":"2872:19:55"},{"nativeSrc":"2900:29:55","nodeType":"YulAssignment","src":"2900:29:55","value":{"arguments":[{"name":"pos","nativeSrc":"2919:3:55","nodeType":"YulIdentifier","src":"2919:3:55"},{"kind":"number","nativeSrc":"2924:4:55","nodeType":"YulLiteral","src":"2924:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2915:3:55","nodeType":"YulIdentifier","src":"2915:3:55"},"nativeSrc":"2915:14:55","nodeType":"YulFunctionCall","src":"2915:14:55"},"variableNames":[{"name":"updated_pos","nativeSrc":"2900:11:55","nodeType":"YulIdentifier","src":"2900:11:55"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"2766:169:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"2834:3:55","nodeType":"YulTypedName","src":"2834:3:55","type":""},{"name":"length","nativeSrc":"2839:6:55","nodeType":"YulTypedName","src":"2839:6:55","type":""}],"returnVariables":[{"name":"updated_pos","nativeSrc":"2850:11:55","nodeType":"YulTypedName","src":"2850:11:55","type":""}],"src":"2766:169:55"},{"body":{"nativeSrc":"3047:120:55","nodeType":"YulBlock","src":"3047:120:55","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"3069:6:55","nodeType":"YulIdentifier","src":"3069:6:55"},{"kind":"number","nativeSrc":"3077:1:55","nodeType":"YulLiteral","src":"3077:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"3065:3:55","nodeType":"YulIdentifier","src":"3065:3:55"},"nativeSrc":"3065:14:55","nodeType":"YulFunctionCall","src":"3065:14:55"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469","kind":"string","nativeSrc":"3081:34:55","nodeType":"YulLiteral","src":"3081:34:55","type":"","value":"Initializable: contract is initi"}],"functionName":{"name":"mstore","nativeSrc":"3058:6:55","nodeType":"YulIdentifier","src":"3058:6:55"},"nativeSrc":"3058:58:55","nodeType":"YulFunctionCall","src":"3058:58:55"},"nativeSrc":"3058:58:55","nodeType":"YulExpressionStatement","src":"3058:58:55"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"3137:6:55","nodeType":"YulIdentifier","src":"3137:6:55"},{"kind":"number","nativeSrc":"3145:2:55","nodeType":"YulLiteral","src":"3145:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3133:3:55","nodeType":"YulIdentifier","src":"3133:3:55"},"nativeSrc":"3133:15:55","nodeType":"YulFunctionCall","src":"3133:15:55"},{"hexValue":"616c697a696e67","kind":"string","nativeSrc":"3150:9:55","nodeType":"YulLiteral","src":"3150:9:55","type":"","value":"alizing"}],"functionName":{"name":"mstore","nativeSrc":"3126:6:55","nodeType":"YulIdentifier","src":"3126:6:55"},"nativeSrc":"3126:34:55","nodeType":"YulFunctionCall","src":"3126:34:55"},"nativeSrc":"3126:34:55","nodeType":"YulExpressionStatement","src":"3126:34:55"}]},"name":"store_literal_in_memory_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a","nativeSrc":"2941:226:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"3039:6:55","nodeType":"YulTypedName","src":"3039:6:55","type":""}],"src":"2941:226:55"},{"body":{"nativeSrc":"3319:220:55","nodeType":"YulBlock","src":"3319:220:55","statements":[{"nativeSrc":"3329:74:55","nodeType":"YulAssignment","src":"3329:74:55","value":{"arguments":[{"name":"pos","nativeSrc":"3395:3:55","nodeType":"YulIdentifier","src":"3395:3:55"},{"kind":"number","nativeSrc":"3400:2:55","nodeType":"YulLiteral","src":"3400:2:55","type":"","value":"39"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"3336:58:55","nodeType":"YulIdentifier","src":"3336:58:55"},"nativeSrc":"3336:67:55","nodeType":"YulFunctionCall","src":"3336:67:55"},"variableNames":[{"name":"pos","nativeSrc":"3329:3:55","nodeType":"YulIdentifier","src":"3329:3:55"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"3501:3:55","nodeType":"YulIdentifier","src":"3501:3:55"}],"functionName":{"name":"store_literal_in_memory_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a","nativeSrc":"3412:88:55","nodeType":"YulIdentifier","src":"3412:88:55"},"nativeSrc":"3412:93:55","nodeType":"YulFunctionCall","src":"3412:93:55"},"nativeSrc":"3412:93:55","nodeType":"YulExpressionStatement","src":"3412:93:55"},{"nativeSrc":"3514:19:55","nodeType":"YulAssignment","src":"3514:19:55","value":{"arguments":[{"name":"pos","nativeSrc":"3525:3:55","nodeType":"YulIdentifier","src":"3525:3:55"},{"kind":"number","nativeSrc":"3530:2:55","nodeType":"YulLiteral","src":"3530:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"3521:3:55","nodeType":"YulIdentifier","src":"3521:3:55"},"nativeSrc":"3521:12:55","nodeType":"YulFunctionCall","src":"3521:12:55"},"variableNames":[{"name":"end","nativeSrc":"3514:3:55","nodeType":"YulIdentifier","src":"3514:3:55"}]}]},"name":"abi_encode_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a_to_t_string_memory_ptr_fromStack","nativeSrc":"3173:366:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"3307:3:55","nodeType":"YulTypedName","src":"3307:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"3315:3:55","nodeType":"YulTypedName","src":"3315:3:55","type":""}],"src":"3173:366:55"},{"body":{"nativeSrc":"3716:248:55","nodeType":"YulBlock","src":"3716:248:55","statements":[{"nativeSrc":"3726:26:55","nodeType":"YulAssignment","src":"3726:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"3738:9:55","nodeType":"YulIdentifier","src":"3738:9:55"},{"kind":"number","nativeSrc":"3749:2:55","nodeType":"YulLiteral","src":"3749:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3734:3:55","nodeType":"YulIdentifier","src":"3734:3:55"},"nativeSrc":"3734:18:55","nodeType":"YulFunctionCall","src":"3734:18:55"},"variableNames":[{"name":"tail","nativeSrc":"3726:4:55","nodeType":"YulIdentifier","src":"3726:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3773:9:55","nodeType":"YulIdentifier","src":"3773:9:55"},{"kind":"number","nativeSrc":"3784:1:55","nodeType":"YulLiteral","src":"3784:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"3769:3:55","nodeType":"YulIdentifier","src":"3769:3:55"},"nativeSrc":"3769:17:55","nodeType":"YulFunctionCall","src":"3769:17:55"},{"arguments":[{"name":"tail","nativeSrc":"3792:4:55","nodeType":"YulIdentifier","src":"3792:4:55"},{"name":"headStart","nativeSrc":"3798:9:55","nodeType":"YulIdentifier","src":"3798:9:55"}],"functionName":{"name":"sub","nativeSrc":"3788:3:55","nodeType":"YulIdentifier","src":"3788:3:55"},"nativeSrc":"3788:20:55","nodeType":"YulFunctionCall","src":"3788:20:55"}],"functionName":{"name":"mstore","nativeSrc":"3762:6:55","nodeType":"YulIdentifier","src":"3762:6:55"},"nativeSrc":"3762:47:55","nodeType":"YulFunctionCall","src":"3762:47:55"},"nativeSrc":"3762:47:55","nodeType":"YulExpressionStatement","src":"3762:47:55"},{"nativeSrc":"3818:139:55","nodeType":"YulAssignment","src":"3818:139:55","value":{"arguments":[{"name":"tail","nativeSrc":"3952:4:55","nodeType":"YulIdentifier","src":"3952:4:55"}],"functionName":{"name":"abi_encode_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a_to_t_string_memory_ptr_fromStack","nativeSrc":"3826:124:55","nodeType":"YulIdentifier","src":"3826:124:55"},"nativeSrc":"3826:131:55","nodeType":"YulFunctionCall","src":"3826:131:55"},"variableNames":[{"name":"tail","nativeSrc":"3818:4:55","nodeType":"YulIdentifier","src":"3818:4:55"}]}]},"name":"abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"3545:419:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3696:9:55","nodeType":"YulTypedName","src":"3696:9:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3711:4:55","nodeType":"YulTypedName","src":"3711:4:55","type":""}],"src":"3545:419:55"},{"body":{"nativeSrc":"4013:43:55","nodeType":"YulBlock","src":"4013:43:55","statements":[{"nativeSrc":"4023:27:55","nodeType":"YulAssignment","src":"4023:27:55","value":{"arguments":[{"name":"value","nativeSrc":"4038:5:55","nodeType":"YulIdentifier","src":"4038:5:55"},{"kind":"number","nativeSrc":"4045:4:55","nodeType":"YulLiteral","src":"4045:4:55","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"4034:3:55","nodeType":"YulIdentifier","src":"4034:3:55"},"nativeSrc":"4034:16:55","nodeType":"YulFunctionCall","src":"4034:16:55"},"variableNames":[{"name":"cleaned","nativeSrc":"4023:7:55","nodeType":"YulIdentifier","src":"4023:7:55"}]}]},"name":"cleanup_t_uint8","nativeSrc":"3970:86:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"3995:5:55","nodeType":"YulTypedName","src":"3995:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"4005:7:55","nodeType":"YulTypedName","src":"4005:7:55","type":""}],"src":"3970:86:55"},{"body":{"nativeSrc":"4123:51:55","nodeType":"YulBlock","src":"4123:51:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"4140:3:55","nodeType":"YulIdentifier","src":"4140:3:55"},{"arguments":[{"name":"value","nativeSrc":"4161:5:55","nodeType":"YulIdentifier","src":"4161:5:55"}],"functionName":{"name":"cleanup_t_uint8","nativeSrc":"4145:15:55","nodeType":"YulIdentifier","src":"4145:15:55"},"nativeSrc":"4145:22:55","nodeType":"YulFunctionCall","src":"4145:22:55"}],"functionName":{"name":"mstore","nativeSrc":"4133:6:55","nodeType":"YulIdentifier","src":"4133:6:55"},"nativeSrc":"4133:35:55","nodeType":"YulFunctionCall","src":"4133:35:55"},"nativeSrc":"4133:35:55","nodeType":"YulExpressionStatement","src":"4133:35:55"}]},"name":"abi_encode_t_uint8_to_t_uint8_fromStack","nativeSrc":"4062:112:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"4111:5:55","nodeType":"YulTypedName","src":"4111:5:55","type":""},{"name":"pos","nativeSrc":"4118:3:55","nodeType":"YulTypedName","src":"4118:3:55","type":""}],"src":"4062:112:55"},{"body":{"nativeSrc":"4274:120:55","nodeType":"YulBlock","src":"4274:120:55","statements":[{"nativeSrc":"4284:26:55","nodeType":"YulAssignment","src":"4284:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"4296:9:55","nodeType":"YulIdentifier","src":"4296:9:55"},{"kind":"number","nativeSrc":"4307:2:55","nodeType":"YulLiteral","src":"4307:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4292:3:55","nodeType":"YulIdentifier","src":"4292:3:55"},"nativeSrc":"4292:18:55","nodeType":"YulFunctionCall","src":"4292:18:55"},"variableNames":[{"name":"tail","nativeSrc":"4284:4:55","nodeType":"YulIdentifier","src":"4284:4:55"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"4360:6:55","nodeType":"YulIdentifier","src":"4360:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"4373:9:55","nodeType":"YulIdentifier","src":"4373:9:55"},{"kind":"number","nativeSrc":"4384:1:55","nodeType":"YulLiteral","src":"4384:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"4369:3:55","nodeType":"YulIdentifier","src":"4369:3:55"},"nativeSrc":"4369:17:55","nodeType":"YulFunctionCall","src":"4369:17:55"}],"functionName":{"name":"abi_encode_t_uint8_to_t_uint8_fromStack","nativeSrc":"4320:39:55","nodeType":"YulIdentifier","src":"4320:39:55"},"nativeSrc":"4320:67:55","nodeType":"YulFunctionCall","src":"4320:67:55"},"nativeSrc":"4320:67:55","nodeType":"YulExpressionStatement","src":"4320:67:55"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nativeSrc":"4180:214:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4246:9:55","nodeType":"YulTypedName","src":"4246:9:55","type":""},{"name":"value0","nativeSrc":"4258:6:55","nodeType":"YulTypedName","src":"4258:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4269:4:55","nodeType":"YulTypedName","src":"4269:4:55","type":""}],"src":"4180:214:55"}]},"contents":"{\n\n    function allocate_unbounded() -> memPtr {\n        memPtr := mload(64)\n    }\n\n    function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n        revert(0, 0)\n    }\n\n    function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n        revert(0, 0)\n    }\n\n    function cleanup_t_uint160(value) -> cleaned {\n        cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n    }\n\n    function cleanup_t_address(value) -> cleaned {\n        cleaned := cleanup_t_uint160(value)\n    }\n\n    function cleanup_t_contract$_IComptroller_$5454(value) -> cleaned {\n        cleaned := cleanup_t_address(value)\n    }\n\n    function validator_revert_t_contract$_IComptroller_$5454(value) {\n        if iszero(eq(value, cleanup_t_contract$_IComptroller_$5454(value))) { revert(0, 0) }\n    }\n\n    function abi_decode_t_contract$_IComptroller_$5454_fromMemory(offset, end) -> value {\n        value := mload(offset)\n        validator_revert_t_contract$_IComptroller_$5454(value)\n    }\n\n    function cleanup_t_contract$_SwapHelper_$8322(value) -> cleaned {\n        cleaned := cleanup_t_address(value)\n    }\n\n    function validator_revert_t_contract$_SwapHelper_$8322(value) {\n        if iszero(eq(value, cleanup_t_contract$_SwapHelper_$8322(value))) { revert(0, 0) }\n    }\n\n    function abi_decode_t_contract$_SwapHelper_$8322_fromMemory(offset, end) -> value {\n        value := mload(offset)\n        validator_revert_t_contract$_SwapHelper_$8322(value)\n    }\n\n    function cleanup_t_contract$_IVToken_$5277(value) -> cleaned {\n        cleaned := cleanup_t_address(value)\n    }\n\n    function validator_revert_t_contract$_IVToken_$5277(value) {\n        if iszero(eq(value, cleanup_t_contract$_IVToken_$5277(value))) { revert(0, 0) }\n    }\n\n    function abi_decode_t_contract$_IVToken_$5277_fromMemory(offset, end) -> value {\n        value := mload(offset)\n        validator_revert_t_contract$_IVToken_$5277(value)\n    }\n\n    function abi_decode_tuple_t_contract$_IComptroller_$5454t_contract$_SwapHelper_$8322t_contract$_IVToken_$5277_fromMemory(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_contract$_IComptroller_$5454_fromMemory(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 32\n\n            value1 := abi_decode_t_contract$_SwapHelper_$8322_fromMemory(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 64\n\n            value2 := abi_decode_t_contract$_IVToken_$5277_fromMemory(add(headStart, offset), dataEnd)\n        }\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 store_literal_in_memory_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a(memPtr) {\n\n        mstore(add(memPtr, 0), \"Initializable: contract is initi\")\n\n        mstore(add(memPtr, 32), \"alizing\")\n\n    }\n\n    function abi_encode_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 39)\n        store_literal_in_memory_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a__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_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a_to_t_string_memory_ptr_fromStack( tail)\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}\n","id":55,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60e060405234801561000f575f5ffd5b50604051613bed380380613bed83398101604081905261002e91610165565b6001600160a01b038316158061004b57506001600160a01b038216155b8061005d57506001600160a01b038116155b1561007b5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0380841660805282811660a052811660c05261009c6100a4565b50505061020b565b5f54610100900460ff16156100d45760405162461bcd60e51b81526004016100cb906101b1565b60405180910390fd5b5f5460ff90811614610126575f805460ff191660ff9081179091556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989161011d916101fc565b60405180910390a15b565b5f6001600160a01b0382165b92915050565b5f61013482610128565b61014d8161013a565b8114610157575f5ffd5b50565b805161013481610144565b5f5f5f6060848603121561017a5761017a5f5ffd5b5f610185868661015a565b93505060206101968682870161015a565b92505060406101a78682870161015a565b9150509250925092565b6020808252810161013481602781527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469602082015266616c697a696e6760c81b604082015260600190565b60ff8216815260208101610134565b60805160a05160c0516139496102a45f395f818161014b015261136901525f818160f9015281816129cd0152612a6401525f8181610198015281816103e7015281816106600152818161086701528181610b7201528181610d9d01528181610ee8015281816112cf015281816113d401528181611503015281816115960152818161163901528181611f1701526123b601526139495ff3fe608060405234801561000f575f5ffd5b50600436106100f0575f3560e01c806379ba509711610093578063c78befbe11610063578063c78befbe146101ff578063e30c397814610212578063f2fde38b14610223578063fc08f9f614610236575f5ffd5b806379ba5097146101c25780638129fc1c146101ca5780638da5cb5b146101d2578063c6cd25f6146101ec575f5ffd5b80633a8f8c43116100ce5780633a8f8c431461016d5780633c3a2c21146101805780635f82c67e14610193578063715018a6146101ba575f5ffd5b80630fc6a11c146100f4578063134248011461013157806333e1567f14610146575b5f5ffd5b61011b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516101289190612e2a565b60405180910390f35b61014461013f366004612eb5565b610257565b005b61011b7f000000000000000000000000000000000000000000000000000000000000000081565b61014461017b366004612f59565b6104d0565b61014461018e366004612f9f565b61073e565b61011b7f000000000000000000000000000000000000000000000000000000000000000081565b610144610935565b610144610948565b610144610989565b6033546001600160a01b03165b6040516101289190612ff4565b6101446101fa366004613002565b610a59565b61014461020d366004612f59565b610c3d565b6065546001600160a01b03166101df565b610144610231366004613050565b610e61565b6102496102443660046130b5565b610ed2565b60405161012892919061321b565b835f03610277576040516362ec8de760e01b815260040160405180910390fd5b856001600160a01b0316876001600160a01b0316036102a957604051637239c0db60e11b815260040160405180910390fd5b6102b2876112b6565b6102bb866112b6565b6102c36113bd565b6102cc87611467565b6102d586611467565b6102df33886114ec565b6102e833611635565b6102f38633876116f5565b335f805c610100600160a81b031916610100830217905d50866001805c6001600160a01b0319166001600160a01b03831617905d50848060035d50828060045d5060035f805c60ff19168217905d506040805160018082528183019092525f916020808301908036833701905050905086815f815181106103765761037661324f565b6001600160a01b0392909216602092830291909101909101526040805160018082528183019092525f9181602001602082028036833701905050905085815f815181106103c5576103c561324f565b60209081029190910101526040516315513b6760e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635544ed9c906104269033903090879087908b908b906004016132dd565b5f604051808303815f87803b15801561043d575f5ffd5b505af115801561044f573d5f5f3e3d5ffd5b5050505061045c33611635565b876001600160a01b0316896001600160a01b0316336001600160a01b03167f4bdf2f6f97b9e53fbb880300a2b1e8f12110f6cbcc3279602053bcf6f5e051038a8a6040516104ab929190613333565b60405180910390a46104bc89611773565b6104c588611773565b505050505050505050565b835f036104f0576040516362ec8de760e01b815260040160405180910390fd5b846001600160a01b0316876001600160a01b03160361052257604051637239c0db60e11b815260040160405180910390fd5b61052b876112b6565b610534856112b6565b61053c6113bd565b61054587611467565b61054e85611467565b61055833886114ec565b61056133611635565b61056c8733886116f5565b335f805c610100600160a81b031916610100830217905d50866001805c6001600160a01b0319166001600160a01b03831617905d50858060025d50828060045d5060025f805c60ff19168217905d506040805160018082528183019092525f916020808301908036833701905050905085815f815181106105ef576105ef61324f565b6001600160a01b0392909216602092830291909101909101526040805160018082528183019092525f9181602001602082028036833701905050905085815f8151811061063e5761063e61324f565b60209081029190910101526040516315513b6760e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635544ed9c9061069f9033903090879087908b908b906004016132dd565b5f604051808303815f87803b1580156106b6575f5ffd5b505af11580156106c8573d5f5f3e3d5ffd5b505050506106d533611635565b866001600160a01b0316896001600160a01b0316336001600160a01b03167f2535d675850d7c542dc54c7aa081f27a11d1b0df3f3db67275ce0a9d056274348b8a604051610724929190613333565b60405180910390a461073589611773565b6104c587611773565b805f0361075e576040516362ec8de760e01b815260040160405180910390fd5b610767836112b6565b61076f6113bd565b61077883611467565b61078233846114ec565b61078b33611635565b6107968333846116f5565b335f805c610100600160a81b031916610100830217905d5060015f805c60ff19168217905d50818060025d506040805160018082528183019092525f916020808301908036833701905050905083815f815181106107f6576107f661324f565b6001600160a01b0392909216602092830291909101909101526040805160018082528183019092525f9181602001602082028036833701905050905082815f815181106108455761084561324f565b60209081029190910101526040516315513b6760e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635544ed9c906108a290339030908790879060040161334e565b5f604051808303815f87803b1580156108b9575f5ffd5b505af11580156108cb573d5f5f3e3d5ffd5b505050506108d833611635565b846001600160a01b0316336001600160a01b03167f49cef9d2c3f3f5785b1ad7facb0837a43e60a785a0141101e658f5565664cd89868660405161091d929190613333565b60405180910390a361092e85611773565b5050505050565b61093d6118b9565b6109465f6118e3565b565b60655433906001600160a01b0316811461097d5760405162461bcd60e51b8152600401610974906133f2565b60405180910390fd5b610986816118e3565b50565b5f54610100900460ff16158080156109a757505f54600160ff909116105b806109c05750303b1580156109c057505f5460ff166001145b6109dc5760405162461bcd60e51b81526004016109749061344c565b5f805460ff1916600117905580156109fd575f805461ff0019166101001790555b610a056118fc565b610a0d61192a565b8015610986575f805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890610a4e9060019061346f565b60405180910390a150565b805f03610a79576040516362ec8de760e01b815260040160405180910390fd5b610a82826112b6565b610a8a6113bd565b335f805c610100600160a81b031916610100830217905d50816001805c6001600160a01b0319166001600160a01b03831617905d5060055f805c60ff19168217905d506040805160018082528183019092525f916020808301908036833701905050905082815f81518110610b0157610b0161324f565b6001600160a01b0392909216602092830291909101909101526040805160018082528183019092525f9181602001602082028036833701905050905082815f81518110610b5057610b5061324f565b60209081029190910101526040516315513b6760e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635544ed9c90610bad90339030908790879060040161334e565b5f604051808303815f87803b158015610bc4575f5ffd5b505af1158015610bd6573d5f5f3e3d5ffd5b50505050610be333611635565b836001600160a01b0316336001600160a01b03167f9858e3a66fd738b1f0f73208c9090ca5a20ee504df594271e464d4bb4cda0e6f85604051610c26919061347d565b60405180910390a3610c3784611773565b50505050565b835f03610c5d576040516362ec8de760e01b815260040160405180910390fd5b846001600160a01b0316876001600160a01b031603610c8f57604051637239c0db60e11b815260040160405180910390fd5b610c98876112b6565b610ca1856112b6565b610ca96113bd565b335f805c610100600160a81b031916610100830217905d50866001805c6001600160a01b0319166001600160a01b03831617905d50858060025d50828060045d5060045f805c60ff19168217905d506040805160018082528183019092525f916020808301908036833701905050905085815f81518110610d2c57610d2c61324f565b6001600160a01b0392909216602092830291909101909101526040805160018082528183019092525f9181602001602082028036833701905050905085815f81518110610d7b57610d7b61324f565b60209081029190910101526040516315513b6760e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635544ed9c90610ddc9033903090879087908b908b906004016132dd565b5f604051808303815f87803b158015610df3575f5ffd5b505af1158015610e05573d5f5f3e3d5ffd5b50505050610e1233611635565b866001600160a01b0316896001600160a01b0316336001600160a01b03167fc40371cee960c145e7af5e62a37dfd2f97089c030c2427ad853ae214e815ebed8b8a604051610724929190613333565b610e696118b9565b606580546001600160a01b0383166001600160a01b03199091168117909155610e9a6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f6060610edd611958565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f26576040516341c8302160e11b815260040160405180910390fd5b6001600160a01b0386163014610f4f576040516304db910d60e01b815260040160405180910390fd5b6101005f5c046001600160a01b0390811690861614610f8157604051632a057c4360e01b815260040160405180910390fd5b60018b141580610f92575060018914155b80610f9e575060018714155b15610fbc57604051634f7d8fbd60e11b815260040160405180910390fd5b6040805160018082528183019092529060208083019080368337019050509050600160ff5f5c166005811115610ff457610ff461323b565b0361107e5761105b858d8d5f81811061100f5761100f61324f565b9050602002016020810190611024919061348b565b8c8c5f8181106110365761103661324f565b905060200201358b8b5f81811061104f5761104f61324f565b90506020020135611981565b815f8151811061106d5761106d61324f565b602002602001018181525050611299565b600260ff5f5c1660058111156110965761109661323b565b036110ff5761105b858d8d5f8181106110b1576110b161324f565b90506020020160208101906110c6919061348b565b8c8c5f8181106110d8576110d861324f565b905060200201358b8b5f8181106110f1576110f161324f565b905060200201358888611ab3565b600360ff5f5c1660058111156111175761111761323b565b036111805761105b858d8d5f8181106111325761113261324f565b9050602002016020810190611147919061348b565b8c8c5f8181106111595761115961324f565b905060200201358b8b5f8181106111725761117261324f565b905060200201358888611c6e565b600460ff5f5c1660058111156111985761119861323b565b036112015761105b858d8d5f8181106111b3576111b361324f565b90506020020160208101906111c8919061348b565b8c8c5f8181106111da576111da61324f565b905060200201358b8b5f8181106111f3576111f361324f565b905060200201358888611d63565b600560ff5f5c1660058111156112195761121961323b565b036112805761105b858d8d5f8181106112345761123461324f565b9050602002016020810190611249919061348b565b8c8c5f81811061125b5761125b61324f565b905060200201358b8b5f8181106112745761127461324f565b9050602002013561221b565b604051639c3c956760e01b815260040160405180910390fd5b600191506112a76001609755565b9a509a98505050505050505050565b604051638e8f294b60e01b81525f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638e8f294b90611304908590600401612ff4565b606060405180830381865afa15801561131f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061134391906134c7565b50509050806113675781604051635a9a1eb960e11b81526004016109749190612ff4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036113b95760405163baeccefd60e01b815260040160405180910390fd5b5050565b604051630217306760e31b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906310b983389061140b9033903090600401613509565b602060405180830381865afa158015611426573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061144a9190613524565b610946576040516337248ad960e01b815260040160405180910390fd5b5f816001600160a01b031663a6afed956040518163ffffffff1660e01b81526004016020604051808303815f875af11580156114a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114c99190613542565b905080156113b957806040516315fc6cbf60e21b8152600401610974919061347d565b60405163929fe9a160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063929fe9a19061153a9085908590600401613560565b602060405180830381865afa158015611555573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115799190613524565b6113b957604051636ac2e1e360e11b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d585c3c6906115cd9086908690600401613509565b6020604051808303815f875af11580156115e9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061160d9190613542565b905080156116305780604051631957d10560e31b8152600401610974919061347d565b505050565b5f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663528a174c846040518263ffffffff1660e01b81526004016116839190612ff4565b606060405180830381865afa15801561169e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116c2919061357b565b92505091505f821415806116d557505f81115b1561163057816040516347749fcb60e01b8152600401610974919061347d565b8015611630575f836001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611738573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061175c91906135c8565b9050610c376001600160a01b03821684308561265e565b5f816001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117b0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117d491906135c8565b90505f816001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016118039190612ff4565b602060405180830381865afa15801561181e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118429190613542565b90508015611630576001600160a01b036101005f5c0481169061186890841682846126b6565b826001600160a01b0316816001600160a01b03167fe8f38899ee6a4204a1a5ae0757b409b58be63978bc756134d464cfbaadc28931846040516118ab919061347d565b60405180910390a350505050565b6033546001600160a01b031633146109465760405162461bcd60e51b81526004016109749061361a565b606580546001600160a01b0319169055610986816126d5565b5f54610100900460ff166119225760405162461bcd60e51b815260040161097490613671565b610946612726565b5f54610100900460ff166119505760405162461bcd60e51b815260040161097490613671565b610946612755565b60026097540361197a5760405162461bcd60e51b8152600401610974906136b4565b6002609755565b5f5f846001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119bf573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119e391906135c8565b90505f6119f260025c866136d8565b9050611a086001600160a01b038316878361277b565b6040516323323e0360e01b81525f906001600160a01b038816906323323e0390611a38908b9086906004016136eb565b6020604051808303815f875af1158015611a54573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a789190613542565b90508015611a9b5780604051631f32531d60e21b8152600401610974919061347d565b611aa788888588612802565b98975050505050505050565b5f5f866001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611af1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b1591906135c8565b60408051636f307dc360e01b815290519192506001600160a01b0360015c16916004805c925f928592636f307dc3928082019260209290918290030181865afa158015611b64573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b8891906135c8565b90505f611b99858b84868c8c6129bd565b90505f611ba860025c836136d8565b9050611bbe6001600160a01b038416868361277b565b5f856001600160a01b03166323323e038f846040518363ffffffff1660e01b8152600401611bed9291906136eb565b6020604051808303815f875af1158015611c09573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c2d9190613542565b90508015611c505780604051631f32531d60e21b8152600401610974919061347d565b611c5c8e8e898e612802565b9e9d5050505050505050505050505050565b5f5f866001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cac573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cd091906135c8565b60408051636f307dc360e01b815290519192506001600160a01b0360015c16916004805c925f928592636f307dc3928082019260209290918290030181865afa158015611d1f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d4391906135c8565b90505f611d528a60035c6136d8565b90505f611ba8868385878d8d6129bd565b5f5f866001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611da1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dc591906135c8565b90505f876001600160a01b03166317bfdfbc8a6040518263ffffffff1660e01b8152600401611df49190612ff4565b6020604051808303815f875af1158015611e10573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e349190613542565b90505f818811611e445787611e46565b815b9050611e5c6001600160a01b0384168a8361277b565b6040516304c11f0360e31b81525f906001600160a01b038b1690632608f81890611e8c908e9086906004016136eb565b6020604051808303815f875af1158015611ea8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ecc9190613542565b90508015611eef578060405163014e9bb360e01b8152600401610974919061347d565b505060408051629df3ab60e31b815290516001600160a01b0360015c8116935060025c925f927f0000000000000000000000000000000000000000000000000000000000000000909216916304ef9d58916004808201926020929091908290030181865afa158015611f63573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f879190613542565b90505f5f8211611f975782611fed565b611fa982670de0b6b3a76400006136f9565b6001611fbd84670de0b6b3a76400006136f9565b611fcf670de0b6b3a76400008761370c565b611fd991906136d8565b611fe391906136f9565b611fed919061373f565b90505f846001600160a01b031663df3a516e8e846040518363ffffffff1660e01b815260040161201e9291906136eb565b6020604051808303815f875af115801561203a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061205e9190613542565b905080156120815780604051636083d26960e01b8152600401610974919061347d565b5050505f826001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120c1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120e591906135c8565b905061216181826001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016121179190612ff4565b602060405180830381865afa158015612132573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121569190613542565b8660045c8b8b6129bd565b5061216c888a6136d8565b945084846001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161219b9190612ff4565b602060405180830381865afa1580156121b6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121da9190613542565b10156121f957604051630f1b15df60e21b815260040160405180910390fd5b61220d6001600160a01b0385168b8761277b565b505050509695505050505050565b5f5f846001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612259573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061227d91906135c8565b90505f856001600160a01b03166317bfdfbc886040518263ffffffff1660e01b81526004016122ac9190612ff4565b6020604051808303815f875af11580156122c8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122ec9190613542565b90505f8186116122fc57856122fe565b815b90506123146001600160a01b038416888361277b565b6040516304c11f0360e31b81525f906001600160a01b03891690632608f81890612344908c9086906004016136eb565b6020604051808303815f875af1158015612360573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123849190613542565b905080156123a7578060405163014e9bb360e01b8152600401610974919061347d565b6123b186886136d8565b94505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304ef9d586040518163ffffffff1660e01b8152600401602060405180830381865afa158015612410573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124349190613542565b90505f5f8211612444578661249a565b61245682670de0b6b3a76400006136f9565b600161246a84670de0b6b3a76400006136f9565b61247c670de0b6b3a76400008b61370c565b61248691906136d8565b61249091906136f9565b61249a919061373f565b90505f8a6001600160a01b0316633af9e6698d6040518263ffffffff1660e01b81526004016124c99190612ff4565b6020604051808303815f875af11580156124e5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125099190613542565b905080821115612517578091505b604051636f9d28b760e11b81526001600160a01b038c169063df3a516e90612545908f9086906004016136eb565b6020604051808303815f875af1158015612561573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125859190613542565b935083156125a85783604051636083d26960e01b8152600401610974919061347d565b6040516370a0823160e01b815288906001600160a01b038916906370a08231906125d6903090600401612ff4565b602060405180830381865afa1580156125f1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126159190613542565b101561263457604051630f1b15df60e21b815260040160405180910390fd5b6126486001600160a01b0388168c8a61277b565b50505050505050949350505050565b6001609755565b610c37846323b872dd60e01b85858560405160240161267f93929190613752565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612ba5565b6116308363a9059cbb60e01b848460405160240161267f9291906136eb565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff1661274c5760405162461bcd60e51b815260040161097490613671565b610946336118e3565b5f54610100900460ff166126575760405162461bcd60e51b815260040161097490613671565b5f63095ea7b360e01b83836040516024016127979291906136eb565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915290506127d58482612c35565b610c37576127f88463095ea7b360e01b855f60405160240161267f92919061377a565b610c378482612ba5565b6040516370a0823160e01b815281905f906001600160a01b038516906370a0823190612832908890600401612ff4565b602060405180830381865afa15801561284d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128719190613542565b90505f856001600160a01b031663856e5bb388856040518363ffffffff1660e01b81526004016128a29291906136eb565b6020604051808303815f875af11580156128be573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128e29190613542565b9050801561290557806040516343f10e9d60e11b8152600401610974919061347d565b6040516370a0823160e01b81525f906001600160a01b038716906370a0823190612933908a90600401612ff4565b602060405180830381865afa15801561294e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129729190613542565b90508361297f82856136f9565b101561299e57604051630f1b15df60e21b815260040160405180910390fd5b6129b26001600160a01b038716888661277b565b505050949350505050565b5f6129f26001600160a01b0388167f0000000000000000000000000000000000000000000000000000000000000000886126b6565b6040516370a0823160e01b81525f906001600160a01b038716906370a0823190612a20903090600401612ff4565b602060405180830381865afa158015612a3b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a5f9190613542565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168585604051612a9c9291906137a7565b5f604051808303815f865af19150503d805f8114612ad5576040519150601f19603f3d011682016040523d82523d5f602084013e612ada565b606091505b5050905080612afc5760405163428c0cc760e01b815260040160405180910390fd5b6040516370a0823160e01b81525f906001600160a01b038916906370a0823190612b2a903090600401612ff4565b602060405180830381865afa158015612b45573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b699190613542565b9050612b7583826136f9565b935086841015612b9857604051638199f5f360e01b815260040160405180910390fd5b5050509695505050505050565b5f612bf9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612cd89092919063ffffffff16565b905080515f1480612c19575080806020019051810190612c199190613524565b6116305760405162461bcd60e51b8152600401610974906137f9565b5f5f5f846001600160a01b031684604051612c509190613835565b5f604051808303815f865af19150503d805f8114612c89576040519150601f19603f3d011682016040523d82523d5f602084013e612c8e565b606091505b5091509150818015612cb8575080511580612cb8575080806020019051810190612cb89190613524565b8015612ccd57506001600160a01b0385163b15155b925050505b92915050565b6060612ce684845f85612cf0565b90505b9392505050565b606082471015612d125760405162461bcd60e51b815260040161097490613882565b5f5f866001600160a01b03168587604051612d2d9190613835565b5f6040518083038185875af1925050503d805f8114612d67576040519150601f19603f3d011682016040523d82523d5f602084013e612d6c565b606091505b5091509150612d7d87838387612d8a565b925050505b949350505050565b60608315612dc85782515f03612dc1576001600160a01b0385163b612dc15760405162461bcd60e51b8152600401610974906138c5565b5081612d82565b612d828383815115612ddd5781518083602001fd5b8060405162461bcd60e51b81526004016109749190613902565b5f6001600160a01b038216612cd2565b5f612cd282612df7565b5f612cd282612e07565b612e2481612e11565b82525050565b60208101612cd28284612e1b565b612e4181612e07565b8114610986575f5ffd5b8035612cd281612e38565b80612e41565b8035612cd281612e56565b5f5f83601f840112612e7a57612e7a5f5ffd5b50813567ffffffffffffffff811115612e9457612e945f5ffd5b602083019150836001820283011115612eae57612eae5f5ffd5b9250929050565b5f5f5f5f5f5f5f60c0888a031215612ece57612ece5f5ffd5b5f612ed98a8a612e4b565b9750506020612eea8a828b01612e4b565b9650506040612efb8a828b01612e5c565b9550506060612f0c8a828b01612e5c565b9450506080612f1d8a828b01612e5c565b93505060a088013567ffffffffffffffff811115612f3c57612f3c5f5ffd5b612f488a828b01612e67565b925092505092959891949750929550565b5f5f5f5f5f5f5f60c0888a031215612f7257612f725f5ffd5b5f612f7d8a8a612e4b565b9750506020612f8e8a828b01612e5c565b9650506040612efb8a828b01612e4b565b5f5f5f60608486031215612fb457612fb45f5ffd5b5f612fbf8686612e4b565b9350506020612fd086828701612e5c565b9250506040612fe186828701612e5c565b9150509250925092565b612e2481612df7565b60208101612cd28284612feb565b5f5f60408385031215613016576130165f5ffd5b5f6130218585612e4b565b925050602061303285828601612e5c565b9150509250929050565b612e4181612df7565b8035612cd28161303c565b5f60208284031215613063576130635f5ffd5b5f612d828484613045565b5f5f83601f840112613081576130815f5ffd5b50813567ffffffffffffffff81111561309b5761309b5f5ffd5b602083019150836020820283011115612eae57612eae5f5ffd5b5f5f5f5f5f5f5f5f5f5f60c08b8d0312156130d1576130d15f5ffd5b8a3567ffffffffffffffff8111156130ea576130ea5f5ffd5b6130f68d828e0161306e565b9a509a505060208b013567ffffffffffffffff811115613117576131175f5ffd5b6131238d828e0161306e565b985098505060408b013567ffffffffffffffff811115613144576131445f5ffd5b6131508d828e0161306e565b965096505060606131638d828e01613045565b94505060806131748d828e01613045565b93505060a08b013567ffffffffffffffff811115613193576131935f5ffd5b61319f8d828e01612e67565b92509250509295989b9194979a5092959850565b801515612e24565b80612e24565b5f6131cc83836131bb565b505060200190565b5f6131dd825190565b8084526020938401938301805f5b838110156132105781516131ff88826131c1565b9750602083019250506001016131eb565b509495945050505050565b6040810161322982856131b3565b8181036020830152612ce681846131d4565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f6131cc8383612e1b565b5f613277825190565b8084526020938401938301805f5b838110156132105781516132998882613263565b975060208301925050600101613285565b82818337505f910152565b8183525f6020840193506132ca8385846132aa565b601f19601f8401165b9093019392505050565b60a081016132eb8289612feb565b6132f86020830188612feb565b818103604083015261330a818761326e565b9050818103606083015261331e81866131d4565b90508181036080830152611aa78184866132b5565b6040810161334182856131bb565b612ce960208301846131bb565b60a0810161335c8287612feb565b6133696020830186612feb565b818103604083015261337b818561326e565b9050818103606083015261338f81846131d4565b82810360808401525f81529050602081019695505050505050565b602981525f602082017f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865208152683732bb9037bbb732b960b91b602082015291505b5060400190565b60208082528101612cd2816133aa565b602e81525f602082017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b602082015291506133eb565b60208082528101612cd281613402565b5f60ff8216612cd2565b612e248161345c565b60208101612cd28284613466565b60208101612cd282846131bb565b5f6020828403121561349e5761349e5f5ffd5b5f612d828484612e4b565b801515612e41565b8051612cd2816134a9565b8051612cd281612e56565b5f5f5f606084860312156134dc576134dc5f5ffd5b5f6134e786866134b1565b93505060206134f8868287016134bc565b9250506040612fe1868287016134b1565b604081016135178285612feb565b612ce96020830184612feb565b5f60208284031215613537576135375f5ffd5b5f612d8284846134b1565b5f60208284031215613555576135555f5ffd5b5f612d8284846134bc565b6040810161356e8285612feb565b612ce96020830184612e1b565b5f5f5f60608486031215613590576135905f5ffd5b5f61359b86866134bc565b93505060206135ac868287016134bc565b9250506040612fe1868287016134bc565b8051612cd28161303c565b5f602082840312156135db576135db5f5ffd5b5f612d8284846135bd565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657291019081525f5b5060200190565b60208082528101612cd2816135e6565b602b81525f602082017f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206981526a6e697469616c697a696e6760a81b602082015291506133eb565b60208082528101612cd28161362a565b601f81525f602082017f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081529150613613565b60208082528101612cd281613681565b634e487b7160e01b5f52601160045260245ffd5b80820180821115612cd257612cd26136c4565b604081016133418285612feb565b81810381811115612cd257612cd26136c4565b818102808215838204851417613724576137246136c4565b5092915050565b634e487b7160e01b5f52601260045260245ffd5b5f8261374d5761374d61372b565b500490565b606081016137608286612feb565b61376d6020830185612feb565b612d8260408301846131bb565b604081016137888285612feb565b612ce96020830184613466565b5f6137a18385846132aa565b50500190565b5f612d82828486613795565b602a81525f602082017f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b602082015291506133eb565b60208082528101612cd2816137b3565b8281835e505f910152565b5f61381d825190565b61382b818560208601613809565b9290920192915050565b5f612ce98284613814565b602681525f602082017f416464726573733a20696e73756666696369656e742062616c616e636520666f8152651c8818d85b1b60d21b602082015291506133eb565b60208082528101612cd281613840565b601d81525f602082017f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081529150613613565b60208082528101612cd281613892565b5f6138de825190565b8084526020840193506138f5818560208601613809565b601f19601f8201166132d3565b60208082528101612ce981846138d556fea2646970667358221220512b2315be067daf0697f0324e6327b49545d26765779854a32706075dbfa2de64736f6c634300081c0033","opcodes":"PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x3BED CODESIZE SUB DUP1 PUSH2 0x3BED DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2E SWAP2 PUSH2 0x165 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO DUP1 PUSH2 0x4B JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO JUMPDEST DUP1 PUSH2 0x5D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO JUMPDEST ISZERO PUSH2 0x7B JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x80 MSTORE DUP3 DUP2 AND PUSH1 0xA0 MSTORE DUP2 AND PUSH1 0xC0 MSTORE PUSH2 0x9C PUSH2 0xA4 JUMP JUMPDEST POP POP POP PUSH2 0x20B JUMP JUMPDEST PUSH0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xD4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCB SWAP1 PUSH2 0x1B1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 SLOAD PUSH1 0xFF SWAP1 DUP2 AND EQ PUSH2 0x126 JUMPI PUSH0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP2 PUSH2 0x11D SWAP2 PUSH2 0x1FC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x134 DUP3 PUSH2 0x128 JUMP JUMPDEST PUSH2 0x14D DUP2 PUSH2 0x13A JUMP JUMPDEST DUP2 EQ PUSH2 0x157 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x134 DUP2 PUSH2 0x144 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x17A JUMPI PUSH2 0x17A PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x185 DUP7 DUP7 PUSH2 0x15A JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x196 DUP7 DUP3 DUP8 ADD PUSH2 0x15A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x1A7 DUP7 DUP3 DUP8 ADD PUSH2 0x15A JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x134 DUP2 PUSH1 0x27 DUP2 MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320696E697469 PUSH1 0x20 DUP3 ADD MSTORE PUSH7 0x616C697A696E67 PUSH1 0xC8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0xFF DUP3 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD PUSH2 0x134 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH2 0x3949 PUSH2 0x2A4 PUSH0 CODECOPY PUSH0 DUP2 DUP2 PUSH2 0x14B ADD MSTORE PUSH2 0x1369 ADD MSTORE PUSH0 DUP2 DUP2 PUSH1 0xF9 ADD MSTORE DUP2 DUP2 PUSH2 0x29CD ADD MSTORE PUSH2 0x2A64 ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x198 ADD MSTORE DUP2 DUP2 PUSH2 0x3E7 ADD MSTORE DUP2 DUP2 PUSH2 0x660 ADD MSTORE DUP2 DUP2 PUSH2 0x867 ADD MSTORE DUP2 DUP2 PUSH2 0xB72 ADD MSTORE DUP2 DUP2 PUSH2 0xD9D ADD MSTORE DUP2 DUP2 PUSH2 0xEE8 ADD MSTORE DUP2 DUP2 PUSH2 0x12CF ADD MSTORE DUP2 DUP2 PUSH2 0x13D4 ADD MSTORE DUP2 DUP2 PUSH2 0x1503 ADD MSTORE DUP2 DUP2 PUSH2 0x1596 ADD MSTORE DUP2 DUP2 PUSH2 0x1639 ADD MSTORE DUP2 DUP2 PUSH2 0x1F17 ADD MSTORE PUSH2 0x23B6 ADD MSTORE PUSH2 0x3949 PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF0 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x79BA5097 GT PUSH2 0x93 JUMPI DUP1 PUSH4 0xC78BEFBE GT PUSH2 0x63 JUMPI DUP1 PUSH4 0xC78BEFBE EQ PUSH2 0x1FF JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH2 0x212 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x223 JUMPI DUP1 PUSH4 0xFC08F9F6 EQ PUSH2 0x236 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x79BA5097 EQ PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x8129FC1C EQ PUSH2 0x1CA JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0xC6CD25F6 EQ PUSH2 0x1EC JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x3A8F8C43 GT PUSH2 0xCE JUMPI DUP1 PUSH4 0x3A8F8C43 EQ PUSH2 0x16D JUMPI DUP1 PUSH4 0x3C3A2C21 EQ PUSH2 0x180 JUMPI DUP1 PUSH4 0x5F82C67E EQ PUSH2 0x193 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x1BA JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xFC6A11C EQ PUSH2 0xF4 JUMPI DUP1 PUSH4 0x13424801 EQ PUSH2 0x131 JUMPI DUP1 PUSH4 0x33E1567F EQ PUSH2 0x146 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x11B PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x128 SWAP2 SWAP1 PUSH2 0x2E2A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x144 PUSH2 0x13F CALLDATASIZE PUSH1 0x4 PUSH2 0x2EB5 JUMP JUMPDEST PUSH2 0x257 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11B PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x144 PUSH2 0x17B CALLDATASIZE PUSH1 0x4 PUSH2 0x2F59 JUMP JUMPDEST PUSH2 0x4D0 JUMP JUMPDEST PUSH2 0x144 PUSH2 0x18E CALLDATASIZE PUSH1 0x4 PUSH2 0x2F9F JUMP JUMPDEST PUSH2 0x73E JUMP JUMPDEST PUSH2 0x11B PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x144 PUSH2 0x935 JUMP JUMPDEST PUSH2 0x144 PUSH2 0x948 JUMP JUMPDEST PUSH2 0x144 PUSH2 0x989 JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x128 SWAP2 SWAP1 PUSH2 0x2FF4 JUMP JUMPDEST PUSH2 0x144 PUSH2 0x1FA CALLDATASIZE PUSH1 0x4 PUSH2 0x3002 JUMP JUMPDEST PUSH2 0xA59 JUMP JUMPDEST PUSH2 0x144 PUSH2 0x20D CALLDATASIZE PUSH1 0x4 PUSH2 0x2F59 JUMP JUMPDEST PUSH2 0xC3D JUMP JUMPDEST PUSH1 0x65 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1DF JUMP JUMPDEST PUSH2 0x144 PUSH2 0x231 CALLDATASIZE PUSH1 0x4 PUSH2 0x3050 JUMP JUMPDEST PUSH2 0xE61 JUMP JUMPDEST PUSH2 0x249 PUSH2 0x244 CALLDATASIZE PUSH1 0x4 PUSH2 0x30B5 JUMP JUMPDEST PUSH2 0xED2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x128 SWAP3 SWAP2 SWAP1 PUSH2 0x321B JUMP JUMPDEST DUP4 PUSH0 SUB PUSH2 0x277 JUMPI PUSH1 0x40 MLOAD PUSH4 0x62EC8DE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x2A9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7239C0DB PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2B2 DUP8 PUSH2 0x12B6 JUMP JUMPDEST PUSH2 0x2BB DUP7 PUSH2 0x12B6 JUMP JUMPDEST PUSH2 0x2C3 PUSH2 0x13BD JUMP JUMPDEST PUSH2 0x2CC DUP8 PUSH2 0x1467 JUMP JUMPDEST PUSH2 0x2D5 DUP7 PUSH2 0x1467 JUMP JUMPDEST PUSH2 0x2DF CALLER DUP9 PUSH2 0x14EC JUMP JUMPDEST PUSH2 0x2E8 CALLER PUSH2 0x1635 JUMP JUMPDEST PUSH2 0x2F3 DUP7 CALLER DUP8 PUSH2 0x16F5 JUMP JUMPDEST CALLER PUSH0 DUP1 TLOAD PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND PUSH2 0x100 DUP4 MUL OR SWAP1 TSTORE POP DUP7 PUSH1 0x1 DUP1 TLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND OR SWAP1 TSTORE POP DUP5 DUP1 PUSH1 0x3 TSTORE POP DUP3 DUP1 PUSH1 0x4 TSTORE POP PUSH1 0x3 PUSH0 DUP1 TLOAD PUSH1 0xFF NOT AND DUP3 OR SWAP1 TSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH0 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP7 DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x376 JUMPI PUSH2 0x376 PUSH2 0x324F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH0 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP6 DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x3C5 JUMPI PUSH2 0x3C5 PUSH2 0x324F JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x40 MLOAD PUSH4 0x15513B67 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x5544ED9C SWAP1 PUSH2 0x426 SWAP1 CALLER SWAP1 ADDRESS SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP12 SWAP1 DUP12 SWAP1 PUSH1 0x4 ADD PUSH2 0x32DD JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x43D JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x44F JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH2 0x45C CALLER PUSH2 0x1635 JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4BDF2F6F97B9E53FBB880300A2B1E8F12110F6CBCC3279602053BCF6F5E05103 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH2 0x4AB SWAP3 SWAP2 SWAP1 PUSH2 0x3333 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x4BC DUP10 PUSH2 0x1773 JUMP JUMPDEST PUSH2 0x4C5 DUP9 PUSH2 0x1773 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP4 PUSH0 SUB PUSH2 0x4F0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x62EC8DE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x522 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7239C0DB PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x52B DUP8 PUSH2 0x12B6 JUMP JUMPDEST PUSH2 0x534 DUP6 PUSH2 0x12B6 JUMP JUMPDEST PUSH2 0x53C PUSH2 0x13BD JUMP JUMPDEST PUSH2 0x545 DUP8 PUSH2 0x1467 JUMP JUMPDEST PUSH2 0x54E DUP6 PUSH2 0x1467 JUMP JUMPDEST PUSH2 0x558 CALLER DUP9 PUSH2 0x14EC JUMP JUMPDEST PUSH2 0x561 CALLER PUSH2 0x1635 JUMP JUMPDEST PUSH2 0x56C DUP8 CALLER DUP9 PUSH2 0x16F5 JUMP JUMPDEST CALLER PUSH0 DUP1 TLOAD PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND PUSH2 0x100 DUP4 MUL OR SWAP1 TSTORE POP DUP7 PUSH1 0x1 DUP1 TLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND OR SWAP1 TSTORE POP DUP6 DUP1 PUSH1 0x2 TSTORE POP DUP3 DUP1 PUSH1 0x4 TSTORE POP PUSH1 0x2 PUSH0 DUP1 TLOAD PUSH1 0xFF NOT AND DUP3 OR SWAP1 TSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH0 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP6 DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x5EF JUMPI PUSH2 0x5EF PUSH2 0x324F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH0 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP6 DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x63E JUMPI PUSH2 0x63E PUSH2 0x324F JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x40 MLOAD PUSH4 0x15513B67 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x5544ED9C SWAP1 PUSH2 0x69F SWAP1 CALLER SWAP1 ADDRESS SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP12 SWAP1 DUP12 SWAP1 PUSH1 0x4 ADD PUSH2 0x32DD JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6B6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6C8 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH2 0x6D5 CALLER PUSH2 0x1635 JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2535D675850D7C542DC54C7AA081F27A11D1B0DF3F3DB67275CE0A9D05627434 DUP12 DUP11 PUSH1 0x40 MLOAD PUSH2 0x724 SWAP3 SWAP2 SWAP1 PUSH2 0x3333 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x735 DUP10 PUSH2 0x1773 JUMP JUMPDEST PUSH2 0x4C5 DUP8 PUSH2 0x1773 JUMP JUMPDEST DUP1 PUSH0 SUB PUSH2 0x75E JUMPI PUSH1 0x40 MLOAD PUSH4 0x62EC8DE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x767 DUP4 PUSH2 0x12B6 JUMP JUMPDEST PUSH2 0x76F PUSH2 0x13BD JUMP JUMPDEST PUSH2 0x778 DUP4 PUSH2 0x1467 JUMP JUMPDEST PUSH2 0x782 CALLER DUP5 PUSH2 0x14EC JUMP JUMPDEST PUSH2 0x78B CALLER PUSH2 0x1635 JUMP JUMPDEST PUSH2 0x796 DUP4 CALLER DUP5 PUSH2 0x16F5 JUMP JUMPDEST CALLER PUSH0 DUP1 TLOAD PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND PUSH2 0x100 DUP4 MUL OR SWAP1 TSTORE POP PUSH1 0x1 PUSH0 DUP1 TLOAD PUSH1 0xFF NOT AND DUP3 OR SWAP1 TSTORE POP DUP2 DUP1 PUSH1 0x2 TSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH0 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x7F6 JUMPI PUSH2 0x7F6 PUSH2 0x324F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH0 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x845 JUMPI PUSH2 0x845 PUSH2 0x324F JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x40 MLOAD PUSH4 0x15513B67 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x5544ED9C SWAP1 PUSH2 0x8A2 SWAP1 CALLER SWAP1 ADDRESS SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x334E JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8B9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8CB JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH2 0x8D8 CALLER PUSH2 0x1635 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x49CEF9D2C3F3F5785B1AD7FACB0837A43E60A785A0141101E658F5565664CD89 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x91D SWAP3 SWAP2 SWAP1 PUSH2 0x3333 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x92E DUP6 PUSH2 0x1773 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x93D PUSH2 0x18B9 JUMP JUMPDEST PUSH2 0x946 PUSH0 PUSH2 0x18E3 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x65 SLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 EQ PUSH2 0x97D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP1 PUSH2 0x33F2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x986 DUP2 PUSH2 0x18E3 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x9A7 JUMPI POP PUSH0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x9C0 JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9C0 JUMPI POP PUSH0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x9DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP1 PUSH2 0x344C JUMP JUMPDEST PUSH0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x9FD JUMPI PUSH0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0xA05 PUSH2 0x18FC JUMP JUMPDEST PUSH2 0xA0D PUSH2 0x192A JUMP JUMPDEST DUP1 ISZERO PUSH2 0x986 JUMPI PUSH0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH2 0xA4E SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x346F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST DUP1 PUSH0 SUB PUSH2 0xA79 JUMPI PUSH1 0x40 MLOAD PUSH4 0x62EC8DE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xA82 DUP3 PUSH2 0x12B6 JUMP JUMPDEST PUSH2 0xA8A PUSH2 0x13BD JUMP JUMPDEST CALLER PUSH0 DUP1 TLOAD PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND PUSH2 0x100 DUP4 MUL OR SWAP1 TSTORE POP DUP2 PUSH1 0x1 DUP1 TLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND OR SWAP1 TSTORE POP PUSH1 0x5 PUSH0 DUP1 TLOAD PUSH1 0xFF NOT AND DUP3 OR SWAP1 TSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH0 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xB01 JUMPI PUSH2 0xB01 PUSH2 0x324F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH0 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xB50 JUMPI PUSH2 0xB50 PUSH2 0x324F JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x40 MLOAD PUSH4 0x15513B67 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x5544ED9C SWAP1 PUSH2 0xBAD SWAP1 CALLER SWAP1 ADDRESS SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x334E JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBC4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBD6 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH2 0xBE3 CALLER PUSH2 0x1635 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x9858E3A66FD738B1F0F73208C9090CA5A20EE504DF594271E464D4BB4CDA0E6F DUP6 PUSH1 0x40 MLOAD PUSH2 0xC26 SWAP2 SWAP1 PUSH2 0x347D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0xC37 DUP5 PUSH2 0x1773 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST DUP4 PUSH0 SUB PUSH2 0xC5D JUMPI PUSH1 0x40 MLOAD PUSH4 0x62EC8DE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0xC8F JUMPI PUSH1 0x40 MLOAD PUSH4 0x7239C0DB PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xC98 DUP8 PUSH2 0x12B6 JUMP JUMPDEST PUSH2 0xCA1 DUP6 PUSH2 0x12B6 JUMP JUMPDEST PUSH2 0xCA9 PUSH2 0x13BD JUMP JUMPDEST CALLER PUSH0 DUP1 TLOAD PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND PUSH2 0x100 DUP4 MUL OR SWAP1 TSTORE POP DUP7 PUSH1 0x1 DUP1 TLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND OR SWAP1 TSTORE POP DUP6 DUP1 PUSH1 0x2 TSTORE POP DUP3 DUP1 PUSH1 0x4 TSTORE POP PUSH1 0x4 PUSH0 DUP1 TLOAD PUSH1 0xFF NOT AND DUP3 OR SWAP1 TSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH0 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP6 DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xD2C JUMPI PUSH2 0xD2C PUSH2 0x324F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH0 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP6 DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xD7B JUMPI PUSH2 0xD7B PUSH2 0x324F JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x40 MLOAD PUSH4 0x15513B67 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x5544ED9C SWAP1 PUSH2 0xDDC SWAP1 CALLER SWAP1 ADDRESS SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP12 SWAP1 DUP12 SWAP1 PUSH1 0x4 ADD PUSH2 0x32DD JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDF3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE05 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH2 0xE12 CALLER PUSH2 0x1635 JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC40371CEE960C145E7AF5E62A37DFD2F97089C030C2427AD853AE214E815EBED DUP12 DUP11 PUSH1 0x40 MLOAD PUSH2 0x724 SWAP3 SWAP2 SWAP1 PUSH2 0x3333 JUMP JUMPDEST PUSH2 0xE69 PUSH2 0x18B9 JUMP JUMPDEST PUSH1 0x65 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH2 0xE9A PUSH1 0x33 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x38D16B8CAC22D99FC7C124B9CD0DE2D3FA1FAEF420BFE791D8C362D765E22700 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP JUMP JUMPDEST PUSH0 PUSH1 0x60 PUSH2 0xEDD PUSH2 0x1958 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0xF26 JUMPI PUSH1 0x40 MLOAD PUSH4 0x41C83021 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND ADDRESS EQ PUSH2 0xF4F JUMPI PUSH1 0x40 MLOAD PUSH4 0x4DB910D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x100 PUSH0 TLOAD DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP1 DUP7 AND EQ PUSH2 0xF81 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A057C43 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP12 EQ ISZERO DUP1 PUSH2 0xF92 JUMPI POP PUSH1 0x1 DUP10 EQ ISZERO JUMPDEST DUP1 PUSH2 0xF9E JUMPI POP PUSH1 0x1 DUP8 EQ ISZERO JUMPDEST ISZERO PUSH2 0xFBC JUMPI PUSH1 0x40 MLOAD PUSH4 0x4F7D8FBD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0x1 PUSH1 0xFF PUSH0 TLOAD AND PUSH1 0x5 DUP2 GT ISZERO PUSH2 0xFF4 JUMPI PUSH2 0xFF4 PUSH2 0x323B JUMP JUMPDEST SUB PUSH2 0x107E JUMPI PUSH2 0x105B DUP6 DUP14 DUP14 PUSH0 DUP2 DUP2 LT PUSH2 0x100F JUMPI PUSH2 0x100F PUSH2 0x324F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1024 SWAP2 SWAP1 PUSH2 0x348B JUMP JUMPDEST DUP13 DUP13 PUSH0 DUP2 DUP2 LT PUSH2 0x1036 JUMPI PUSH2 0x1036 PUSH2 0x324F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP12 DUP12 PUSH0 DUP2 DUP2 LT PUSH2 0x104F JUMPI PUSH2 0x104F PUSH2 0x324F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x1981 JUMP JUMPDEST DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x106D JUMPI PUSH2 0x106D PUSH2 0x324F JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x1299 JUMP JUMPDEST PUSH1 0x2 PUSH1 0xFF PUSH0 TLOAD AND PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1096 JUMPI PUSH2 0x1096 PUSH2 0x323B JUMP JUMPDEST SUB PUSH2 0x10FF JUMPI PUSH2 0x105B DUP6 DUP14 DUP14 PUSH0 DUP2 DUP2 LT PUSH2 0x10B1 JUMPI PUSH2 0x10B1 PUSH2 0x324F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x10C6 SWAP2 SWAP1 PUSH2 0x348B JUMP JUMPDEST DUP13 DUP13 PUSH0 DUP2 DUP2 LT PUSH2 0x10D8 JUMPI PUSH2 0x10D8 PUSH2 0x324F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP12 DUP12 PUSH0 DUP2 DUP2 LT PUSH2 0x10F1 JUMPI PUSH2 0x10F1 PUSH2 0x324F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 DUP9 PUSH2 0x1AB3 JUMP JUMPDEST PUSH1 0x3 PUSH1 0xFF PUSH0 TLOAD AND PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1117 JUMPI PUSH2 0x1117 PUSH2 0x323B JUMP JUMPDEST SUB PUSH2 0x1180 JUMPI PUSH2 0x105B DUP6 DUP14 DUP14 PUSH0 DUP2 DUP2 LT PUSH2 0x1132 JUMPI PUSH2 0x1132 PUSH2 0x324F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1147 SWAP2 SWAP1 PUSH2 0x348B JUMP JUMPDEST DUP13 DUP13 PUSH0 DUP2 DUP2 LT PUSH2 0x1159 JUMPI PUSH2 0x1159 PUSH2 0x324F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP12 DUP12 PUSH0 DUP2 DUP2 LT PUSH2 0x1172 JUMPI PUSH2 0x1172 PUSH2 0x324F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 DUP9 PUSH2 0x1C6E JUMP JUMPDEST PUSH1 0x4 PUSH1 0xFF PUSH0 TLOAD AND PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1198 JUMPI PUSH2 0x1198 PUSH2 0x323B JUMP JUMPDEST SUB PUSH2 0x1201 JUMPI PUSH2 0x105B DUP6 DUP14 DUP14 PUSH0 DUP2 DUP2 LT PUSH2 0x11B3 JUMPI PUSH2 0x11B3 PUSH2 0x324F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x11C8 SWAP2 SWAP1 PUSH2 0x348B JUMP JUMPDEST DUP13 DUP13 PUSH0 DUP2 DUP2 LT PUSH2 0x11DA JUMPI PUSH2 0x11DA PUSH2 0x324F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP12 DUP12 PUSH0 DUP2 DUP2 LT PUSH2 0x11F3 JUMPI PUSH2 0x11F3 PUSH2 0x324F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 DUP9 PUSH2 0x1D63 JUMP JUMPDEST PUSH1 0x5 PUSH1 0xFF PUSH0 TLOAD AND PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1219 JUMPI PUSH2 0x1219 PUSH2 0x323B JUMP JUMPDEST SUB PUSH2 0x1280 JUMPI PUSH2 0x105B DUP6 DUP14 DUP14 PUSH0 DUP2 DUP2 LT PUSH2 0x1234 JUMPI PUSH2 0x1234 PUSH2 0x324F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1249 SWAP2 SWAP1 PUSH2 0x348B JUMP JUMPDEST DUP13 DUP13 PUSH0 DUP2 DUP2 LT PUSH2 0x125B JUMPI PUSH2 0x125B PUSH2 0x324F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP12 DUP12 PUSH0 DUP2 DUP2 LT PUSH2 0x1274 JUMPI PUSH2 0x1274 PUSH2 0x324F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x221B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x9C3C9567 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SWAP2 POP PUSH2 0x12A7 PUSH1 0x1 PUSH1 0x97 SSTORE JUMP JUMPDEST SWAP11 POP SWAP11 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x8E8F294B PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x8E8F294B SWAP1 PUSH2 0x1304 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x2FF4 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x131F JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1343 SWAP2 SWAP1 PUSH2 0x34C7 JUMP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x1367 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x5A9A1EB9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP2 SWAP1 PUSH2 0x2FF4 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x13B9 JUMPI PUSH1 0x40 MLOAD PUSH4 0xBAECCEFD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2173067 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x10B98338 SWAP1 PUSH2 0x140B SWAP1 CALLER SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x3509 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1426 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x144A SWAP2 SWAP1 PUSH2 0x3524 JUMP JUMPDEST PUSH2 0x946 JUMPI PUSH1 0x40 MLOAD PUSH4 0x37248AD9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA6AFED95 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x14A5 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x14C9 SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x13B9 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x15FC6CBF PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP2 SWAP1 PUSH2 0x347D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x929FE9A1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x929FE9A1 SWAP1 PUSH2 0x153A SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x3560 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1555 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1579 SWAP2 SWAP1 PUSH2 0x3524 JUMP JUMPDEST PUSH2 0x13B9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6AC2E1E3 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xD585C3C6 SWAP1 PUSH2 0x15CD SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x3509 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x15E9 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x160D SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1630 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x1957D105 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP2 SWAP1 PUSH2 0x347D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x528A174C DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1683 SWAP2 SWAP1 PUSH2 0x2FF4 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x169E JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x16C2 SWAP2 SWAP1 PUSH2 0x357B JUMP JUMPDEST SWAP3 POP POP SWAP2 POP PUSH0 DUP3 EQ ISZERO DUP1 PUSH2 0x16D5 JUMPI POP PUSH0 DUP2 GT JUMPDEST ISZERO PUSH2 0x1630 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x47749FCB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP2 SWAP1 PUSH2 0x347D JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1630 JUMPI PUSH0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1738 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x175C SWAP2 SWAP1 PUSH2 0x35C8 JUMP JUMPDEST SWAP1 POP PUSH2 0xC37 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP5 ADDRESS DUP6 PUSH2 0x265E JUMP JUMPDEST PUSH0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17B0 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x17D4 SWAP2 SWAP1 PUSH2 0x35C8 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1803 SWAP2 SWAP1 PUSH2 0x2FF4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x181E JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1842 SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1630 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x100 PUSH0 TLOAD DIV DUP2 AND SWAP1 PUSH2 0x1868 SWAP1 DUP5 AND DUP3 DUP5 PUSH2 0x26B6 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xE8F38899EE6A4204A1A5AE0757B409B58BE63978BC756134D464CFBAADC28931 DUP5 PUSH1 0x40 MLOAD PUSH2 0x18AB SWAP2 SWAP1 PUSH2 0x347D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x946 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP1 PUSH2 0x361A JUMP JUMPDEST PUSH1 0x65 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH2 0x986 DUP2 PUSH2 0x26D5 JUMP JUMPDEST PUSH0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1922 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP1 PUSH2 0x3671 JUMP JUMPDEST PUSH2 0x946 PUSH2 0x2726 JUMP JUMPDEST PUSH0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1950 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP1 PUSH2 0x3671 JUMP JUMPDEST PUSH2 0x946 PUSH2 0x2755 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x97 SLOAD SUB PUSH2 0x197A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP1 PUSH2 0x36B4 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x97 SSTORE JUMP JUMPDEST PUSH0 PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19BF JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x19E3 SWAP2 SWAP1 PUSH2 0x35C8 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x19F2 PUSH1 0x2 TLOAD DUP7 PUSH2 0x36D8 JUMP JUMPDEST SWAP1 POP PUSH2 0x1A08 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP8 DUP4 PUSH2 0x277B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23323E03 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0x23323E03 SWAP1 PUSH2 0x1A38 SWAP1 DUP12 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x36EB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1A54 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A78 SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1A9B JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x1F32531D PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP2 SWAP1 PUSH2 0x347D JUMP JUMPDEST PUSH2 0x1AA7 DUP9 DUP9 DUP6 DUP9 PUSH2 0x2802 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1AF1 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1B15 SWAP2 SWAP1 PUSH2 0x35C8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x6F307DC3 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x1 TLOAD AND SWAP2 PUSH1 0x4 DUP1 TLOAD SWAP3 PUSH0 SWAP3 DUP6 SWAP3 PUSH4 0x6F307DC3 SWAP3 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B64 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1B88 SWAP2 SWAP1 PUSH2 0x35C8 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x1B99 DUP6 DUP12 DUP5 DUP7 DUP13 DUP13 PUSH2 0x29BD JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x1BA8 PUSH1 0x2 TLOAD DUP4 PUSH2 0x36D8 JUMP JUMPDEST SWAP1 POP PUSH2 0x1BBE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP7 DUP4 PUSH2 0x277B JUMP JUMPDEST PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23323E03 DUP16 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1BED SWAP3 SWAP2 SWAP1 PUSH2 0x36EB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C09 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1C2D SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1C50 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x1F32531D PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP2 SWAP1 PUSH2 0x347D JUMP JUMPDEST PUSH2 0x1C5C DUP15 DUP15 DUP10 DUP15 PUSH2 0x2802 JUMP JUMPDEST SWAP15 SWAP14 POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CAC JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1CD0 SWAP2 SWAP1 PUSH2 0x35C8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x6F307DC3 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x1 TLOAD AND SWAP2 PUSH1 0x4 DUP1 TLOAD SWAP3 PUSH0 SWAP3 DUP6 SWAP3 PUSH4 0x6F307DC3 SWAP3 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D1F JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1D43 SWAP2 SWAP1 PUSH2 0x35C8 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x1D52 DUP11 PUSH1 0x3 TLOAD PUSH2 0x36D8 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x1BA8 DUP7 DUP4 DUP6 DUP8 DUP14 DUP14 PUSH2 0x29BD JUMP JUMPDEST PUSH0 PUSH0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DA1 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1DC5 SWAP2 SWAP1 PUSH2 0x35C8 JUMP JUMPDEST SWAP1 POP PUSH0 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x17BFDFBC DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1DF4 SWAP2 SWAP1 PUSH2 0x2FF4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1E10 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1E34 SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 DUP9 GT PUSH2 0x1E44 JUMPI DUP8 PUSH2 0x1E46 JUMP JUMPDEST DUP2 JUMPDEST SWAP1 POP PUSH2 0x1E5C PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP11 DUP4 PUSH2 0x277B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x4C11F03 PUSH1 0xE3 SHL DUP2 MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP1 PUSH4 0x2608F818 SWAP1 PUSH2 0x1E8C SWAP1 DUP15 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x36EB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1EA8 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1ECC SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1EEF JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x14E9BB3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP2 SWAP1 PUSH2 0x347D JUMP JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH3 0x9DF3AB PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x1 TLOAD DUP2 AND SWAP4 POP PUSH1 0x2 TLOAD SWAP3 PUSH0 SWAP3 PUSH32 0x0 SWAP1 SWAP3 AND SWAP2 PUSH4 0x4EF9D58 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F63 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F87 SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH0 DUP3 GT PUSH2 0x1F97 JUMPI DUP3 PUSH2 0x1FED JUMP JUMPDEST PUSH2 0x1FA9 DUP3 PUSH8 0xDE0B6B3A7640000 PUSH2 0x36F9 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x1FBD DUP5 PUSH8 0xDE0B6B3A7640000 PUSH2 0x36F9 JUMP JUMPDEST PUSH2 0x1FCF PUSH8 0xDE0B6B3A7640000 DUP8 PUSH2 0x370C JUMP JUMPDEST PUSH2 0x1FD9 SWAP2 SWAP1 PUSH2 0x36D8 JUMP JUMPDEST PUSH2 0x1FE3 SWAP2 SWAP1 PUSH2 0x36F9 JUMP JUMPDEST PUSH2 0x1FED SWAP2 SWAP1 PUSH2 0x373F JUMP JUMPDEST SWAP1 POP PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDF3A516E DUP15 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x201E SWAP3 SWAP2 SWAP1 PUSH2 0x36EB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x203A JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x205E SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2081 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x6083D269 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP2 SWAP1 PUSH2 0x347D JUMP JUMPDEST POP POP POP PUSH0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x20C1 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x20E5 SWAP2 SWAP1 PUSH2 0x35C8 JUMP JUMPDEST SWAP1 POP PUSH2 0x2161 DUP2 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2117 SWAP2 SWAP1 PUSH2 0x2FF4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2132 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2156 SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST DUP7 PUSH1 0x4 TLOAD DUP12 DUP12 PUSH2 0x29BD JUMP JUMPDEST POP PUSH2 0x216C DUP9 DUP11 PUSH2 0x36D8 JUMP JUMPDEST SWAP5 POP DUP5 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x219B SWAP2 SWAP1 PUSH2 0x2FF4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x21B6 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x21DA SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST LT ISZERO PUSH2 0x21F9 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF1B15DF PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x220D PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP12 DUP8 PUSH2 0x277B JUMP JUMPDEST POP POP POP POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2259 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x227D SWAP2 SWAP1 PUSH2 0x35C8 JUMP JUMPDEST SWAP1 POP PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x17BFDFBC DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x22AC SWAP2 SWAP1 PUSH2 0x2FF4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x22C8 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x22EC SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 DUP7 GT PUSH2 0x22FC JUMPI DUP6 PUSH2 0x22FE JUMP JUMPDEST DUP2 JUMPDEST SWAP1 POP PUSH2 0x2314 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP9 DUP4 PUSH2 0x277B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x4C11F03 PUSH1 0xE3 SHL DUP2 MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH4 0x2608F818 SWAP1 PUSH2 0x2344 SWAP1 DUP13 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x36EB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2360 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2384 SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x23A7 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x14E9BB3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP2 SWAP1 PUSH2 0x347D JUMP JUMPDEST PUSH2 0x23B1 DUP7 DUP9 PUSH2 0x36D8 JUMP JUMPDEST SWAP5 POP PUSH0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4EF9D58 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2410 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2434 SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH0 DUP3 GT PUSH2 0x2444 JUMPI DUP7 PUSH2 0x249A JUMP JUMPDEST PUSH2 0x2456 DUP3 PUSH8 0xDE0B6B3A7640000 PUSH2 0x36F9 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x246A DUP5 PUSH8 0xDE0B6B3A7640000 PUSH2 0x36F9 JUMP JUMPDEST PUSH2 0x247C PUSH8 0xDE0B6B3A7640000 DUP12 PUSH2 0x370C JUMP JUMPDEST PUSH2 0x2486 SWAP2 SWAP1 PUSH2 0x36D8 JUMP JUMPDEST PUSH2 0x2490 SWAP2 SWAP1 PUSH2 0x36F9 JUMP JUMPDEST PUSH2 0x249A SWAP2 SWAP1 PUSH2 0x373F JUMP JUMPDEST SWAP1 POP PUSH0 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3AF9E669 DUP14 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24C9 SWAP2 SWAP1 PUSH2 0x2FF4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x24E5 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2509 SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x2517 JUMPI DUP1 SWAP2 POP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x6F9D28B7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND SWAP1 PUSH4 0xDF3A516E SWAP1 PUSH2 0x2545 SWAP1 DUP16 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x36EB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2561 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2585 SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST SWAP4 POP DUP4 ISZERO PUSH2 0x25A8 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x6083D269 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP2 SWAP1 PUSH2 0x347D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE DUP9 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x25D6 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2FF4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x25F1 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2615 SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST LT ISZERO PUSH2 0x2634 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF1B15DF PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2648 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP13 DUP11 PUSH2 0x277B JUMP JUMPDEST POP POP POP POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x97 SSTORE JUMP JUMPDEST PUSH2 0xC37 DUP5 PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x267F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3752 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x2BA5 JUMP JUMPDEST PUSH2 0x1630 DUP4 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x267F SWAP3 SWAP2 SWAP1 PUSH2 0x36EB JUMP JUMPDEST PUSH1 0x33 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x274C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP1 PUSH2 0x3671 JUMP JUMPDEST PUSH2 0x946 CALLER PUSH2 0x18E3 JUMP JUMPDEST PUSH0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2657 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP1 PUSH2 0x3671 JUMP JUMPDEST PUSH0 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2797 SWAP3 SWAP2 SWAP1 PUSH2 0x36EB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE SWAP1 POP PUSH2 0x27D5 DUP5 DUP3 PUSH2 0x2C35 JUMP JUMPDEST PUSH2 0xC37 JUMPI PUSH2 0x27F8 DUP5 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP6 PUSH0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x267F SWAP3 SWAP2 SWAP1 PUSH2 0x377A JUMP JUMPDEST PUSH2 0xC37 DUP5 DUP3 PUSH2 0x2BA5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE DUP2 SWAP1 PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x2832 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x2FF4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x284D JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2871 SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST SWAP1 POP PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x856E5BB3 DUP9 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x28A2 SWAP3 SWAP2 SWAP1 PUSH2 0x36EB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x28BE JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x28E2 SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2905 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x43F10E9D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP2 SWAP1 PUSH2 0x347D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x2933 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x2FF4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x294E JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2972 SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST SWAP1 POP DUP4 PUSH2 0x297F DUP3 DUP6 PUSH2 0x36F9 JUMP JUMPDEST LT ISZERO PUSH2 0x299E JUMPI PUSH1 0x40 MLOAD PUSH4 0xF1B15DF PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x29B2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP9 DUP7 PUSH2 0x277B JUMP JUMPDEST POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x29F2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH32 0x0 DUP9 PUSH2 0x26B6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x2A20 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2FF4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A3B JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2A5F SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x2A9C SWAP3 SWAP2 SWAP1 PUSH2 0x37A7 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x2AD5 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2ADA JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x2AFC JUMPI PUSH1 0x40 MLOAD PUSH4 0x428C0CC7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x2B2A SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2FF4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B45 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2B69 SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST SWAP1 POP PUSH2 0x2B75 DUP4 DUP3 PUSH2 0x36F9 JUMP JUMPDEST SWAP4 POP DUP7 DUP5 LT ISZERO PUSH2 0x2B98 JUMPI PUSH1 0x40 MLOAD PUSH4 0x8199F5F3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x2BF9 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2CD8 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH0 EQ DUP1 PUSH2 0x2C19 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2C19 SWAP2 SWAP1 PUSH2 0x3524 JUMP JUMPDEST PUSH2 0x1630 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP1 PUSH2 0x37F9 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x2C50 SWAP2 SWAP1 PUSH2 0x3835 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x2C89 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2C8E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x2CB8 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x2CB8 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2CB8 SWAP2 SWAP1 PUSH2 0x3524 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2CCD JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE ISZERO ISZERO JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x2CE6 DUP5 DUP5 PUSH0 DUP6 PUSH2 0x2CF0 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x2D12 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP1 PUSH2 0x3882 JUMP JUMPDEST PUSH0 PUSH0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x2D2D SWAP2 SWAP1 PUSH2 0x3835 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x2D67 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2D6C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x2D7D DUP8 DUP4 DUP4 DUP8 PUSH2 0x2D8A JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x2DC8 JUMPI DUP3 MLOAD PUSH0 SUB PUSH2 0x2DC1 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x2DC1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP1 PUSH2 0x38C5 JUMP JUMPDEST POP DUP2 PUSH2 0x2D82 JUMP JUMPDEST PUSH2 0x2D82 DUP4 DUP4 DUP2 MLOAD ISZERO PUSH2 0x2DDD JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP2 SWAP1 PUSH2 0x3902 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2CD2 JUMP JUMPDEST PUSH0 PUSH2 0x2CD2 DUP3 PUSH2 0x2DF7 JUMP JUMPDEST PUSH0 PUSH2 0x2CD2 DUP3 PUSH2 0x2E07 JUMP JUMPDEST PUSH2 0x2E24 DUP2 PUSH2 0x2E11 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x2CD2 DUP3 DUP5 PUSH2 0x2E1B JUMP JUMPDEST PUSH2 0x2E41 DUP2 PUSH2 0x2E07 JUMP JUMPDEST DUP2 EQ PUSH2 0x986 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x2CD2 DUP2 PUSH2 0x2E38 JUMP JUMPDEST DUP1 PUSH2 0x2E41 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x2CD2 DUP2 PUSH2 0x2E56 JUMP JUMPDEST PUSH0 PUSH0 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2E7A JUMPI PUSH2 0x2E7A PUSH0 PUSH0 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2E94 JUMPI PUSH2 0x2E94 PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x2EAE JUMPI PUSH2 0x2EAE PUSH0 PUSH0 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xC0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x2ECE JUMPI PUSH2 0x2ECE PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x2ED9 DUP11 DUP11 PUSH2 0x2E4B JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 PUSH2 0x2EEA DUP11 DUP3 DUP12 ADD PUSH2 0x2E4B JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 PUSH2 0x2EFB DUP11 DUP3 DUP12 ADD PUSH2 0x2E5C JUMP JUMPDEST SWAP6 POP POP PUSH1 0x60 PUSH2 0x2F0C DUP11 DUP3 DUP12 ADD PUSH2 0x2E5C JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 PUSH2 0x2F1D DUP11 DUP3 DUP12 ADD PUSH2 0x2E5C JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2F3C JUMPI PUSH2 0x2F3C PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2F48 DUP11 DUP3 DUP12 ADD PUSH2 0x2E67 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xC0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x2F72 JUMPI PUSH2 0x2F72 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x2F7D DUP11 DUP11 PUSH2 0x2E4B JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 PUSH2 0x2F8E DUP11 DUP3 DUP12 ADD PUSH2 0x2E5C JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 PUSH2 0x2EFB DUP11 DUP3 DUP12 ADD PUSH2 0x2E4B JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2FB4 JUMPI PUSH2 0x2FB4 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x2FBF DUP7 DUP7 PUSH2 0x2E4B JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x2FD0 DUP7 DUP3 DUP8 ADD PUSH2 0x2E5C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x2FE1 DUP7 DUP3 DUP8 ADD PUSH2 0x2E5C JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x2E24 DUP2 PUSH2 0x2DF7 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x2CD2 DUP3 DUP5 PUSH2 0x2FEB JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3016 JUMPI PUSH2 0x3016 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x3021 DUP6 DUP6 PUSH2 0x2E4B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3032 DUP6 DUP3 DUP7 ADD PUSH2 0x2E5C JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x2E41 DUP2 PUSH2 0x2DF7 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x2CD2 DUP2 PUSH2 0x303C JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3063 JUMPI PUSH2 0x3063 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x2D82 DUP5 DUP5 PUSH2 0x3045 JUMP JUMPDEST PUSH0 PUSH0 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x3081 JUMPI PUSH2 0x3081 PUSH0 PUSH0 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x309B JUMPI PUSH2 0x309B PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x2EAE JUMPI PUSH2 0x2EAE PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xC0 DUP12 DUP14 SUB SLT ISZERO PUSH2 0x30D1 JUMPI PUSH2 0x30D1 PUSH0 PUSH0 REVERT JUMPDEST DUP11 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x30EA JUMPI PUSH2 0x30EA PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x30F6 DUP14 DUP3 DUP15 ADD PUSH2 0x306E JUMP JUMPDEST SWAP11 POP SWAP11 POP POP PUSH1 0x20 DUP12 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3117 JUMPI PUSH2 0x3117 PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x3123 DUP14 DUP3 DUP15 ADD PUSH2 0x306E JUMP JUMPDEST SWAP9 POP SWAP9 POP POP PUSH1 0x40 DUP12 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3144 JUMPI PUSH2 0x3144 PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x3150 DUP14 DUP3 DUP15 ADD PUSH2 0x306E JUMP JUMPDEST SWAP7 POP SWAP7 POP POP PUSH1 0x60 PUSH2 0x3163 DUP14 DUP3 DUP15 ADD PUSH2 0x3045 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 PUSH2 0x3174 DUP14 DUP3 DUP15 ADD PUSH2 0x3045 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 DUP12 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3193 JUMPI PUSH2 0x3193 PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x319F DUP14 DUP3 DUP15 ADD PUSH2 0x2E67 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP2 SWAP5 SWAP8 SWAP11 POP SWAP3 SWAP6 SWAP9 POP JUMP JUMPDEST DUP1 ISZERO ISZERO PUSH2 0x2E24 JUMP JUMPDEST DUP1 PUSH2 0x2E24 JUMP JUMPDEST PUSH0 PUSH2 0x31CC DUP4 DUP4 PUSH2 0x31BB JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x31DD DUP3 MLOAD SWAP1 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 DUP4 ADD DUP1 PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3210 JUMPI DUP2 MLOAD PUSH2 0x31FF DUP9 DUP3 PUSH2 0x31C1 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP4 ADD SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x31EB JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3229 DUP3 DUP6 PUSH2 0x31B3 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x2CE6 DUP2 DUP5 PUSH2 0x31D4 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x31CC DUP4 DUP4 PUSH2 0x2E1B JUMP JUMPDEST PUSH0 PUSH2 0x3277 DUP3 MLOAD SWAP1 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 DUP4 ADD DUP1 PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3210 JUMPI DUP2 MLOAD PUSH2 0x3299 DUP9 DUP3 PUSH2 0x3263 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP4 ADD SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x3285 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH0 SWAP2 ADD MSTORE JUMP JUMPDEST DUP2 DUP4 MSTORE PUSH0 PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH2 0x32CA DUP4 DUP6 DUP5 PUSH2 0x32AA JUMP JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x32EB DUP3 DUP10 PUSH2 0x2FEB JUMP JUMPDEST PUSH2 0x32F8 PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x2FEB JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x330A DUP2 DUP8 PUSH2 0x326E JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x331E DUP2 DUP7 PUSH2 0x31D4 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x1AA7 DUP2 DUP5 DUP7 PUSH2 0x32B5 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3341 DUP3 DUP6 PUSH2 0x31BB JUMP JUMPDEST PUSH2 0x2CE9 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x31BB JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x335C DUP3 DUP8 PUSH2 0x2FEB JUMP JUMPDEST PUSH2 0x3369 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x2FEB JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x337B DUP2 DUP6 PUSH2 0x326E JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x338F DUP2 DUP5 PUSH2 0x31D4 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH0 DUP2 MSTORE SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x29 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x4F776E61626C6532537465703A2063616C6C6572206973206E6F742074686520 DUP2 MSTORE PUSH9 0x3732BB9037BBB732B9 PUSH1 0xB9 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP2 POP JUMPDEST POP PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2CD2 DUP2 PUSH2 0x33AA JUMP JUMPDEST PUSH1 0x2E DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 DUP2 MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP2 POP PUSH2 0x33EB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2CD2 DUP2 PUSH2 0x3402 JUMP JUMPDEST PUSH0 PUSH1 0xFF DUP3 AND PUSH2 0x2CD2 JUMP JUMPDEST PUSH2 0x2E24 DUP2 PUSH2 0x345C JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x2CD2 DUP3 DUP5 PUSH2 0x3466 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x2CD2 DUP3 DUP5 PUSH2 0x31BB JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x349E JUMPI PUSH2 0x349E PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x2D82 DUP5 DUP5 PUSH2 0x2E4B JUMP JUMPDEST DUP1 ISZERO ISZERO PUSH2 0x2E41 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x2CD2 DUP2 PUSH2 0x34A9 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x2CD2 DUP2 PUSH2 0x2E56 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x34DC JUMPI PUSH2 0x34DC PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x34E7 DUP7 DUP7 PUSH2 0x34B1 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x34F8 DUP7 DUP3 DUP8 ADD PUSH2 0x34BC JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x2FE1 DUP7 DUP3 DUP8 ADD PUSH2 0x34B1 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3517 DUP3 DUP6 PUSH2 0x2FEB JUMP JUMPDEST PUSH2 0x2CE9 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2FEB JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3537 JUMPI PUSH2 0x3537 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x2D82 DUP5 DUP5 PUSH2 0x34B1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3555 JUMPI PUSH2 0x3555 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x2D82 DUP5 DUP5 PUSH2 0x34BC JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x356E DUP3 DUP6 PUSH2 0x2FEB JUMP JUMPDEST PUSH2 0x2CE9 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2E1B JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3590 JUMPI PUSH2 0x3590 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x359B DUP7 DUP7 PUSH2 0x34BC JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x35AC DUP7 DUP3 DUP8 ADD PUSH2 0x34BC JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x2FE1 DUP7 DUP3 DUP8 ADD PUSH2 0x34BC JUMP JUMPDEST DUP1 MLOAD PUSH2 0x2CD2 DUP2 PUSH2 0x303C JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x35DB JUMPI PUSH2 0x35DB PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x2D82 DUP5 DUP5 PUSH2 0x35BD JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 SWAP2 ADD SWAP1 DUP2 MSTORE PUSH0 JUMPDEST POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2CD2 DUP2 PUSH2 0x35E6 JUMP JUMPDEST PUSH1 0x2B DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 DUP2 MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP2 POP PUSH2 0x33EB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2CD2 DUP2 PUSH2 0x362A JUMP JUMPDEST PUSH1 0x1F DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 DUP2 MSTORE SWAP2 POP PUSH2 0x3613 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2CD2 DUP2 PUSH2 0x3681 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x2CD2 JUMPI PUSH2 0x2CD2 PUSH2 0x36C4 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3341 DUP3 DUP6 PUSH2 0x2FEB JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x2CD2 JUMPI PUSH2 0x2CD2 PUSH2 0x36C4 JUMP JUMPDEST DUP2 DUP2 MUL DUP1 DUP3 ISZERO DUP4 DUP3 DIV DUP6 EQ OR PUSH2 0x3724 JUMPI PUSH2 0x3724 PUSH2 0x36C4 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH2 0x374D JUMPI PUSH2 0x374D PUSH2 0x372B JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x3760 DUP3 DUP7 PUSH2 0x2FEB JUMP JUMPDEST PUSH2 0x376D PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2FEB JUMP JUMPDEST PUSH2 0x2D82 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x31BB JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3788 DUP3 DUP6 PUSH2 0x2FEB JUMP JUMPDEST PUSH2 0x2CE9 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3466 JUMP JUMPDEST PUSH0 PUSH2 0x37A1 DUP4 DUP6 DUP5 PUSH2 0x32AA JUMP JUMPDEST POP POP ADD SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x2D82 DUP3 DUP5 DUP7 PUSH2 0x3795 JUMP JUMPDEST PUSH1 0x2A DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E DUP2 MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP2 POP PUSH2 0x33EB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2CD2 DUP2 PUSH2 0x37B3 JUMP JUMPDEST DUP3 DUP2 DUP4 MCOPY POP PUSH0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH0 PUSH2 0x381D DUP3 MLOAD SWAP1 JUMP JUMPDEST PUSH2 0x382B DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x3809 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x2CE9 DUP3 DUP5 PUSH2 0x3814 JUMP JUMPDEST PUSH1 0x26 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F DUP2 MSTORE PUSH6 0x1C8818D85B1B PUSH1 0xD2 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP2 POP PUSH2 0x33EB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2CD2 DUP2 PUSH2 0x3840 JUMP JUMPDEST PUSH1 0x1D DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 DUP2 MSTORE SWAP2 POP PUSH2 0x3613 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2CD2 DUP2 PUSH2 0x3892 JUMP JUMPDEST PUSH0 PUSH2 0x38DE DUP3 MLOAD SWAP1 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH2 0x38F5 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x3809 JUMP JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND PUSH2 0x32D3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2CE9 DUP2 DUP5 PUSH2 0x38D5 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MLOAD 0x2B 0x23 ISZERO 0xBE MOD PUSH30 0xAF0697F0324E6327B49545D26765779854A32706075DBFA2DE64736F6C63 NUMBER STOP ADDMOD SHR STOP CALLER ","sourceMap":"825:36975:39:-:0;;;3034:375;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3126:35:39;;;;:73;;-1:-1:-1;;;;;;3165:34:39;;;3126:73;:105;;;-1:-1:-1;;;;;;3203:28:39;;;3126:105;3122:156;;;3254:13;;-1:-1:-1;;;3254:13:39;;;;;;;;;;;3122:156;-1:-1:-1;;;;;3288:26:39;;;;;3324:24;;;;;3358:12;;;;3380:22;:20;:22::i;:::-;3034:375;;;825:36975;;5939:280:3;6007:13;;;;;;;6006:14;5998:66;;;;-1:-1:-1;;;5998:66:3;;;;;;;:::i;:::-;;;;;;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:3;6140:15;6125:30;;;;;;6174:28;;;;;;;:::i;:::-;;;;;;;;6074:139;5939:280::o;466:96:55:-;503:7;-1:-1:-1;;;;;400:54:55;;532:24;521:35;466:96;-1:-1:-1;;466:96:55:o;568:117::-;626:7;655:24;673:5;655:24;:::i;691:164::-;785:45;824:5;785:45;:::i;:::-;778:5;775:56;765:84;;845:1;842;835:12;765:84;691:164;:::o;861:185::-;964:13;;986:54;964:13;986:54;:::i;1985:775::-;2129:6;2137;2145;2194:2;2182:9;2173:7;2169:23;2165:32;2162:119;;;2200:79;197:1;194;187:12;2200:79;2320:1;2345:85;2422:7;2402:9;2345:85;:::i;:::-;2335:95;;2291:149;2479:2;2505:83;2580:7;2571:6;2560:9;2556:22;2505:83;:::i;:::-;2495:93;;2450:148;2637:2;2663:80;2735:7;2726:6;2715:9;2711:22;2663:80;:::i;:::-;2653:90;;2608:145;1985:775;;;;;:::o;3545:419::-;3749:2;3762:47;;;3734:18;;3826:131;3734:18;3400:2;2872:19;;3081:34;2924:4;2915:14;;3058:58;-1:-1:-1;;;3133:15:55;;;3126:34;3521:12;;;3173:366;4180:214;4045:4;4034:16;;4133:35;;4307:2;4292:18;;4320:67;4062:112;4180:214;825:36975:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@COMPTROLLER_5792":{"entryPoint":null,"id":5792,"parameterSlots":0,"returnSlots":0},"@__Ownable2Step_init_72":{"entryPoint":6396,"id":72,"parameterSlots":0,"returnSlots":0},"@__Ownable_init_unchained_191":{"entryPoint":10022,"id":191,"parameterSlots":0,"returnSlots":0},"@__ReentrancyGuard_init_478":{"entryPoint":6442,"id":478,"parameterSlots":0,"returnSlots":0},"@__ReentrancyGuard_init_unchained_488":{"entryPoint":10069,"id":488,"parameterSlots":0,"returnSlots":0},"@_accrueInterest_7707":{"entryPoint":5223,"id":7707,"parameterSlots":1,"returnSlots":0},"@_borrowAndRepayFlashLoanFee_7685":{"entryPoint":10242,"id":7685,"parameterSlots":4,"returnSlots":1},"@_callOptionalReturnBool_1028":{"entryPoint":11317,"id":1028,"parameterSlots":2,"returnSlots":1},"@_callOptionalReturn_980":{"entryPoint":11173,"id":980,"parameterSlots":2,"returnSlots":0},"@_checkAccountSafe_7792":{"entryPoint":5685,"id":7792,"parameterSlots":1,"returnSlots":0},"@_checkMarketSupported_7827":{"entryPoint":4790,"id":7827,"parameterSlots":1,"returnSlots":0},"@_checkOwner_222":{"entryPoint":6329,"id":222,"parameterSlots":0,"returnSlots":0},"@_checkUserDelegated_7764":{"entryPoint":5053,"id":7764,"parameterSlots":0,"returnSlots":0},"@_handleEnterBorrow_7094":{"entryPoint":7278,"id":7094,"parameterSlots":6,"returnSlots":1},"@_handleEnterCollateral_6997":{"entryPoint":6835,"id":6997,"parameterSlots":6,"returnSlots":1},"@_handleEnterSingleAsset_6900":{"entryPoint":6529,"id":6900,"parameterSlots":4,"returnSlots":1},"@_handleExitCollateral_7275":{"entryPoint":7523,"id":7275,"parameterSlots":6,"returnSlots":1},"@_handleExitSingleAsset_7436":{"entryPoint":8731,"id":7436,"parameterSlots":4,"returnSlots":1},"@_msgSender_1387":{"entryPoint":null,"id":1387,"parameterSlots":0,"returnSlots":1},"@_nonReentrantAfter_522":{"entryPoint":9815,"id":522,"parameterSlots":0,"returnSlots":0},"@_nonReentrantBefore_514":{"entryPoint":6488,"id":514,"parameterSlots":0,"returnSlots":0},"@_performSwap_7518":{"entryPoint":10685,"id":7518,"parameterSlots":6,"returnSlots":1},"@_revert_1358":{"entryPoint":null,"id":1358,"parameterSlots":2,"returnSlots":0},"@_transferDustToInitiator_7607":{"entryPoint":6003,"id":7607,"parameterSlots":1,"returnSlots":0},"@_transferOwnership_124":{"entryPoint":6371,"id":124,"parameterSlots":1,"returnSlots":0},"@_transferOwnership_279":{"entryPoint":9941,"id":279,"parameterSlots":1,"returnSlots":0},"@_transferSeedAmountFromUser_7555":{"entryPoint":5877,"id":7555,"parameterSlots":3,"returnSlots":0},"@_validateAndEnterMarket_7744":{"entryPoint":5356,"id":7744,"parameterSlots":2,"returnSlots":0},"@acceptOwnership_146":{"entryPoint":2376,"id":146,"parameterSlots":0,"returnSlots":0},"@enterLeverageFromBorrow_6368":{"entryPoint":599,"id":6368,"parameterSlots":7,"returnSlots":0},"@enterLeverage_6199":{"entryPoint":1232,"id":6199,"parameterSlots":7,"returnSlots":0},"@enterSingleAssetLeverage_6030":{"entryPoint":1854,"id":6030,"parameterSlots":3,"returnSlots":0},"@executeOperation_6833":{"entryPoint":3794,"id":6833,"parameterSlots":10,"returnSlots":2},"@exitLeverage_6511":{"entryPoint":3133,"id":6511,"parameterSlots":7,"returnSlots":0},"@exitSingleAssetLeverage_6620":{"entryPoint":2649,"id":6620,"parameterSlots":2,"returnSlots":0},"@forceApprove_886":{"entryPoint":10107,"id":886,"parameterSlots":3,"returnSlots":0},"@functionCallWithValue_1183":{"entryPoint":11504,"id":1183,"parameterSlots":4,"returnSlots":1},"@functionCall_1119":{"entryPoint":11480,"id":1119,"parameterSlots":3,"returnSlots":1},"@initialize_5896":{"entryPoint":2441,"id":5896,"parameterSlots":0,"returnSlots":0},"@isContract_1047":{"entryPoint":null,"id":1047,"parameterSlots":1,"returnSlots":1},"@owner_208":{"entryPoint":null,"id":208,"parameterSlots":0,"returnSlots":1},"@pendingOwner_87":{"entryPoint":null,"id":87,"parameterSlots":0,"returnSlots":1},"@renounceOwnership_236":{"entryPoint":2357,"id":236,"parameterSlots":0,"returnSlots":0},"@safeTransferFrom_713":{"entryPoint":9822,"id":713,"parameterSlots":4,"returnSlots":0},"@safeTransfer_686":{"entryPoint":9910,"id":686,"parameterSlots":3,"returnSlots":0},"@swapHelper_5796":{"entryPoint":null,"id":5796,"parameterSlots":0,"returnSlots":0},"@transferOwnership_107":{"entryPoint":3681,"id":107,"parameterSlots":1,"returnSlots":0},"@vBNB_5800":{"entryPoint":null,"id":5800,"parameterSlots":0,"returnSlots":0},"@verifyCallResultFromTarget_1314":{"entryPoint":11658,"id":1314,"parameterSlots":4,"returnSlots":1},"abi_decode_t_address":{"entryPoint":12357,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_address_fromMemory":{"entryPoint":13757,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_array$_t_contract$_IVToken_$5277_$dyn_calldata_ptr":{"entryPoint":12398,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_t_array$_t_uint256_$dyn_calldata_ptr":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_t_bool_fromMemory":{"entryPoint":13489,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes_calldata_ptr":{"entryPoint":11879,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_t_contract$_IVToken_$5277":{"entryPoint":11851,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256":{"entryPoint":11868,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256_fromMemory":{"entryPoint":13500,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":12368,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":13768,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_array$_t_contract$_IVToken_$5277_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptrt_addresst_addresst_bytes_calldata_ptr":{"entryPoint":12469,"id":null,"parameterSlots":2,"returnSlots":10},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":13604,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_boolt_uint256t_bool_fromMemory":{"entryPoint":13511,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_contract$_IVToken_$5277":{"entryPoint":13451,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IVToken_$5277t_contract$_IVToken_$5277t_uint256t_uint256t_uint256t_bytes_calldata_ptr":{"entryPoint":11957,"id":null,"parameterSlots":2,"returnSlots":7},"abi_decode_tuple_t_contract$_IVToken_$5277t_uint256":{"entryPoint":12290,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_contract$_IVToken_$5277t_uint256t_contract$_IVToken_$5277t_uint256t_uint256t_bytes_calldata_ptr":{"entryPoint":12121,"id":null,"parameterSlots":2,"returnSlots":7},"abi_decode_tuple_t_contract$_IVToken_$5277t_uint256t_uint256":{"entryPoint":12191,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":13634,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_uint256t_uint256_fromMemory":{"entryPoint":13691,"id":null,"parameterSlots":2,"returnSlots":3},"abi_encodeUpdatedPos_t_contract$_IVToken_$5277_to_t_address":{"entryPoint":12899,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_t_uint256_to_t_uint256":{"entryPoint":12737,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_address_payable_to_t_address_payable_fromStack":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":12267,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr_fromStack":{"entryPoint":12910,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack":{"entryPoint":12756,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_bool_to_t_bool_fromStack":{"entryPoint":12723,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack":{"entryPoint":12981,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":14229,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":14356,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_contract$_IComptroller_$5454_to_t_address_fromStack":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_contract$_IVToken_$5277_to_t_address":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_contract$_IVToken_$5277_to_t_address_fromStack":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_contract$_SwapHelper_$8322_to_t_address_fromStack":{"entryPoint":11803,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_rational_0_by_1_to_t_uint8_fromStack":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_rational_1_by_1_to_t_uint8_fromStack":{"entryPoint":13414,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack":{"entryPoint":14549,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_stringliteral_225559eb8402045bea7ff07c35d0ad8c0547830223ac1c21d44fb948d6896ebc_to_t_string_memory_ptr_fromStack":{"entryPoint":13226,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c_to_t_string_memory_ptr_fromStack":{"entryPoint":14400,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759_to_t_string_memory_ptr_fromStack":{"entryPoint":13314,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack":{"entryPoint":13798,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_fromStack":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad_to_t_string_memory_ptr_fromStack":{"entryPoint":14482,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b_to_t_string_memory_ptr_fromStack":{"entryPoint":13866,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd_to_t_string_memory_ptr_fromStack":{"entryPoint":14259,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619_to_t_string_memory_ptr_fromStack":{"entryPoint":13953,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_uint256_to_t_uint256":{"entryPoint":12731,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint256_to_t_uint256_fromStack":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":14247,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":14389,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":12276,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_payable_t_address_payable_t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_calldata_ptr__to_t_address_payable_t_address_payable_t_array$_t_address_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":13021,"id":null,"parameterSlots":7,"returnSlots":1},"abi_encode_tuple_t_address_payable_t_address_payable_t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_payable_t_address_payable_t_array$_t_address_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":13134,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed":{"entryPoint":13577,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed":{"entryPoint":14162,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_address_t_contract$_IVToken_$5277__to_t_address_t_address__fromStack_reversed":{"entryPoint":13664,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_rational_0_by_1__to_t_address_t_uint8__fromStack_reversed":{"entryPoint":14202,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed":{"entryPoint":14059,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bool_t_array$_t_uint256_$dyn_memory_ptr__to_t_bool_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":12827,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_contract$_IComptroller_$5454__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IVToken_$5277__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_SwapHelper_$8322__to_t_address__fromStack_reversed":{"entryPoint":11818,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed":{"entryPoint":13423,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":14594,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_225559eb8402045bea7ff07c35d0ad8c0547830223ac1c21d44fb948d6896ebc__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":13298,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":14466,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":13388,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":13850,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":14533,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":13937,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":14329,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":14004,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":13437,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":13107,"id":null,"parameterSlots":3,"returnSlots":1},"allocate_unbounded":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"array_dataslot_t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_t_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_bytes_memory_ptr":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_string_memory_ptr":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_t_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_array$_t_address_$dyn_memory_ptr_fromStack":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":14040,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_t_uint256":{"entryPoint":14143,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_t_uint256":{"entryPoint":14092,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":14073,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_address":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_address_payable":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bool":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_contract$_IVToken_$5277":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_0_by_1":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_1_by_1":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint8":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_contract$_IComptroller_$5454_to_t_address":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_contract$_IVToken_$5277_to_t_address":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_contract$_SwapHelper_$8322_to_t_address":{"entryPoint":11793,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_rational_0_by_1_to_t_uint8":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_rational_1_by_1_to_t_uint8":{"entryPoint":13404,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_uint160_to_t_address":{"entryPoint":11783,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_uint160_to_t_uint160":{"entryPoint":11767,"id":null,"parameterSlots":1,"returnSlots":1},"copy_calldata_to_memory_with_cleanup":{"entryPoint":12970,"id":null,"parameterSlots":3,"returnSlots":0},"copy_memory_to_memory_with_cleanup":{"entryPoint":14345,"id":null,"parameterSlots":3,"returnSlots":0},"identity":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":14020,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":14123,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":12859,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":12879,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"store_literal_in_memory_225559eb8402045bea7ff07c35d0ad8c0547830223ac1c21d44fb948d6896ebc":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_address":{"entryPoint":12348,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bool":{"entryPoint":13481,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_contract$_IVToken_$5277":{"entryPoint":11832,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":11862,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:40271:55","nodeType":"YulBlock","src":"0:40271:55","statements":[{"body":{"nativeSrc":"52:81:55","nodeType":"YulBlock","src":"52:81:55","statements":[{"nativeSrc":"62:65:55","nodeType":"YulAssignment","src":"62:65:55","value":{"arguments":[{"name":"value","nativeSrc":"77:5:55","nodeType":"YulIdentifier","src":"77:5:55"},{"kind":"number","nativeSrc":"84:42:55","nodeType":"YulLiteral","src":"84:42:55","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"73:3:55","nodeType":"YulIdentifier","src":"73:3:55"},"nativeSrc":"73:54:55","nodeType":"YulFunctionCall","src":"73:54:55"},"variableNames":[{"name":"cleaned","nativeSrc":"62:7:55","nodeType":"YulIdentifier","src":"62:7:55"}]}]},"name":"cleanup_t_uint160","nativeSrc":"7:126:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"34:5:55","nodeType":"YulTypedName","src":"34:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"44:7:55","nodeType":"YulTypedName","src":"44:7:55","type":""}],"src":"7:126:55"},{"body":{"nativeSrc":"171:28:55","nodeType":"YulBlock","src":"171:28:55","statements":[{"nativeSrc":"181:12:55","nodeType":"YulAssignment","src":"181:12:55","value":{"name":"value","nativeSrc":"188:5:55","nodeType":"YulIdentifier","src":"188:5:55"},"variableNames":[{"name":"ret","nativeSrc":"181:3:55","nodeType":"YulIdentifier","src":"181:3:55"}]}]},"name":"identity","nativeSrc":"139:60:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"157:5:55","nodeType":"YulTypedName","src":"157:5:55","type":""}],"returnVariables":[{"name":"ret","nativeSrc":"167:3:55","nodeType":"YulTypedName","src":"167:3:55","type":""}],"src":"139:60:55"},{"body":{"nativeSrc":"265:82:55","nodeType":"YulBlock","src":"265:82:55","statements":[{"nativeSrc":"275:66:55","nodeType":"YulAssignment","src":"275:66:55","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nativeSrc":"333:5:55","nodeType":"YulIdentifier","src":"333:5:55"}],"functionName":{"name":"cleanup_t_uint160","nativeSrc":"315:17:55","nodeType":"YulIdentifier","src":"315:17:55"},"nativeSrc":"315:24:55","nodeType":"YulFunctionCall","src":"315:24:55"}],"functionName":{"name":"identity","nativeSrc":"306:8:55","nodeType":"YulIdentifier","src":"306:8:55"},"nativeSrc":"306:34:55","nodeType":"YulFunctionCall","src":"306:34:55"}],"functionName":{"name":"cleanup_t_uint160","nativeSrc":"288:17:55","nodeType":"YulIdentifier","src":"288:17:55"},"nativeSrc":"288:53:55","nodeType":"YulFunctionCall","src":"288:53:55"},"variableNames":[{"name":"converted","nativeSrc":"275:9:55","nodeType":"YulIdentifier","src":"275:9:55"}]}]},"name":"convert_t_uint160_to_t_uint160","nativeSrc":"205:142:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"245:5:55","nodeType":"YulTypedName","src":"245:5:55","type":""}],"returnVariables":[{"name":"converted","nativeSrc":"255:9:55","nodeType":"YulTypedName","src":"255:9:55","type":""}],"src":"205:142:55"},{"body":{"nativeSrc":"413:66:55","nodeType":"YulBlock","src":"413:66:55","statements":[{"nativeSrc":"423:50:55","nodeType":"YulAssignment","src":"423:50:55","value":{"arguments":[{"name":"value","nativeSrc":"467:5:55","nodeType":"YulIdentifier","src":"467:5:55"}],"functionName":{"name":"convert_t_uint160_to_t_uint160","nativeSrc":"436:30:55","nodeType":"YulIdentifier","src":"436:30:55"},"nativeSrc":"436:37:55","nodeType":"YulFunctionCall","src":"436:37:55"},"variableNames":[{"name":"converted","nativeSrc":"423:9:55","nodeType":"YulIdentifier","src":"423:9:55"}]}]},"name":"convert_t_uint160_to_t_address","nativeSrc":"353:126:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"393:5:55","nodeType":"YulTypedName","src":"393:5:55","type":""}],"returnVariables":[{"name":"converted","nativeSrc":"403:9:55","nodeType":"YulTypedName","src":"403:9:55","type":""}],"src":"353:126:55"},{"body":{"nativeSrc":"564:66:55","nodeType":"YulBlock","src":"564:66:55","statements":[{"nativeSrc":"574:50:55","nodeType":"YulAssignment","src":"574:50:55","value":{"arguments":[{"name":"value","nativeSrc":"618:5:55","nodeType":"YulIdentifier","src":"618:5:55"}],"functionName":{"name":"convert_t_uint160_to_t_address","nativeSrc":"587:30:55","nodeType":"YulIdentifier","src":"587:30:55"},"nativeSrc":"587:37:55","nodeType":"YulFunctionCall","src":"587:37:55"},"variableNames":[{"name":"converted","nativeSrc":"574:9:55","nodeType":"YulIdentifier","src":"574:9:55"}]}]},"name":"convert_t_contract$_SwapHelper_$8322_to_t_address","nativeSrc":"485:145:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"544:5:55","nodeType":"YulTypedName","src":"544:5:55","type":""}],"returnVariables":[{"name":"converted","nativeSrc":"554:9:55","nodeType":"YulTypedName","src":"554:9:55","type":""}],"src":"485:145:55"},{"body":{"nativeSrc":"720:85:55","nodeType":"YulBlock","src":"720:85:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"737:3:55","nodeType":"YulIdentifier","src":"737:3:55"},{"arguments":[{"name":"value","nativeSrc":"792:5:55","nodeType":"YulIdentifier","src":"792:5:55"}],"functionName":{"name":"convert_t_contract$_SwapHelper_$8322_to_t_address","nativeSrc":"742:49:55","nodeType":"YulIdentifier","src":"742:49:55"},"nativeSrc":"742:56:55","nodeType":"YulFunctionCall","src":"742:56:55"}],"functionName":{"name":"mstore","nativeSrc":"730:6:55","nodeType":"YulIdentifier","src":"730:6:55"},"nativeSrc":"730:69:55","nodeType":"YulFunctionCall","src":"730:69:55"},"nativeSrc":"730:69:55","nodeType":"YulExpressionStatement","src":"730:69:55"}]},"name":"abi_encode_t_contract$_SwapHelper_$8322_to_t_address_fromStack","nativeSrc":"636:169:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"708:5:55","nodeType":"YulTypedName","src":"708:5:55","type":""},{"name":"pos","nativeSrc":"715:3:55","nodeType":"YulTypedName","src":"715:3:55","type":""}],"src":"636:169:55"},{"body":{"nativeSrc":"928:143:55","nodeType":"YulBlock","src":"928:143:55","statements":[{"nativeSrc":"938:26:55","nodeType":"YulAssignment","src":"938:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"950:9:55","nodeType":"YulIdentifier","src":"950:9:55"},{"kind":"number","nativeSrc":"961:2:55","nodeType":"YulLiteral","src":"961:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"946:3:55","nodeType":"YulIdentifier","src":"946:3:55"},"nativeSrc":"946:18:55","nodeType":"YulFunctionCall","src":"946:18:55"},"variableNames":[{"name":"tail","nativeSrc":"938:4:55","nodeType":"YulIdentifier","src":"938:4:55"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"1037:6:55","nodeType":"YulIdentifier","src":"1037:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"1050:9:55","nodeType":"YulIdentifier","src":"1050:9:55"},{"kind":"number","nativeSrc":"1061:1:55","nodeType":"YulLiteral","src":"1061:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"1046:3:55","nodeType":"YulIdentifier","src":"1046:3:55"},"nativeSrc":"1046:17:55","nodeType":"YulFunctionCall","src":"1046:17:55"}],"functionName":{"name":"abi_encode_t_contract$_SwapHelper_$8322_to_t_address_fromStack","nativeSrc":"974:62:55","nodeType":"YulIdentifier","src":"974:62:55"},"nativeSrc":"974:90:55","nodeType":"YulFunctionCall","src":"974:90:55"},"nativeSrc":"974:90:55","nodeType":"YulExpressionStatement","src":"974:90:55"}]},"name":"abi_encode_tuple_t_contract$_SwapHelper_$8322__to_t_address__fromStack_reversed","nativeSrc":"811:260:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"900:9:55","nodeType":"YulTypedName","src":"900:9:55","type":""},{"name":"value0","nativeSrc":"912:6:55","nodeType":"YulTypedName","src":"912:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"923:4:55","nodeType":"YulTypedName","src":"923:4:55","type":""}],"src":"811:260:55"},{"body":{"nativeSrc":"1117:35:55","nodeType":"YulBlock","src":"1117:35:55","statements":[{"nativeSrc":"1127:19:55","nodeType":"YulAssignment","src":"1127:19:55","value":{"arguments":[{"kind":"number","nativeSrc":"1143:2:55","nodeType":"YulLiteral","src":"1143:2:55","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"1137:5:55","nodeType":"YulIdentifier","src":"1137:5:55"},"nativeSrc":"1137:9:55","nodeType":"YulFunctionCall","src":"1137:9:55"},"variableNames":[{"name":"memPtr","nativeSrc":"1127:6:55","nodeType":"YulIdentifier","src":"1127:6:55"}]}]},"name":"allocate_unbounded","nativeSrc":"1077:75:55","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"1110:6:55","nodeType":"YulTypedName","src":"1110:6:55","type":""}],"src":"1077:75:55"},{"body":{"nativeSrc":"1247:28:55","nodeType":"YulBlock","src":"1247:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1264:1:55","nodeType":"YulLiteral","src":"1264:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"1267:1:55","nodeType":"YulLiteral","src":"1267:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1257:6:55","nodeType":"YulIdentifier","src":"1257:6:55"},"nativeSrc":"1257:12:55","nodeType":"YulFunctionCall","src":"1257:12:55"},"nativeSrc":"1257:12:55","nodeType":"YulExpressionStatement","src":"1257:12:55"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"1158:117:55","nodeType":"YulFunctionDefinition","src":"1158:117:55"},{"body":{"nativeSrc":"1370:28:55","nodeType":"YulBlock","src":"1370:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1387:1:55","nodeType":"YulLiteral","src":"1387:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"1390:1:55","nodeType":"YulLiteral","src":"1390:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1380:6:55","nodeType":"YulIdentifier","src":"1380:6:55"},"nativeSrc":"1380:12:55","nodeType":"YulFunctionCall","src":"1380:12:55"},"nativeSrc":"1380:12:55","nodeType":"YulExpressionStatement","src":"1380:12:55"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"1281:117:55","nodeType":"YulFunctionDefinition","src":"1281:117:55"},{"body":{"nativeSrc":"1449:51:55","nodeType":"YulBlock","src":"1449:51:55","statements":[{"nativeSrc":"1459:35:55","nodeType":"YulAssignment","src":"1459:35:55","value":{"arguments":[{"name":"value","nativeSrc":"1488:5:55","nodeType":"YulIdentifier","src":"1488:5:55"}],"functionName":{"name":"cleanup_t_uint160","nativeSrc":"1470:17:55","nodeType":"YulIdentifier","src":"1470:17:55"},"nativeSrc":"1470:24:55","nodeType":"YulFunctionCall","src":"1470:24:55"},"variableNames":[{"name":"cleaned","nativeSrc":"1459:7:55","nodeType":"YulIdentifier","src":"1459:7:55"}]}]},"name":"cleanup_t_address","nativeSrc":"1404:96:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1431:5:55","nodeType":"YulTypedName","src":"1431:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"1441:7:55","nodeType":"YulTypedName","src":"1441:7:55","type":""}],"src":"1404:96:55"},{"body":{"nativeSrc":"1567:51:55","nodeType":"YulBlock","src":"1567:51:55","statements":[{"nativeSrc":"1577:35:55","nodeType":"YulAssignment","src":"1577:35:55","value":{"arguments":[{"name":"value","nativeSrc":"1606:5:55","nodeType":"YulIdentifier","src":"1606:5:55"}],"functionName":{"name":"cleanup_t_address","nativeSrc":"1588:17:55","nodeType":"YulIdentifier","src":"1588:17:55"},"nativeSrc":"1588:24:55","nodeType":"YulFunctionCall","src":"1588:24:55"},"variableNames":[{"name":"cleaned","nativeSrc":"1577:7:55","nodeType":"YulIdentifier","src":"1577:7:55"}]}]},"name":"cleanup_t_contract$_IVToken_$5277","nativeSrc":"1506:112:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1549:5:55","nodeType":"YulTypedName","src":"1549:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"1559:7:55","nodeType":"YulTypedName","src":"1559:7:55","type":""}],"src":"1506:112:55"},{"body":{"nativeSrc":"1683:95:55","nodeType":"YulBlock","src":"1683:95:55","statements":[{"body":{"nativeSrc":"1756:16:55","nodeType":"YulBlock","src":"1756:16:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1765:1:55","nodeType":"YulLiteral","src":"1765:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"1768:1:55","nodeType":"YulLiteral","src":"1768:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1758:6:55","nodeType":"YulIdentifier","src":"1758:6:55"},"nativeSrc":"1758:12:55","nodeType":"YulFunctionCall","src":"1758:12:55"},"nativeSrc":"1758:12:55","nodeType":"YulExpressionStatement","src":"1758:12:55"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1706:5:55","nodeType":"YulIdentifier","src":"1706:5:55"},{"arguments":[{"name":"value","nativeSrc":"1747:5:55","nodeType":"YulIdentifier","src":"1747:5:55"}],"functionName":{"name":"cleanup_t_contract$_IVToken_$5277","nativeSrc":"1713:33:55","nodeType":"YulIdentifier","src":"1713:33:55"},"nativeSrc":"1713:40:55","nodeType":"YulFunctionCall","src":"1713:40:55"}],"functionName":{"name":"eq","nativeSrc":"1703:2:55","nodeType":"YulIdentifier","src":"1703:2:55"},"nativeSrc":"1703:51:55","nodeType":"YulFunctionCall","src":"1703:51:55"}],"functionName":{"name":"iszero","nativeSrc":"1696:6:55","nodeType":"YulIdentifier","src":"1696:6:55"},"nativeSrc":"1696:59:55","nodeType":"YulFunctionCall","src":"1696:59:55"},"nativeSrc":"1693:79:55","nodeType":"YulIf","src":"1693:79:55"}]},"name":"validator_revert_t_contract$_IVToken_$5277","nativeSrc":"1624:154:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1676:5:55","nodeType":"YulTypedName","src":"1676:5:55","type":""}],"src":"1624:154:55"},{"body":{"nativeSrc":"1852:103:55","nodeType":"YulBlock","src":"1852:103:55","statements":[{"nativeSrc":"1862:29:55","nodeType":"YulAssignment","src":"1862:29:55","value":{"arguments":[{"name":"offset","nativeSrc":"1884:6:55","nodeType":"YulIdentifier","src":"1884:6:55"}],"functionName":{"name":"calldataload","nativeSrc":"1871:12:55","nodeType":"YulIdentifier","src":"1871:12:55"},"nativeSrc":"1871:20:55","nodeType":"YulFunctionCall","src":"1871:20:55"},"variableNames":[{"name":"value","nativeSrc":"1862:5:55","nodeType":"YulIdentifier","src":"1862:5:55"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"1943:5:55","nodeType":"YulIdentifier","src":"1943:5:55"}],"functionName":{"name":"validator_revert_t_contract$_IVToken_$5277","nativeSrc":"1900:42:55","nodeType":"YulIdentifier","src":"1900:42:55"},"nativeSrc":"1900:49:55","nodeType":"YulFunctionCall","src":"1900:49:55"},"nativeSrc":"1900:49:55","nodeType":"YulExpressionStatement","src":"1900:49:55"}]},"name":"abi_decode_t_contract$_IVToken_$5277","nativeSrc":"1784:171:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1830:6:55","nodeType":"YulTypedName","src":"1830:6:55","type":""},{"name":"end","nativeSrc":"1838:3:55","nodeType":"YulTypedName","src":"1838:3:55","type":""}],"returnVariables":[{"name":"value","nativeSrc":"1846:5:55","nodeType":"YulTypedName","src":"1846:5:55","type":""}],"src":"1784:171:55"},{"body":{"nativeSrc":"2006:32:55","nodeType":"YulBlock","src":"2006:32:55","statements":[{"nativeSrc":"2016:16:55","nodeType":"YulAssignment","src":"2016:16:55","value":{"name":"value","nativeSrc":"2027:5:55","nodeType":"YulIdentifier","src":"2027:5:55"},"variableNames":[{"name":"cleaned","nativeSrc":"2016:7:55","nodeType":"YulIdentifier","src":"2016:7:55"}]}]},"name":"cleanup_t_uint256","nativeSrc":"1961:77:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1988:5:55","nodeType":"YulTypedName","src":"1988:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"1998:7:55","nodeType":"YulTypedName","src":"1998:7:55","type":""}],"src":"1961:77:55"},{"body":{"nativeSrc":"2087:79:55","nodeType":"YulBlock","src":"2087:79:55","statements":[{"body":{"nativeSrc":"2144:16:55","nodeType":"YulBlock","src":"2144:16:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2153:1:55","nodeType":"YulLiteral","src":"2153:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"2156:1:55","nodeType":"YulLiteral","src":"2156:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2146:6:55","nodeType":"YulIdentifier","src":"2146:6:55"},"nativeSrc":"2146:12:55","nodeType":"YulFunctionCall","src":"2146:12:55"},"nativeSrc":"2146:12:55","nodeType":"YulExpressionStatement","src":"2146:12:55"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2110:5:55","nodeType":"YulIdentifier","src":"2110:5:55"},{"arguments":[{"name":"value","nativeSrc":"2135:5:55","nodeType":"YulIdentifier","src":"2135:5:55"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"2117:17:55","nodeType":"YulIdentifier","src":"2117:17:55"},"nativeSrc":"2117:24:55","nodeType":"YulFunctionCall","src":"2117:24:55"}],"functionName":{"name":"eq","nativeSrc":"2107:2:55","nodeType":"YulIdentifier","src":"2107:2:55"},"nativeSrc":"2107:35:55","nodeType":"YulFunctionCall","src":"2107:35:55"}],"functionName":{"name":"iszero","nativeSrc":"2100:6:55","nodeType":"YulIdentifier","src":"2100:6:55"},"nativeSrc":"2100:43:55","nodeType":"YulFunctionCall","src":"2100:43:55"},"nativeSrc":"2097:63:55","nodeType":"YulIf","src":"2097:63:55"}]},"name":"validator_revert_t_uint256","nativeSrc":"2044:122:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2080:5:55","nodeType":"YulTypedName","src":"2080:5:55","type":""}],"src":"2044:122:55"},{"body":{"nativeSrc":"2224:87:55","nodeType":"YulBlock","src":"2224:87:55","statements":[{"nativeSrc":"2234:29:55","nodeType":"YulAssignment","src":"2234:29:55","value":{"arguments":[{"name":"offset","nativeSrc":"2256:6:55","nodeType":"YulIdentifier","src":"2256:6:55"}],"functionName":{"name":"calldataload","nativeSrc":"2243:12:55","nodeType":"YulIdentifier","src":"2243:12:55"},"nativeSrc":"2243:20:55","nodeType":"YulFunctionCall","src":"2243:20:55"},"variableNames":[{"name":"value","nativeSrc":"2234:5:55","nodeType":"YulIdentifier","src":"2234:5:55"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"2299:5:55","nodeType":"YulIdentifier","src":"2299:5:55"}],"functionName":{"name":"validator_revert_t_uint256","nativeSrc":"2272:26:55","nodeType":"YulIdentifier","src":"2272:26:55"},"nativeSrc":"2272:33:55","nodeType":"YulFunctionCall","src":"2272:33:55"},"nativeSrc":"2272:33:55","nodeType":"YulExpressionStatement","src":"2272:33:55"}]},"name":"abi_decode_t_uint256","nativeSrc":"2172:139:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"2202:6:55","nodeType":"YulTypedName","src":"2202:6:55","type":""},{"name":"end","nativeSrc":"2210:3:55","nodeType":"YulTypedName","src":"2210:3:55","type":""}],"returnVariables":[{"name":"value","nativeSrc":"2218:5:55","nodeType":"YulTypedName","src":"2218:5:55","type":""}],"src":"2172:139:55"},{"body":{"nativeSrc":"2406:28:55","nodeType":"YulBlock","src":"2406:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2423:1:55","nodeType":"YulLiteral","src":"2423:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"2426:1:55","nodeType":"YulLiteral","src":"2426:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2416:6:55","nodeType":"YulIdentifier","src":"2416:6:55"},"nativeSrc":"2416:12:55","nodeType":"YulFunctionCall","src":"2416:12:55"},"nativeSrc":"2416:12:55","nodeType":"YulExpressionStatement","src":"2416:12:55"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nativeSrc":"2317:117:55","nodeType":"YulFunctionDefinition","src":"2317:117:55"},{"body":{"nativeSrc":"2529:28:55","nodeType":"YulBlock","src":"2529:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2546:1:55","nodeType":"YulLiteral","src":"2546:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"2549:1:55","nodeType":"YulLiteral","src":"2549:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2539:6:55","nodeType":"YulIdentifier","src":"2539:6:55"},"nativeSrc":"2539:12:55","nodeType":"YulFunctionCall","src":"2539:12:55"},"nativeSrc":"2539:12:55","nodeType":"YulExpressionStatement","src":"2539:12:55"}]},"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nativeSrc":"2440:117:55","nodeType":"YulFunctionDefinition","src":"2440:117:55"},{"body":{"nativeSrc":"2652:28:55","nodeType":"YulBlock","src":"2652:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2669:1:55","nodeType":"YulLiteral","src":"2669:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"2672:1:55","nodeType":"YulLiteral","src":"2672:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2662:6:55","nodeType":"YulIdentifier","src":"2662:6:55"},"nativeSrc":"2662:12:55","nodeType":"YulFunctionCall","src":"2662:12:55"},"nativeSrc":"2662:12:55","nodeType":"YulExpressionStatement","src":"2662:12:55"}]},"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nativeSrc":"2563:117:55","nodeType":"YulFunctionDefinition","src":"2563:117:55"},{"body":{"nativeSrc":"2773:478:55","nodeType":"YulBlock","src":"2773:478:55","statements":[{"body":{"nativeSrc":"2822:83:55","nodeType":"YulBlock","src":"2822:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nativeSrc":"2824:77:55","nodeType":"YulIdentifier","src":"2824:77:55"},"nativeSrc":"2824:79:55","nodeType":"YulFunctionCall","src":"2824:79:55"},"nativeSrc":"2824:79:55","nodeType":"YulExpressionStatement","src":"2824:79:55"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"2801:6:55","nodeType":"YulIdentifier","src":"2801:6:55"},{"kind":"number","nativeSrc":"2809:4:55","nodeType":"YulLiteral","src":"2809:4:55","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"2797:3:55","nodeType":"YulIdentifier","src":"2797:3:55"},"nativeSrc":"2797:17:55","nodeType":"YulFunctionCall","src":"2797:17:55"},{"name":"end","nativeSrc":"2816:3:55","nodeType":"YulIdentifier","src":"2816:3:55"}],"functionName":{"name":"slt","nativeSrc":"2793:3:55","nodeType":"YulIdentifier","src":"2793:3:55"},"nativeSrc":"2793:27:55","nodeType":"YulFunctionCall","src":"2793:27:55"}],"functionName":{"name":"iszero","nativeSrc":"2786:6:55","nodeType":"YulIdentifier","src":"2786:6:55"},"nativeSrc":"2786:35:55","nodeType":"YulFunctionCall","src":"2786:35:55"},"nativeSrc":"2783:122:55","nodeType":"YulIf","src":"2783:122:55"},{"nativeSrc":"2914:30:55","nodeType":"YulAssignment","src":"2914:30:55","value":{"arguments":[{"name":"offset","nativeSrc":"2937:6:55","nodeType":"YulIdentifier","src":"2937:6:55"}],"functionName":{"name":"calldataload","nativeSrc":"2924:12:55","nodeType":"YulIdentifier","src":"2924:12:55"},"nativeSrc":"2924:20:55","nodeType":"YulFunctionCall","src":"2924:20:55"},"variableNames":[{"name":"length","nativeSrc":"2914:6:55","nodeType":"YulIdentifier","src":"2914:6:55"}]},{"body":{"nativeSrc":"2987:83:55","nodeType":"YulBlock","src":"2987:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nativeSrc":"2989:77:55","nodeType":"YulIdentifier","src":"2989:77:55"},"nativeSrc":"2989:79:55","nodeType":"YulFunctionCall","src":"2989:79:55"},"nativeSrc":"2989:79:55","nodeType":"YulExpressionStatement","src":"2989:79:55"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"2959:6:55","nodeType":"YulIdentifier","src":"2959:6:55"},{"kind":"number","nativeSrc":"2967:18:55","nodeType":"YulLiteral","src":"2967:18:55","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"2956:2:55","nodeType":"YulIdentifier","src":"2956:2:55"},"nativeSrc":"2956:30:55","nodeType":"YulFunctionCall","src":"2956:30:55"},"nativeSrc":"2953:117:55","nodeType":"YulIf","src":"2953:117:55"},{"nativeSrc":"3079:29:55","nodeType":"YulAssignment","src":"3079:29:55","value":{"arguments":[{"name":"offset","nativeSrc":"3095:6:55","nodeType":"YulIdentifier","src":"3095:6:55"},{"kind":"number","nativeSrc":"3103:4:55","nodeType":"YulLiteral","src":"3103:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3091:3:55","nodeType":"YulIdentifier","src":"3091:3:55"},"nativeSrc":"3091:17:55","nodeType":"YulFunctionCall","src":"3091:17:55"},"variableNames":[{"name":"arrayPos","nativeSrc":"3079:8:55","nodeType":"YulIdentifier","src":"3079:8:55"}]},{"body":{"nativeSrc":"3162:83:55","nodeType":"YulBlock","src":"3162:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nativeSrc":"3164:77:55","nodeType":"YulIdentifier","src":"3164:77:55"},"nativeSrc":"3164:79:55","nodeType":"YulFunctionCall","src":"3164:79:55"},"nativeSrc":"3164:79:55","nodeType":"YulExpressionStatement","src":"3164:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"arrayPos","nativeSrc":"3127:8:55","nodeType":"YulIdentifier","src":"3127:8:55"},{"arguments":[{"name":"length","nativeSrc":"3141:6:55","nodeType":"YulIdentifier","src":"3141:6:55"},{"kind":"number","nativeSrc":"3149:4:55","nodeType":"YulLiteral","src":"3149:4:55","type":"","value":"0x01"}],"functionName":{"name":"mul","nativeSrc":"3137:3:55","nodeType":"YulIdentifier","src":"3137:3:55"},"nativeSrc":"3137:17:55","nodeType":"YulFunctionCall","src":"3137:17:55"}],"functionName":{"name":"add","nativeSrc":"3123:3:55","nodeType":"YulIdentifier","src":"3123:3:55"},"nativeSrc":"3123:32:55","nodeType":"YulFunctionCall","src":"3123:32:55"},{"name":"end","nativeSrc":"3157:3:55","nodeType":"YulIdentifier","src":"3157:3:55"}],"functionName":{"name":"gt","nativeSrc":"3120:2:55","nodeType":"YulIdentifier","src":"3120:2:55"},"nativeSrc":"3120:41:55","nodeType":"YulFunctionCall","src":"3120:41:55"},"nativeSrc":"3117:128:55","nodeType":"YulIf","src":"3117:128:55"}]},"name":"abi_decode_t_bytes_calldata_ptr","nativeSrc":"2699:552:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"2740:6:55","nodeType":"YulTypedName","src":"2740:6:55","type":""},{"name":"end","nativeSrc":"2748:3:55","nodeType":"YulTypedName","src":"2748:3:55","type":""}],"returnVariables":[{"name":"arrayPos","nativeSrc":"2756:8:55","nodeType":"YulTypedName","src":"2756:8:55","type":""},{"name":"length","nativeSrc":"2766:6:55","nodeType":"YulTypedName","src":"2766:6:55","type":""}],"src":"2699:552:55"},{"body":{"nativeSrc":"3459:1117:55","nodeType":"YulBlock","src":"3459:1117:55","statements":[{"body":{"nativeSrc":"3506:83:55","nodeType":"YulBlock","src":"3506:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"3508:77:55","nodeType":"YulIdentifier","src":"3508:77:55"},"nativeSrc":"3508:79:55","nodeType":"YulFunctionCall","src":"3508:79:55"},"nativeSrc":"3508:79:55","nodeType":"YulExpressionStatement","src":"3508:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3480:7:55","nodeType":"YulIdentifier","src":"3480:7:55"},{"name":"headStart","nativeSrc":"3489:9:55","nodeType":"YulIdentifier","src":"3489:9:55"}],"functionName":{"name":"sub","nativeSrc":"3476:3:55","nodeType":"YulIdentifier","src":"3476:3:55"},"nativeSrc":"3476:23:55","nodeType":"YulFunctionCall","src":"3476:23:55"},{"kind":"number","nativeSrc":"3501:3:55","nodeType":"YulLiteral","src":"3501:3:55","type":"","value":"192"}],"functionName":{"name":"slt","nativeSrc":"3472:3:55","nodeType":"YulIdentifier","src":"3472:3:55"},"nativeSrc":"3472:33:55","nodeType":"YulFunctionCall","src":"3472:33:55"},"nativeSrc":"3469:120:55","nodeType":"YulIf","src":"3469:120:55"},{"nativeSrc":"3599:133:55","nodeType":"YulBlock","src":"3599:133:55","statements":[{"nativeSrc":"3614:15:55","nodeType":"YulVariableDeclaration","src":"3614:15:55","value":{"kind":"number","nativeSrc":"3628:1:55","nodeType":"YulLiteral","src":"3628:1:55","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"3618:6:55","nodeType":"YulTypedName","src":"3618:6:55","type":""}]},{"nativeSrc":"3643:79:55","nodeType":"YulAssignment","src":"3643:79:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3694:9:55","nodeType":"YulIdentifier","src":"3694:9:55"},{"name":"offset","nativeSrc":"3705:6:55","nodeType":"YulIdentifier","src":"3705:6:55"}],"functionName":{"name":"add","nativeSrc":"3690:3:55","nodeType":"YulIdentifier","src":"3690:3:55"},"nativeSrc":"3690:22:55","nodeType":"YulFunctionCall","src":"3690:22:55"},{"name":"dataEnd","nativeSrc":"3714:7:55","nodeType":"YulIdentifier","src":"3714:7:55"}],"functionName":{"name":"abi_decode_t_contract$_IVToken_$5277","nativeSrc":"3653:36:55","nodeType":"YulIdentifier","src":"3653:36:55"},"nativeSrc":"3653:69:55","nodeType":"YulFunctionCall","src":"3653:69:55"},"variableNames":[{"name":"value0","nativeSrc":"3643:6:55","nodeType":"YulIdentifier","src":"3643:6:55"}]}]},{"nativeSrc":"3742:134:55","nodeType":"YulBlock","src":"3742:134:55","statements":[{"nativeSrc":"3757:16:55","nodeType":"YulVariableDeclaration","src":"3757:16:55","value":{"kind":"number","nativeSrc":"3771:2:55","nodeType":"YulLiteral","src":"3771:2:55","type":"","value":"32"},"variables":[{"name":"offset","nativeSrc":"3761:6:55","nodeType":"YulTypedName","src":"3761:6:55","type":""}]},{"nativeSrc":"3787:79:55","nodeType":"YulAssignment","src":"3787:79:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3838:9:55","nodeType":"YulIdentifier","src":"3838:9:55"},{"name":"offset","nativeSrc":"3849:6:55","nodeType":"YulIdentifier","src":"3849:6:55"}],"functionName":{"name":"add","nativeSrc":"3834:3:55","nodeType":"YulIdentifier","src":"3834:3:55"},"nativeSrc":"3834:22:55","nodeType":"YulFunctionCall","src":"3834:22:55"},{"name":"dataEnd","nativeSrc":"3858:7:55","nodeType":"YulIdentifier","src":"3858:7:55"}],"functionName":{"name":"abi_decode_t_contract$_IVToken_$5277","nativeSrc":"3797:36:55","nodeType":"YulIdentifier","src":"3797:36:55"},"nativeSrc":"3797:69:55","nodeType":"YulFunctionCall","src":"3797:69:55"},"variableNames":[{"name":"value1","nativeSrc":"3787:6:55","nodeType":"YulIdentifier","src":"3787:6:55"}]}]},{"nativeSrc":"3886:118:55","nodeType":"YulBlock","src":"3886:118:55","statements":[{"nativeSrc":"3901:16:55","nodeType":"YulVariableDeclaration","src":"3901:16:55","value":{"kind":"number","nativeSrc":"3915:2:55","nodeType":"YulLiteral","src":"3915:2:55","type":"","value":"64"},"variables":[{"name":"offset","nativeSrc":"3905:6:55","nodeType":"YulTypedName","src":"3905:6:55","type":""}]},{"nativeSrc":"3931:63:55","nodeType":"YulAssignment","src":"3931:63:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3966:9:55","nodeType":"YulIdentifier","src":"3966:9:55"},{"name":"offset","nativeSrc":"3977:6:55","nodeType":"YulIdentifier","src":"3977:6:55"}],"functionName":{"name":"add","nativeSrc":"3962:3:55","nodeType":"YulIdentifier","src":"3962:3:55"},"nativeSrc":"3962:22:55","nodeType":"YulFunctionCall","src":"3962:22:55"},{"name":"dataEnd","nativeSrc":"3986:7:55","nodeType":"YulIdentifier","src":"3986:7:55"}],"functionName":{"name":"abi_decode_t_uint256","nativeSrc":"3941:20:55","nodeType":"YulIdentifier","src":"3941:20:55"},"nativeSrc":"3941:53:55","nodeType":"YulFunctionCall","src":"3941:53:55"},"variableNames":[{"name":"value2","nativeSrc":"3931:6:55","nodeType":"YulIdentifier","src":"3931:6:55"}]}]},{"nativeSrc":"4014:118:55","nodeType":"YulBlock","src":"4014:118:55","statements":[{"nativeSrc":"4029:16:55","nodeType":"YulVariableDeclaration","src":"4029:16:55","value":{"kind":"number","nativeSrc":"4043:2:55","nodeType":"YulLiteral","src":"4043:2:55","type":"","value":"96"},"variables":[{"name":"offset","nativeSrc":"4033:6:55","nodeType":"YulTypedName","src":"4033:6:55","type":""}]},{"nativeSrc":"4059:63:55","nodeType":"YulAssignment","src":"4059:63:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4094:9:55","nodeType":"YulIdentifier","src":"4094:9:55"},{"name":"offset","nativeSrc":"4105:6:55","nodeType":"YulIdentifier","src":"4105:6:55"}],"functionName":{"name":"add","nativeSrc":"4090:3:55","nodeType":"YulIdentifier","src":"4090:3:55"},"nativeSrc":"4090:22:55","nodeType":"YulFunctionCall","src":"4090:22:55"},{"name":"dataEnd","nativeSrc":"4114:7:55","nodeType":"YulIdentifier","src":"4114:7:55"}],"functionName":{"name":"abi_decode_t_uint256","nativeSrc":"4069:20:55","nodeType":"YulIdentifier","src":"4069:20:55"},"nativeSrc":"4069:53:55","nodeType":"YulFunctionCall","src":"4069:53:55"},"variableNames":[{"name":"value3","nativeSrc":"4059:6:55","nodeType":"YulIdentifier","src":"4059:6:55"}]}]},{"nativeSrc":"4142:119:55","nodeType":"YulBlock","src":"4142:119:55","statements":[{"nativeSrc":"4157:17:55","nodeType":"YulVariableDeclaration","src":"4157:17:55","value":{"kind":"number","nativeSrc":"4171:3:55","nodeType":"YulLiteral","src":"4171:3:55","type":"","value":"128"},"variables":[{"name":"offset","nativeSrc":"4161:6:55","nodeType":"YulTypedName","src":"4161:6:55","type":""}]},{"nativeSrc":"4188:63:55","nodeType":"YulAssignment","src":"4188:63:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4223:9:55","nodeType":"YulIdentifier","src":"4223:9:55"},{"name":"offset","nativeSrc":"4234:6:55","nodeType":"YulIdentifier","src":"4234:6:55"}],"functionName":{"name":"add","nativeSrc":"4219:3:55","nodeType":"YulIdentifier","src":"4219:3:55"},"nativeSrc":"4219:22:55","nodeType":"YulFunctionCall","src":"4219:22:55"},{"name":"dataEnd","nativeSrc":"4243:7:55","nodeType":"YulIdentifier","src":"4243:7:55"}],"functionName":{"name":"abi_decode_t_uint256","nativeSrc":"4198:20:55","nodeType":"YulIdentifier","src":"4198:20:55"},"nativeSrc":"4198:53:55","nodeType":"YulFunctionCall","src":"4198:53:55"},"variableNames":[{"name":"value4","nativeSrc":"4188:6:55","nodeType":"YulIdentifier","src":"4188:6:55"}]}]},{"nativeSrc":"4271:298:55","nodeType":"YulBlock","src":"4271:298:55","statements":[{"nativeSrc":"4286:47:55","nodeType":"YulVariableDeclaration","src":"4286:47:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4317:9:55","nodeType":"YulIdentifier","src":"4317:9:55"},{"kind":"number","nativeSrc":"4328:3:55","nodeType":"YulLiteral","src":"4328:3:55","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"4313:3:55","nodeType":"YulIdentifier","src":"4313:3:55"},"nativeSrc":"4313:19:55","nodeType":"YulFunctionCall","src":"4313:19:55"}],"functionName":{"name":"calldataload","nativeSrc":"4300:12:55","nodeType":"YulIdentifier","src":"4300:12:55"},"nativeSrc":"4300:33:55","nodeType":"YulFunctionCall","src":"4300:33:55"},"variables":[{"name":"offset","nativeSrc":"4290:6:55","nodeType":"YulTypedName","src":"4290:6:55","type":""}]},{"body":{"nativeSrc":"4380:83:55","nodeType":"YulBlock","src":"4380:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"4382:77:55","nodeType":"YulIdentifier","src":"4382:77:55"},"nativeSrc":"4382:79:55","nodeType":"YulFunctionCall","src":"4382:79:55"},"nativeSrc":"4382:79:55","nodeType":"YulExpressionStatement","src":"4382:79:55"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"4352:6:55","nodeType":"YulIdentifier","src":"4352:6:55"},{"kind":"number","nativeSrc":"4360:18:55","nodeType":"YulLiteral","src":"4360:18:55","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"4349:2:55","nodeType":"YulIdentifier","src":"4349:2:55"},"nativeSrc":"4349:30:55","nodeType":"YulFunctionCall","src":"4349:30:55"},"nativeSrc":"4346:117:55","nodeType":"YulIf","src":"4346:117:55"},{"nativeSrc":"4477:82:55","nodeType":"YulAssignment","src":"4477:82:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4531:9:55","nodeType":"YulIdentifier","src":"4531:9:55"},{"name":"offset","nativeSrc":"4542:6:55","nodeType":"YulIdentifier","src":"4542:6:55"}],"functionName":{"name":"add","nativeSrc":"4527:3:55","nodeType":"YulIdentifier","src":"4527:3:55"},"nativeSrc":"4527:22:55","nodeType":"YulFunctionCall","src":"4527:22:55"},{"name":"dataEnd","nativeSrc":"4551:7:55","nodeType":"YulIdentifier","src":"4551:7:55"}],"functionName":{"name":"abi_decode_t_bytes_calldata_ptr","nativeSrc":"4495:31:55","nodeType":"YulIdentifier","src":"4495:31:55"},"nativeSrc":"4495:64:55","nodeType":"YulFunctionCall","src":"4495:64:55"},"variableNames":[{"name":"value5","nativeSrc":"4477:6:55","nodeType":"YulIdentifier","src":"4477:6:55"},{"name":"value6","nativeSrc":"4485:6:55","nodeType":"YulIdentifier","src":"4485:6:55"}]}]}]},"name":"abi_decode_tuple_t_contract$_IVToken_$5277t_contract$_IVToken_$5277t_uint256t_uint256t_uint256t_bytes_calldata_ptr","nativeSrc":"3257:1319:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3381:9:55","nodeType":"YulTypedName","src":"3381:9:55","type":""},{"name":"dataEnd","nativeSrc":"3392:7:55","nodeType":"YulTypedName","src":"3392:7:55","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3404:6:55","nodeType":"YulTypedName","src":"3404:6:55","type":""},{"name":"value1","nativeSrc":"3412:6:55","nodeType":"YulTypedName","src":"3412:6:55","type":""},{"name":"value2","nativeSrc":"3420:6:55","nodeType":"YulTypedName","src":"3420:6:55","type":""},{"name":"value3","nativeSrc":"3428:6:55","nodeType":"YulTypedName","src":"3428:6:55","type":""},{"name":"value4","nativeSrc":"3436:6:55","nodeType":"YulTypedName","src":"3436:6:55","type":""},{"name":"value5","nativeSrc":"3444:6:55","nodeType":"YulTypedName","src":"3444:6:55","type":""},{"name":"value6","nativeSrc":"3452:6:55","nodeType":"YulTypedName","src":"3452:6:55","type":""}],"src":"3257:1319:55"},{"body":{"nativeSrc":"4658:66:55","nodeType":"YulBlock","src":"4658:66:55","statements":[{"nativeSrc":"4668:50:55","nodeType":"YulAssignment","src":"4668:50:55","value":{"arguments":[{"name":"value","nativeSrc":"4712:5:55","nodeType":"YulIdentifier","src":"4712:5:55"}],"functionName":{"name":"convert_t_uint160_to_t_address","nativeSrc":"4681:30:55","nodeType":"YulIdentifier","src":"4681:30:55"},"nativeSrc":"4681:37:55","nodeType":"YulFunctionCall","src":"4681:37:55"},"variableNames":[{"name":"converted","nativeSrc":"4668:9:55","nodeType":"YulIdentifier","src":"4668:9:55"}]}]},"name":"convert_t_contract$_IVToken_$5277_to_t_address","nativeSrc":"4582:142:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"4638:5:55","nodeType":"YulTypedName","src":"4638:5:55","type":""}],"returnVariables":[{"name":"converted","nativeSrc":"4648:9:55","nodeType":"YulTypedName","src":"4648:9:55","type":""}],"src":"4582:142:55"},{"body":{"nativeSrc":"4811:82:55","nodeType":"YulBlock","src":"4811:82:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"4828:3:55","nodeType":"YulIdentifier","src":"4828:3:55"},{"arguments":[{"name":"value","nativeSrc":"4880:5:55","nodeType":"YulIdentifier","src":"4880:5:55"}],"functionName":{"name":"convert_t_contract$_IVToken_$5277_to_t_address","nativeSrc":"4833:46:55","nodeType":"YulIdentifier","src":"4833:46:55"},"nativeSrc":"4833:53:55","nodeType":"YulFunctionCall","src":"4833:53:55"}],"functionName":{"name":"mstore","nativeSrc":"4821:6:55","nodeType":"YulIdentifier","src":"4821:6:55"},"nativeSrc":"4821:66:55","nodeType":"YulFunctionCall","src":"4821:66:55"},"nativeSrc":"4821:66:55","nodeType":"YulExpressionStatement","src":"4821:66:55"}]},"name":"abi_encode_t_contract$_IVToken_$5277_to_t_address_fromStack","nativeSrc":"4730:163:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"4799:5:55","nodeType":"YulTypedName","src":"4799:5:55","type":""},{"name":"pos","nativeSrc":"4806:3:55","nodeType":"YulTypedName","src":"4806:3:55","type":""}],"src":"4730:163:55"},{"body":{"nativeSrc":"5013:140:55","nodeType":"YulBlock","src":"5013:140:55","statements":[{"nativeSrc":"5023:26:55","nodeType":"YulAssignment","src":"5023:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"5035:9:55","nodeType":"YulIdentifier","src":"5035:9:55"},{"kind":"number","nativeSrc":"5046:2:55","nodeType":"YulLiteral","src":"5046:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5031:3:55","nodeType":"YulIdentifier","src":"5031:3:55"},"nativeSrc":"5031:18:55","nodeType":"YulFunctionCall","src":"5031:18:55"},"variableNames":[{"name":"tail","nativeSrc":"5023:4:55","nodeType":"YulIdentifier","src":"5023:4:55"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"5119:6:55","nodeType":"YulIdentifier","src":"5119:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"5132:9:55","nodeType":"YulIdentifier","src":"5132:9:55"},{"kind":"number","nativeSrc":"5143:1:55","nodeType":"YulLiteral","src":"5143:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"5128:3:55","nodeType":"YulIdentifier","src":"5128:3:55"},"nativeSrc":"5128:17:55","nodeType":"YulFunctionCall","src":"5128:17:55"}],"functionName":{"name":"abi_encode_t_contract$_IVToken_$5277_to_t_address_fromStack","nativeSrc":"5059:59:55","nodeType":"YulIdentifier","src":"5059:59:55"},"nativeSrc":"5059:87:55","nodeType":"YulFunctionCall","src":"5059:87:55"},"nativeSrc":"5059:87:55","nodeType":"YulExpressionStatement","src":"5059:87:55"}]},"name":"abi_encode_tuple_t_contract$_IVToken_$5277__to_t_address__fromStack_reversed","nativeSrc":"4899:254:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4985:9:55","nodeType":"YulTypedName","src":"4985:9:55","type":""},{"name":"value0","nativeSrc":"4997:6:55","nodeType":"YulTypedName","src":"4997:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5008:4:55","nodeType":"YulTypedName","src":"5008:4:55","type":""}],"src":"4899:254:55"},{"body":{"nativeSrc":"5361:1117:55","nodeType":"YulBlock","src":"5361:1117:55","statements":[{"body":{"nativeSrc":"5408:83:55","nodeType":"YulBlock","src":"5408:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"5410:77:55","nodeType":"YulIdentifier","src":"5410:77:55"},"nativeSrc":"5410:79:55","nodeType":"YulFunctionCall","src":"5410:79:55"},"nativeSrc":"5410:79:55","nodeType":"YulExpressionStatement","src":"5410:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5382:7:55","nodeType":"YulIdentifier","src":"5382:7:55"},{"name":"headStart","nativeSrc":"5391:9:55","nodeType":"YulIdentifier","src":"5391:9:55"}],"functionName":{"name":"sub","nativeSrc":"5378:3:55","nodeType":"YulIdentifier","src":"5378:3:55"},"nativeSrc":"5378:23:55","nodeType":"YulFunctionCall","src":"5378:23:55"},{"kind":"number","nativeSrc":"5403:3:55","nodeType":"YulLiteral","src":"5403:3:55","type":"","value":"192"}],"functionName":{"name":"slt","nativeSrc":"5374:3:55","nodeType":"YulIdentifier","src":"5374:3:55"},"nativeSrc":"5374:33:55","nodeType":"YulFunctionCall","src":"5374:33:55"},"nativeSrc":"5371:120:55","nodeType":"YulIf","src":"5371:120:55"},{"nativeSrc":"5501:133:55","nodeType":"YulBlock","src":"5501:133:55","statements":[{"nativeSrc":"5516:15:55","nodeType":"YulVariableDeclaration","src":"5516:15:55","value":{"kind":"number","nativeSrc":"5530:1:55","nodeType":"YulLiteral","src":"5530:1:55","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"5520:6:55","nodeType":"YulTypedName","src":"5520:6:55","type":""}]},{"nativeSrc":"5545:79:55","nodeType":"YulAssignment","src":"5545:79:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5596:9:55","nodeType":"YulIdentifier","src":"5596:9:55"},{"name":"offset","nativeSrc":"5607:6:55","nodeType":"YulIdentifier","src":"5607:6:55"}],"functionName":{"name":"add","nativeSrc":"5592:3:55","nodeType":"YulIdentifier","src":"5592:3:55"},"nativeSrc":"5592:22:55","nodeType":"YulFunctionCall","src":"5592:22:55"},{"name":"dataEnd","nativeSrc":"5616:7:55","nodeType":"YulIdentifier","src":"5616:7:55"}],"functionName":{"name":"abi_decode_t_contract$_IVToken_$5277","nativeSrc":"5555:36:55","nodeType":"YulIdentifier","src":"5555:36:55"},"nativeSrc":"5555:69:55","nodeType":"YulFunctionCall","src":"5555:69:55"},"variableNames":[{"name":"value0","nativeSrc":"5545:6:55","nodeType":"YulIdentifier","src":"5545:6:55"}]}]},{"nativeSrc":"5644:118:55","nodeType":"YulBlock","src":"5644:118:55","statements":[{"nativeSrc":"5659:16:55","nodeType":"YulVariableDeclaration","src":"5659:16:55","value":{"kind":"number","nativeSrc":"5673:2:55","nodeType":"YulLiteral","src":"5673:2:55","type":"","value":"32"},"variables":[{"name":"offset","nativeSrc":"5663:6:55","nodeType":"YulTypedName","src":"5663:6:55","type":""}]},{"nativeSrc":"5689:63:55","nodeType":"YulAssignment","src":"5689:63:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5724:9:55","nodeType":"YulIdentifier","src":"5724:9:55"},{"name":"offset","nativeSrc":"5735:6:55","nodeType":"YulIdentifier","src":"5735:6:55"}],"functionName":{"name":"add","nativeSrc":"5720:3:55","nodeType":"YulIdentifier","src":"5720:3:55"},"nativeSrc":"5720:22:55","nodeType":"YulFunctionCall","src":"5720:22:55"},{"name":"dataEnd","nativeSrc":"5744:7:55","nodeType":"YulIdentifier","src":"5744:7:55"}],"functionName":{"name":"abi_decode_t_uint256","nativeSrc":"5699:20:55","nodeType":"YulIdentifier","src":"5699:20:55"},"nativeSrc":"5699:53:55","nodeType":"YulFunctionCall","src":"5699:53:55"},"variableNames":[{"name":"value1","nativeSrc":"5689:6:55","nodeType":"YulIdentifier","src":"5689:6:55"}]}]},{"nativeSrc":"5772:134:55","nodeType":"YulBlock","src":"5772:134:55","statements":[{"nativeSrc":"5787:16:55","nodeType":"YulVariableDeclaration","src":"5787:16:55","value":{"kind":"number","nativeSrc":"5801:2:55","nodeType":"YulLiteral","src":"5801:2:55","type":"","value":"64"},"variables":[{"name":"offset","nativeSrc":"5791:6:55","nodeType":"YulTypedName","src":"5791:6:55","type":""}]},{"nativeSrc":"5817:79:55","nodeType":"YulAssignment","src":"5817:79:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5868:9:55","nodeType":"YulIdentifier","src":"5868:9:55"},{"name":"offset","nativeSrc":"5879:6:55","nodeType":"YulIdentifier","src":"5879:6:55"}],"functionName":{"name":"add","nativeSrc":"5864:3:55","nodeType":"YulIdentifier","src":"5864:3:55"},"nativeSrc":"5864:22:55","nodeType":"YulFunctionCall","src":"5864:22:55"},{"name":"dataEnd","nativeSrc":"5888:7:55","nodeType":"YulIdentifier","src":"5888:7:55"}],"functionName":{"name":"abi_decode_t_contract$_IVToken_$5277","nativeSrc":"5827:36:55","nodeType":"YulIdentifier","src":"5827:36:55"},"nativeSrc":"5827:69:55","nodeType":"YulFunctionCall","src":"5827:69:55"},"variableNames":[{"name":"value2","nativeSrc":"5817:6:55","nodeType":"YulIdentifier","src":"5817:6:55"}]}]},{"nativeSrc":"5916:118:55","nodeType":"YulBlock","src":"5916:118:55","statements":[{"nativeSrc":"5931:16:55","nodeType":"YulVariableDeclaration","src":"5931:16:55","value":{"kind":"number","nativeSrc":"5945:2:55","nodeType":"YulLiteral","src":"5945:2:55","type":"","value":"96"},"variables":[{"name":"offset","nativeSrc":"5935:6:55","nodeType":"YulTypedName","src":"5935:6:55","type":""}]},{"nativeSrc":"5961:63:55","nodeType":"YulAssignment","src":"5961:63:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5996:9:55","nodeType":"YulIdentifier","src":"5996:9:55"},{"name":"offset","nativeSrc":"6007:6:55","nodeType":"YulIdentifier","src":"6007:6:55"}],"functionName":{"name":"add","nativeSrc":"5992:3:55","nodeType":"YulIdentifier","src":"5992:3:55"},"nativeSrc":"5992:22:55","nodeType":"YulFunctionCall","src":"5992:22:55"},{"name":"dataEnd","nativeSrc":"6016:7:55","nodeType":"YulIdentifier","src":"6016:7:55"}],"functionName":{"name":"abi_decode_t_uint256","nativeSrc":"5971:20:55","nodeType":"YulIdentifier","src":"5971:20:55"},"nativeSrc":"5971:53:55","nodeType":"YulFunctionCall","src":"5971:53:55"},"variableNames":[{"name":"value3","nativeSrc":"5961:6:55","nodeType":"YulIdentifier","src":"5961:6:55"}]}]},{"nativeSrc":"6044:119:55","nodeType":"YulBlock","src":"6044:119:55","statements":[{"nativeSrc":"6059:17:55","nodeType":"YulVariableDeclaration","src":"6059:17:55","value":{"kind":"number","nativeSrc":"6073:3:55","nodeType":"YulLiteral","src":"6073:3:55","type":"","value":"128"},"variables":[{"name":"offset","nativeSrc":"6063:6:55","nodeType":"YulTypedName","src":"6063:6:55","type":""}]},{"nativeSrc":"6090:63:55","nodeType":"YulAssignment","src":"6090:63:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6125:9:55","nodeType":"YulIdentifier","src":"6125:9:55"},{"name":"offset","nativeSrc":"6136:6:55","nodeType":"YulIdentifier","src":"6136:6:55"}],"functionName":{"name":"add","nativeSrc":"6121:3:55","nodeType":"YulIdentifier","src":"6121:3:55"},"nativeSrc":"6121:22:55","nodeType":"YulFunctionCall","src":"6121:22:55"},{"name":"dataEnd","nativeSrc":"6145:7:55","nodeType":"YulIdentifier","src":"6145:7:55"}],"functionName":{"name":"abi_decode_t_uint256","nativeSrc":"6100:20:55","nodeType":"YulIdentifier","src":"6100:20:55"},"nativeSrc":"6100:53:55","nodeType":"YulFunctionCall","src":"6100:53:55"},"variableNames":[{"name":"value4","nativeSrc":"6090:6:55","nodeType":"YulIdentifier","src":"6090:6:55"}]}]},{"nativeSrc":"6173:298:55","nodeType":"YulBlock","src":"6173:298:55","statements":[{"nativeSrc":"6188:47:55","nodeType":"YulVariableDeclaration","src":"6188:47:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6219:9:55","nodeType":"YulIdentifier","src":"6219:9:55"},{"kind":"number","nativeSrc":"6230:3:55","nodeType":"YulLiteral","src":"6230:3:55","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"6215:3:55","nodeType":"YulIdentifier","src":"6215:3:55"},"nativeSrc":"6215:19:55","nodeType":"YulFunctionCall","src":"6215:19:55"}],"functionName":{"name":"calldataload","nativeSrc":"6202:12:55","nodeType":"YulIdentifier","src":"6202:12:55"},"nativeSrc":"6202:33:55","nodeType":"YulFunctionCall","src":"6202:33:55"},"variables":[{"name":"offset","nativeSrc":"6192:6:55","nodeType":"YulTypedName","src":"6192:6:55","type":""}]},{"body":{"nativeSrc":"6282:83:55","nodeType":"YulBlock","src":"6282:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"6284:77:55","nodeType":"YulIdentifier","src":"6284:77:55"},"nativeSrc":"6284:79:55","nodeType":"YulFunctionCall","src":"6284:79:55"},"nativeSrc":"6284:79:55","nodeType":"YulExpressionStatement","src":"6284:79:55"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"6254:6:55","nodeType":"YulIdentifier","src":"6254:6:55"},{"kind":"number","nativeSrc":"6262:18:55","nodeType":"YulLiteral","src":"6262:18:55","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"6251:2:55","nodeType":"YulIdentifier","src":"6251:2:55"},"nativeSrc":"6251:30:55","nodeType":"YulFunctionCall","src":"6251:30:55"},"nativeSrc":"6248:117:55","nodeType":"YulIf","src":"6248:117:55"},{"nativeSrc":"6379:82:55","nodeType":"YulAssignment","src":"6379:82:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6433:9:55","nodeType":"YulIdentifier","src":"6433:9:55"},{"name":"offset","nativeSrc":"6444:6:55","nodeType":"YulIdentifier","src":"6444:6:55"}],"functionName":{"name":"add","nativeSrc":"6429:3:55","nodeType":"YulIdentifier","src":"6429:3:55"},"nativeSrc":"6429:22:55","nodeType":"YulFunctionCall","src":"6429:22:55"},{"name":"dataEnd","nativeSrc":"6453:7:55","nodeType":"YulIdentifier","src":"6453:7:55"}],"functionName":{"name":"abi_decode_t_bytes_calldata_ptr","nativeSrc":"6397:31:55","nodeType":"YulIdentifier","src":"6397:31:55"},"nativeSrc":"6397:64:55","nodeType":"YulFunctionCall","src":"6397:64:55"},"variableNames":[{"name":"value5","nativeSrc":"6379:6:55","nodeType":"YulIdentifier","src":"6379:6:55"},{"name":"value6","nativeSrc":"6387:6:55","nodeType":"YulIdentifier","src":"6387:6:55"}]}]}]},"name":"abi_decode_tuple_t_contract$_IVToken_$5277t_uint256t_contract$_IVToken_$5277t_uint256t_uint256t_bytes_calldata_ptr","nativeSrc":"5159:1319:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5283:9:55","nodeType":"YulTypedName","src":"5283:9:55","type":""},{"name":"dataEnd","nativeSrc":"5294:7:55","nodeType":"YulTypedName","src":"5294:7:55","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5306:6:55","nodeType":"YulTypedName","src":"5306:6:55","type":""},{"name":"value1","nativeSrc":"5314:6:55","nodeType":"YulTypedName","src":"5314:6:55","type":""},{"name":"value2","nativeSrc":"5322:6:55","nodeType":"YulTypedName","src":"5322:6:55","type":""},{"name":"value3","nativeSrc":"5330:6:55","nodeType":"YulTypedName","src":"5330:6:55","type":""},{"name":"value4","nativeSrc":"5338:6:55","nodeType":"YulTypedName","src":"5338:6:55","type":""},{"name":"value5","nativeSrc":"5346:6:55","nodeType":"YulTypedName","src":"5346:6:55","type":""},{"name":"value6","nativeSrc":"5354:6:55","nodeType":"YulTypedName","src":"5354:6:55","type":""}],"src":"5159:1319:55"},{"body":{"nativeSrc":"6600:535:55","nodeType":"YulBlock","src":"6600:535:55","statements":[{"body":{"nativeSrc":"6646:83:55","nodeType":"YulBlock","src":"6646:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"6648:77:55","nodeType":"YulIdentifier","src":"6648:77:55"},"nativeSrc":"6648:79:55","nodeType":"YulFunctionCall","src":"6648:79:55"},"nativeSrc":"6648:79:55","nodeType":"YulExpressionStatement","src":"6648:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6621:7:55","nodeType":"YulIdentifier","src":"6621:7:55"},{"name":"headStart","nativeSrc":"6630:9:55","nodeType":"YulIdentifier","src":"6630:9:55"}],"functionName":{"name":"sub","nativeSrc":"6617:3:55","nodeType":"YulIdentifier","src":"6617:3:55"},"nativeSrc":"6617:23:55","nodeType":"YulFunctionCall","src":"6617:23:55"},{"kind":"number","nativeSrc":"6642:2:55","nodeType":"YulLiteral","src":"6642:2:55","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"6613:3:55","nodeType":"YulIdentifier","src":"6613:3:55"},"nativeSrc":"6613:32:55","nodeType":"YulFunctionCall","src":"6613:32:55"},"nativeSrc":"6610:119:55","nodeType":"YulIf","src":"6610:119:55"},{"nativeSrc":"6739:133:55","nodeType":"YulBlock","src":"6739:133:55","statements":[{"nativeSrc":"6754:15:55","nodeType":"YulVariableDeclaration","src":"6754:15:55","value":{"kind":"number","nativeSrc":"6768:1:55","nodeType":"YulLiteral","src":"6768:1:55","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"6758:6:55","nodeType":"YulTypedName","src":"6758:6:55","type":""}]},{"nativeSrc":"6783:79:55","nodeType":"YulAssignment","src":"6783:79:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6834:9:55","nodeType":"YulIdentifier","src":"6834:9:55"},{"name":"offset","nativeSrc":"6845:6:55","nodeType":"YulIdentifier","src":"6845:6:55"}],"functionName":{"name":"add","nativeSrc":"6830:3:55","nodeType":"YulIdentifier","src":"6830:3:55"},"nativeSrc":"6830:22:55","nodeType":"YulFunctionCall","src":"6830:22:55"},{"name":"dataEnd","nativeSrc":"6854:7:55","nodeType":"YulIdentifier","src":"6854:7:55"}],"functionName":{"name":"abi_decode_t_contract$_IVToken_$5277","nativeSrc":"6793:36:55","nodeType":"YulIdentifier","src":"6793:36:55"},"nativeSrc":"6793:69:55","nodeType":"YulFunctionCall","src":"6793:69:55"},"variableNames":[{"name":"value0","nativeSrc":"6783:6:55","nodeType":"YulIdentifier","src":"6783:6:55"}]}]},{"nativeSrc":"6882:118:55","nodeType":"YulBlock","src":"6882:118:55","statements":[{"nativeSrc":"6897:16:55","nodeType":"YulVariableDeclaration","src":"6897:16:55","value":{"kind":"number","nativeSrc":"6911:2:55","nodeType":"YulLiteral","src":"6911:2:55","type":"","value":"32"},"variables":[{"name":"offset","nativeSrc":"6901:6:55","nodeType":"YulTypedName","src":"6901:6:55","type":""}]},{"nativeSrc":"6927:63:55","nodeType":"YulAssignment","src":"6927:63:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6962:9:55","nodeType":"YulIdentifier","src":"6962:9:55"},{"name":"offset","nativeSrc":"6973:6:55","nodeType":"YulIdentifier","src":"6973:6:55"}],"functionName":{"name":"add","nativeSrc":"6958:3:55","nodeType":"YulIdentifier","src":"6958:3:55"},"nativeSrc":"6958:22:55","nodeType":"YulFunctionCall","src":"6958:22:55"},{"name":"dataEnd","nativeSrc":"6982:7:55","nodeType":"YulIdentifier","src":"6982:7:55"}],"functionName":{"name":"abi_decode_t_uint256","nativeSrc":"6937:20:55","nodeType":"YulIdentifier","src":"6937:20:55"},"nativeSrc":"6937:53:55","nodeType":"YulFunctionCall","src":"6937:53:55"},"variableNames":[{"name":"value1","nativeSrc":"6927:6:55","nodeType":"YulIdentifier","src":"6927:6:55"}]}]},{"nativeSrc":"7010:118:55","nodeType":"YulBlock","src":"7010:118:55","statements":[{"nativeSrc":"7025:16:55","nodeType":"YulVariableDeclaration","src":"7025:16:55","value":{"kind":"number","nativeSrc":"7039:2:55","nodeType":"YulLiteral","src":"7039:2:55","type":"","value":"64"},"variables":[{"name":"offset","nativeSrc":"7029:6:55","nodeType":"YulTypedName","src":"7029:6:55","type":""}]},{"nativeSrc":"7055:63:55","nodeType":"YulAssignment","src":"7055:63:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7090:9:55","nodeType":"YulIdentifier","src":"7090:9:55"},{"name":"offset","nativeSrc":"7101:6:55","nodeType":"YulIdentifier","src":"7101:6:55"}],"functionName":{"name":"add","nativeSrc":"7086:3:55","nodeType":"YulIdentifier","src":"7086:3:55"},"nativeSrc":"7086:22:55","nodeType":"YulFunctionCall","src":"7086:22:55"},{"name":"dataEnd","nativeSrc":"7110:7:55","nodeType":"YulIdentifier","src":"7110:7:55"}],"functionName":{"name":"abi_decode_t_uint256","nativeSrc":"7065:20:55","nodeType":"YulIdentifier","src":"7065:20:55"},"nativeSrc":"7065:53:55","nodeType":"YulFunctionCall","src":"7065:53:55"},"variableNames":[{"name":"value2","nativeSrc":"7055:6:55","nodeType":"YulIdentifier","src":"7055:6:55"}]}]}]},"name":"abi_decode_tuple_t_contract$_IVToken_$5277t_uint256t_uint256","nativeSrc":"6484:651:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6554:9:55","nodeType":"YulTypedName","src":"6554:9:55","type":""},{"name":"dataEnd","nativeSrc":"6565:7:55","nodeType":"YulTypedName","src":"6565:7:55","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6577:6:55","nodeType":"YulTypedName","src":"6577:6:55","type":""},{"name":"value1","nativeSrc":"6585:6:55","nodeType":"YulTypedName","src":"6585:6:55","type":""},{"name":"value2","nativeSrc":"6593:6:55","nodeType":"YulTypedName","src":"6593:6:55","type":""}],"src":"6484:651:55"},{"body":{"nativeSrc":"7222:66:55","nodeType":"YulBlock","src":"7222:66:55","statements":[{"nativeSrc":"7232:50:55","nodeType":"YulAssignment","src":"7232:50:55","value":{"arguments":[{"name":"value","nativeSrc":"7276:5:55","nodeType":"YulIdentifier","src":"7276:5:55"}],"functionName":{"name":"convert_t_uint160_to_t_address","nativeSrc":"7245:30:55","nodeType":"YulIdentifier","src":"7245:30:55"},"nativeSrc":"7245:37:55","nodeType":"YulFunctionCall","src":"7245:37:55"},"variableNames":[{"name":"converted","nativeSrc":"7232:9:55","nodeType":"YulIdentifier","src":"7232:9:55"}]}]},"name":"convert_t_contract$_IComptroller_$5454_to_t_address","nativeSrc":"7141:147:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"7202:5:55","nodeType":"YulTypedName","src":"7202:5:55","type":""}],"returnVariables":[{"name":"converted","nativeSrc":"7212:9:55","nodeType":"YulTypedName","src":"7212:9:55","type":""}],"src":"7141:147:55"},{"body":{"nativeSrc":"7380:87:55","nodeType":"YulBlock","src":"7380:87:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"7397:3:55","nodeType":"YulIdentifier","src":"7397:3:55"},{"arguments":[{"name":"value","nativeSrc":"7454:5:55","nodeType":"YulIdentifier","src":"7454:5:55"}],"functionName":{"name":"convert_t_contract$_IComptroller_$5454_to_t_address","nativeSrc":"7402:51:55","nodeType":"YulIdentifier","src":"7402:51:55"},"nativeSrc":"7402:58:55","nodeType":"YulFunctionCall","src":"7402:58:55"}],"functionName":{"name":"mstore","nativeSrc":"7390:6:55","nodeType":"YulIdentifier","src":"7390:6:55"},"nativeSrc":"7390:71:55","nodeType":"YulFunctionCall","src":"7390:71:55"},"nativeSrc":"7390:71:55","nodeType":"YulExpressionStatement","src":"7390:71:55"}]},"name":"abi_encode_t_contract$_IComptroller_$5454_to_t_address_fromStack","nativeSrc":"7294:173:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"7368:5:55","nodeType":"YulTypedName","src":"7368:5:55","type":""},{"name":"pos","nativeSrc":"7375:3:55","nodeType":"YulTypedName","src":"7375:3:55","type":""}],"src":"7294:173:55"},{"body":{"nativeSrc":"7592:145:55","nodeType":"YulBlock","src":"7592:145:55","statements":[{"nativeSrc":"7602:26:55","nodeType":"YulAssignment","src":"7602:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"7614:9:55","nodeType":"YulIdentifier","src":"7614:9:55"},{"kind":"number","nativeSrc":"7625:2:55","nodeType":"YulLiteral","src":"7625:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7610:3:55","nodeType":"YulIdentifier","src":"7610:3:55"},"nativeSrc":"7610:18:55","nodeType":"YulFunctionCall","src":"7610:18:55"},"variableNames":[{"name":"tail","nativeSrc":"7602:4:55","nodeType":"YulIdentifier","src":"7602:4:55"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"7703:6:55","nodeType":"YulIdentifier","src":"7703:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"7716:9:55","nodeType":"YulIdentifier","src":"7716:9:55"},{"kind":"number","nativeSrc":"7727:1:55","nodeType":"YulLiteral","src":"7727:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"7712:3:55","nodeType":"YulIdentifier","src":"7712:3:55"},"nativeSrc":"7712:17:55","nodeType":"YulFunctionCall","src":"7712:17:55"}],"functionName":{"name":"abi_encode_t_contract$_IComptroller_$5454_to_t_address_fromStack","nativeSrc":"7638:64:55","nodeType":"YulIdentifier","src":"7638:64:55"},"nativeSrc":"7638:92:55","nodeType":"YulFunctionCall","src":"7638:92:55"},"nativeSrc":"7638:92:55","nodeType":"YulExpressionStatement","src":"7638:92:55"}]},"name":"abi_encode_tuple_t_contract$_IComptroller_$5454__to_t_address__fromStack_reversed","nativeSrc":"7473:264:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7564:9:55","nodeType":"YulTypedName","src":"7564:9:55","type":""},{"name":"value0","nativeSrc":"7576:6:55","nodeType":"YulTypedName","src":"7576:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"7587:4:55","nodeType":"YulTypedName","src":"7587:4:55","type":""}],"src":"7473:264:55"},{"body":{"nativeSrc":"7808:53:55","nodeType":"YulBlock","src":"7808:53:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"7825:3:55","nodeType":"YulIdentifier","src":"7825:3:55"},{"arguments":[{"name":"value","nativeSrc":"7848:5:55","nodeType":"YulIdentifier","src":"7848:5:55"}],"functionName":{"name":"cleanup_t_address","nativeSrc":"7830:17:55","nodeType":"YulIdentifier","src":"7830:17:55"},"nativeSrc":"7830:24:55","nodeType":"YulFunctionCall","src":"7830:24:55"}],"functionName":{"name":"mstore","nativeSrc":"7818:6:55","nodeType":"YulIdentifier","src":"7818:6:55"},"nativeSrc":"7818:37:55","nodeType":"YulFunctionCall","src":"7818:37:55"},"nativeSrc":"7818:37:55","nodeType":"YulExpressionStatement","src":"7818:37:55"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"7743:118:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"7796:5:55","nodeType":"YulTypedName","src":"7796:5:55","type":""},{"name":"pos","nativeSrc":"7803:3:55","nodeType":"YulTypedName","src":"7803:3:55","type":""}],"src":"7743:118:55"},{"body":{"nativeSrc":"7965:124:55","nodeType":"YulBlock","src":"7965:124:55","statements":[{"nativeSrc":"7975:26:55","nodeType":"YulAssignment","src":"7975:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"7987:9:55","nodeType":"YulIdentifier","src":"7987:9:55"},{"kind":"number","nativeSrc":"7998:2:55","nodeType":"YulLiteral","src":"7998:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7983:3:55","nodeType":"YulIdentifier","src":"7983:3:55"},"nativeSrc":"7983:18:55","nodeType":"YulFunctionCall","src":"7983:18:55"},"variableNames":[{"name":"tail","nativeSrc":"7975:4:55","nodeType":"YulIdentifier","src":"7975:4:55"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"8055:6:55","nodeType":"YulIdentifier","src":"8055:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"8068:9:55","nodeType":"YulIdentifier","src":"8068:9:55"},{"kind":"number","nativeSrc":"8079:1:55","nodeType":"YulLiteral","src":"8079:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"8064:3:55","nodeType":"YulIdentifier","src":"8064:3:55"},"nativeSrc":"8064:17:55","nodeType":"YulFunctionCall","src":"8064:17:55"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"8011:43:55","nodeType":"YulIdentifier","src":"8011:43:55"},"nativeSrc":"8011:71:55","nodeType":"YulFunctionCall","src":"8011:71:55"},"nativeSrc":"8011:71:55","nodeType":"YulExpressionStatement","src":"8011:71:55"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"7867:222:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7937:9:55","nodeType":"YulTypedName","src":"7937:9:55","type":""},{"name":"value0","nativeSrc":"7949:6:55","nodeType":"YulTypedName","src":"7949:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"7960:4:55","nodeType":"YulTypedName","src":"7960:4:55","type":""}],"src":"7867:222:55"},{"body":{"nativeSrc":"8194:407:55","nodeType":"YulBlock","src":"8194:407:55","statements":[{"body":{"nativeSrc":"8240:83:55","nodeType":"YulBlock","src":"8240:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"8242:77:55","nodeType":"YulIdentifier","src":"8242:77:55"},"nativeSrc":"8242:79:55","nodeType":"YulFunctionCall","src":"8242:79:55"},"nativeSrc":"8242:79:55","nodeType":"YulExpressionStatement","src":"8242:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"8215:7:55","nodeType":"YulIdentifier","src":"8215:7:55"},{"name":"headStart","nativeSrc":"8224:9:55","nodeType":"YulIdentifier","src":"8224:9:55"}],"functionName":{"name":"sub","nativeSrc":"8211:3:55","nodeType":"YulIdentifier","src":"8211:3:55"},"nativeSrc":"8211:23:55","nodeType":"YulFunctionCall","src":"8211:23:55"},{"kind":"number","nativeSrc":"8236:2:55","nodeType":"YulLiteral","src":"8236:2:55","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"8207:3:55","nodeType":"YulIdentifier","src":"8207:3:55"},"nativeSrc":"8207:32:55","nodeType":"YulFunctionCall","src":"8207:32:55"},"nativeSrc":"8204:119:55","nodeType":"YulIf","src":"8204:119:55"},{"nativeSrc":"8333:133:55","nodeType":"YulBlock","src":"8333:133:55","statements":[{"nativeSrc":"8348:15:55","nodeType":"YulVariableDeclaration","src":"8348:15:55","value":{"kind":"number","nativeSrc":"8362:1:55","nodeType":"YulLiteral","src":"8362:1:55","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"8352:6:55","nodeType":"YulTypedName","src":"8352:6:55","type":""}]},{"nativeSrc":"8377:79:55","nodeType":"YulAssignment","src":"8377:79:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8428:9:55","nodeType":"YulIdentifier","src":"8428:9:55"},{"name":"offset","nativeSrc":"8439:6:55","nodeType":"YulIdentifier","src":"8439:6:55"}],"functionName":{"name":"add","nativeSrc":"8424:3:55","nodeType":"YulIdentifier","src":"8424:3:55"},"nativeSrc":"8424:22:55","nodeType":"YulFunctionCall","src":"8424:22:55"},{"name":"dataEnd","nativeSrc":"8448:7:55","nodeType":"YulIdentifier","src":"8448:7:55"}],"functionName":{"name":"abi_decode_t_contract$_IVToken_$5277","nativeSrc":"8387:36:55","nodeType":"YulIdentifier","src":"8387:36:55"},"nativeSrc":"8387:69:55","nodeType":"YulFunctionCall","src":"8387:69:55"},"variableNames":[{"name":"value0","nativeSrc":"8377:6:55","nodeType":"YulIdentifier","src":"8377:6:55"}]}]},{"nativeSrc":"8476:118:55","nodeType":"YulBlock","src":"8476:118:55","statements":[{"nativeSrc":"8491:16:55","nodeType":"YulVariableDeclaration","src":"8491:16:55","value":{"kind":"number","nativeSrc":"8505:2:55","nodeType":"YulLiteral","src":"8505:2:55","type":"","value":"32"},"variables":[{"name":"offset","nativeSrc":"8495:6:55","nodeType":"YulTypedName","src":"8495:6:55","type":""}]},{"nativeSrc":"8521:63:55","nodeType":"YulAssignment","src":"8521:63:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8556:9:55","nodeType":"YulIdentifier","src":"8556:9:55"},{"name":"offset","nativeSrc":"8567:6:55","nodeType":"YulIdentifier","src":"8567:6:55"}],"functionName":{"name":"add","nativeSrc":"8552:3:55","nodeType":"YulIdentifier","src":"8552:3:55"},"nativeSrc":"8552:22:55","nodeType":"YulFunctionCall","src":"8552:22:55"},{"name":"dataEnd","nativeSrc":"8576:7:55","nodeType":"YulIdentifier","src":"8576:7:55"}],"functionName":{"name":"abi_decode_t_uint256","nativeSrc":"8531:20:55","nodeType":"YulIdentifier","src":"8531:20:55"},"nativeSrc":"8531:53:55","nodeType":"YulFunctionCall","src":"8531:53:55"},"variableNames":[{"name":"value1","nativeSrc":"8521:6:55","nodeType":"YulIdentifier","src":"8521:6:55"}]}]}]},"name":"abi_decode_tuple_t_contract$_IVToken_$5277t_uint256","nativeSrc":"8095:506:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8156:9:55","nodeType":"YulTypedName","src":"8156:9:55","type":""},{"name":"dataEnd","nativeSrc":"8167:7:55","nodeType":"YulTypedName","src":"8167:7:55","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"8179:6:55","nodeType":"YulTypedName","src":"8179:6:55","type":""},{"name":"value1","nativeSrc":"8187:6:55","nodeType":"YulTypedName","src":"8187:6:55","type":""}],"src":"8095:506:55"},{"body":{"nativeSrc":"8650:79:55","nodeType":"YulBlock","src":"8650:79:55","statements":[{"body":{"nativeSrc":"8707:16:55","nodeType":"YulBlock","src":"8707:16:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8716:1:55","nodeType":"YulLiteral","src":"8716:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"8719:1:55","nodeType":"YulLiteral","src":"8719:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8709:6:55","nodeType":"YulIdentifier","src":"8709:6:55"},"nativeSrc":"8709:12:55","nodeType":"YulFunctionCall","src":"8709:12:55"},"nativeSrc":"8709:12:55","nodeType":"YulExpressionStatement","src":"8709:12:55"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"8673:5:55","nodeType":"YulIdentifier","src":"8673:5:55"},{"arguments":[{"name":"value","nativeSrc":"8698:5:55","nodeType":"YulIdentifier","src":"8698:5:55"}],"functionName":{"name":"cleanup_t_address","nativeSrc":"8680:17:55","nodeType":"YulIdentifier","src":"8680:17:55"},"nativeSrc":"8680:24:55","nodeType":"YulFunctionCall","src":"8680:24:55"}],"functionName":{"name":"eq","nativeSrc":"8670:2:55","nodeType":"YulIdentifier","src":"8670:2:55"},"nativeSrc":"8670:35:55","nodeType":"YulFunctionCall","src":"8670:35:55"}],"functionName":{"name":"iszero","nativeSrc":"8663:6:55","nodeType":"YulIdentifier","src":"8663:6:55"},"nativeSrc":"8663:43:55","nodeType":"YulFunctionCall","src":"8663:43:55"},"nativeSrc":"8660:63:55","nodeType":"YulIf","src":"8660:63:55"}]},"name":"validator_revert_t_address","nativeSrc":"8607:122:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"8643:5:55","nodeType":"YulTypedName","src":"8643:5:55","type":""}],"src":"8607:122:55"},{"body":{"nativeSrc":"8787:87:55","nodeType":"YulBlock","src":"8787:87:55","statements":[{"nativeSrc":"8797:29:55","nodeType":"YulAssignment","src":"8797:29:55","value":{"arguments":[{"name":"offset","nativeSrc":"8819:6:55","nodeType":"YulIdentifier","src":"8819:6:55"}],"functionName":{"name":"calldataload","nativeSrc":"8806:12:55","nodeType":"YulIdentifier","src":"8806:12:55"},"nativeSrc":"8806:20:55","nodeType":"YulFunctionCall","src":"8806:20:55"},"variableNames":[{"name":"value","nativeSrc":"8797:5:55","nodeType":"YulIdentifier","src":"8797:5:55"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"8862:5:55","nodeType":"YulIdentifier","src":"8862:5:55"}],"functionName":{"name":"validator_revert_t_address","nativeSrc":"8835:26:55","nodeType":"YulIdentifier","src":"8835:26:55"},"nativeSrc":"8835:33:55","nodeType":"YulFunctionCall","src":"8835:33:55"},"nativeSrc":"8835:33:55","nodeType":"YulExpressionStatement","src":"8835:33:55"}]},"name":"abi_decode_t_address","nativeSrc":"8735:139:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"8765:6:55","nodeType":"YulTypedName","src":"8765:6:55","type":""},{"name":"end","nativeSrc":"8773:3:55","nodeType":"YulTypedName","src":"8773:3:55","type":""}],"returnVariables":[{"name":"value","nativeSrc":"8781:5:55","nodeType":"YulTypedName","src":"8781:5:55","type":""}],"src":"8735:139:55"},{"body":{"nativeSrc":"8946:263:55","nodeType":"YulBlock","src":"8946:263:55","statements":[{"body":{"nativeSrc":"8992:83:55","nodeType":"YulBlock","src":"8992:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"8994:77:55","nodeType":"YulIdentifier","src":"8994:77:55"},"nativeSrc":"8994:79:55","nodeType":"YulFunctionCall","src":"8994:79:55"},"nativeSrc":"8994:79:55","nodeType":"YulExpressionStatement","src":"8994:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"8967:7:55","nodeType":"YulIdentifier","src":"8967:7:55"},{"name":"headStart","nativeSrc":"8976:9:55","nodeType":"YulIdentifier","src":"8976:9:55"}],"functionName":{"name":"sub","nativeSrc":"8963:3:55","nodeType":"YulIdentifier","src":"8963:3:55"},"nativeSrc":"8963:23:55","nodeType":"YulFunctionCall","src":"8963:23:55"},{"kind":"number","nativeSrc":"8988:2:55","nodeType":"YulLiteral","src":"8988:2:55","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"8959:3:55","nodeType":"YulIdentifier","src":"8959:3:55"},"nativeSrc":"8959:32:55","nodeType":"YulFunctionCall","src":"8959:32:55"},"nativeSrc":"8956:119:55","nodeType":"YulIf","src":"8956:119:55"},{"nativeSrc":"9085:117:55","nodeType":"YulBlock","src":"9085:117:55","statements":[{"nativeSrc":"9100:15:55","nodeType":"YulVariableDeclaration","src":"9100:15:55","value":{"kind":"number","nativeSrc":"9114:1:55","nodeType":"YulLiteral","src":"9114:1:55","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"9104:6:55","nodeType":"YulTypedName","src":"9104:6:55","type":""}]},{"nativeSrc":"9129:63:55","nodeType":"YulAssignment","src":"9129:63:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9164:9:55","nodeType":"YulIdentifier","src":"9164:9:55"},{"name":"offset","nativeSrc":"9175:6:55","nodeType":"YulIdentifier","src":"9175:6:55"}],"functionName":{"name":"add","nativeSrc":"9160:3:55","nodeType":"YulIdentifier","src":"9160:3:55"},"nativeSrc":"9160:22:55","nodeType":"YulFunctionCall","src":"9160:22:55"},{"name":"dataEnd","nativeSrc":"9184:7:55","nodeType":"YulIdentifier","src":"9184:7:55"}],"functionName":{"name":"abi_decode_t_address","nativeSrc":"9139:20:55","nodeType":"YulIdentifier","src":"9139:20:55"},"nativeSrc":"9139:53:55","nodeType":"YulFunctionCall","src":"9139:53:55"},"variableNames":[{"name":"value0","nativeSrc":"9129:6:55","nodeType":"YulIdentifier","src":"9129:6:55"}]}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"8880:329:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8916:9:55","nodeType":"YulTypedName","src":"8916:9:55","type":""},{"name":"dataEnd","nativeSrc":"8927:7:55","nodeType":"YulTypedName","src":"8927:7:55","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"8939:6:55","nodeType":"YulTypedName","src":"8939:6:55","type":""}],"src":"8880:329:55"},{"body":{"nativeSrc":"9347:478:55","nodeType":"YulBlock","src":"9347:478:55","statements":[{"body":{"nativeSrc":"9396:83:55","nodeType":"YulBlock","src":"9396:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nativeSrc":"9398:77:55","nodeType":"YulIdentifier","src":"9398:77:55"},"nativeSrc":"9398:79:55","nodeType":"YulFunctionCall","src":"9398:79:55"},"nativeSrc":"9398:79:55","nodeType":"YulExpressionStatement","src":"9398:79:55"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"9375:6:55","nodeType":"YulIdentifier","src":"9375:6:55"},{"kind":"number","nativeSrc":"9383:4:55","nodeType":"YulLiteral","src":"9383:4:55","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"9371:3:55","nodeType":"YulIdentifier","src":"9371:3:55"},"nativeSrc":"9371:17:55","nodeType":"YulFunctionCall","src":"9371:17:55"},{"name":"end","nativeSrc":"9390:3:55","nodeType":"YulIdentifier","src":"9390:3:55"}],"functionName":{"name":"slt","nativeSrc":"9367:3:55","nodeType":"YulIdentifier","src":"9367:3:55"},"nativeSrc":"9367:27:55","nodeType":"YulFunctionCall","src":"9367:27:55"}],"functionName":{"name":"iszero","nativeSrc":"9360:6:55","nodeType":"YulIdentifier","src":"9360:6:55"},"nativeSrc":"9360:35:55","nodeType":"YulFunctionCall","src":"9360:35:55"},"nativeSrc":"9357:122:55","nodeType":"YulIf","src":"9357:122:55"},{"nativeSrc":"9488:30:55","nodeType":"YulAssignment","src":"9488:30:55","value":{"arguments":[{"name":"offset","nativeSrc":"9511:6:55","nodeType":"YulIdentifier","src":"9511:6:55"}],"functionName":{"name":"calldataload","nativeSrc":"9498:12:55","nodeType":"YulIdentifier","src":"9498:12:55"},"nativeSrc":"9498:20:55","nodeType":"YulFunctionCall","src":"9498:20:55"},"variableNames":[{"name":"length","nativeSrc":"9488:6:55","nodeType":"YulIdentifier","src":"9488:6:55"}]},{"body":{"nativeSrc":"9561:83:55","nodeType":"YulBlock","src":"9561:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nativeSrc":"9563:77:55","nodeType":"YulIdentifier","src":"9563:77:55"},"nativeSrc":"9563:79:55","nodeType":"YulFunctionCall","src":"9563:79:55"},"nativeSrc":"9563:79:55","nodeType":"YulExpressionStatement","src":"9563:79:55"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"9533:6:55","nodeType":"YulIdentifier","src":"9533:6:55"},{"kind":"number","nativeSrc":"9541:18:55","nodeType":"YulLiteral","src":"9541:18:55","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"9530:2:55","nodeType":"YulIdentifier","src":"9530:2:55"},"nativeSrc":"9530:30:55","nodeType":"YulFunctionCall","src":"9530:30:55"},"nativeSrc":"9527:117:55","nodeType":"YulIf","src":"9527:117:55"},{"nativeSrc":"9653:29:55","nodeType":"YulAssignment","src":"9653:29:55","value":{"arguments":[{"name":"offset","nativeSrc":"9669:6:55","nodeType":"YulIdentifier","src":"9669:6:55"},{"kind":"number","nativeSrc":"9677:4:55","nodeType":"YulLiteral","src":"9677:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"9665:3:55","nodeType":"YulIdentifier","src":"9665:3:55"},"nativeSrc":"9665:17:55","nodeType":"YulFunctionCall","src":"9665:17:55"},"variableNames":[{"name":"arrayPos","nativeSrc":"9653:8:55","nodeType":"YulIdentifier","src":"9653:8:55"}]},{"body":{"nativeSrc":"9736:83:55","nodeType":"YulBlock","src":"9736:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nativeSrc":"9738:77:55","nodeType":"YulIdentifier","src":"9738:77:55"},"nativeSrc":"9738:79:55","nodeType":"YulFunctionCall","src":"9738:79:55"},"nativeSrc":"9738:79:55","nodeType":"YulExpressionStatement","src":"9738:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"arrayPos","nativeSrc":"9701:8:55","nodeType":"YulIdentifier","src":"9701:8:55"},{"arguments":[{"name":"length","nativeSrc":"9715:6:55","nodeType":"YulIdentifier","src":"9715:6:55"},{"kind":"number","nativeSrc":"9723:4:55","nodeType":"YulLiteral","src":"9723:4:55","type":"","value":"0x20"}],"functionName":{"name":"mul","nativeSrc":"9711:3:55","nodeType":"YulIdentifier","src":"9711:3:55"},"nativeSrc":"9711:17:55","nodeType":"YulFunctionCall","src":"9711:17:55"}],"functionName":{"name":"add","nativeSrc":"9697:3:55","nodeType":"YulIdentifier","src":"9697:3:55"},"nativeSrc":"9697:32:55","nodeType":"YulFunctionCall","src":"9697:32:55"},{"name":"end","nativeSrc":"9731:3:55","nodeType":"YulIdentifier","src":"9731:3:55"}],"functionName":{"name":"gt","nativeSrc":"9694:2:55","nodeType":"YulIdentifier","src":"9694:2:55"},"nativeSrc":"9694:41:55","nodeType":"YulFunctionCall","src":"9694:41:55"},"nativeSrc":"9691:128:55","nodeType":"YulIf","src":"9691:128:55"}]},"name":"abi_decode_t_array$_t_contract$_IVToken_$5277_$dyn_calldata_ptr","nativeSrc":"9241:584:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"9314:6:55","nodeType":"YulTypedName","src":"9314:6:55","type":""},{"name":"end","nativeSrc":"9322:3:55","nodeType":"YulTypedName","src":"9322:3:55","type":""}],"returnVariables":[{"name":"arrayPos","nativeSrc":"9330:8:55","nodeType":"YulTypedName","src":"9330:8:55","type":""},{"name":"length","nativeSrc":"9340:6:55","nodeType":"YulTypedName","src":"9340:6:55","type":""}],"src":"9241:584:55"},{"body":{"nativeSrc":"9938:478:55","nodeType":"YulBlock","src":"9938:478:55","statements":[{"body":{"nativeSrc":"9987:83:55","nodeType":"YulBlock","src":"9987:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nativeSrc":"9989:77:55","nodeType":"YulIdentifier","src":"9989:77:55"},"nativeSrc":"9989:79:55","nodeType":"YulFunctionCall","src":"9989:79:55"},"nativeSrc":"9989:79:55","nodeType":"YulExpressionStatement","src":"9989:79:55"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"9966:6:55","nodeType":"YulIdentifier","src":"9966:6:55"},{"kind":"number","nativeSrc":"9974:4:55","nodeType":"YulLiteral","src":"9974:4:55","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"9962:3:55","nodeType":"YulIdentifier","src":"9962:3:55"},"nativeSrc":"9962:17:55","nodeType":"YulFunctionCall","src":"9962:17:55"},{"name":"end","nativeSrc":"9981:3:55","nodeType":"YulIdentifier","src":"9981:3:55"}],"functionName":{"name":"slt","nativeSrc":"9958:3:55","nodeType":"YulIdentifier","src":"9958:3:55"},"nativeSrc":"9958:27:55","nodeType":"YulFunctionCall","src":"9958:27:55"}],"functionName":{"name":"iszero","nativeSrc":"9951:6:55","nodeType":"YulIdentifier","src":"9951:6:55"},"nativeSrc":"9951:35:55","nodeType":"YulFunctionCall","src":"9951:35:55"},"nativeSrc":"9948:122:55","nodeType":"YulIf","src":"9948:122:55"},{"nativeSrc":"10079:30:55","nodeType":"YulAssignment","src":"10079:30:55","value":{"arguments":[{"name":"offset","nativeSrc":"10102:6:55","nodeType":"YulIdentifier","src":"10102:6:55"}],"functionName":{"name":"calldataload","nativeSrc":"10089:12:55","nodeType":"YulIdentifier","src":"10089:12:55"},"nativeSrc":"10089:20:55","nodeType":"YulFunctionCall","src":"10089:20:55"},"variableNames":[{"name":"length","nativeSrc":"10079:6:55","nodeType":"YulIdentifier","src":"10079:6:55"}]},{"body":{"nativeSrc":"10152:83:55","nodeType":"YulBlock","src":"10152:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nativeSrc":"10154:77:55","nodeType":"YulIdentifier","src":"10154:77:55"},"nativeSrc":"10154:79:55","nodeType":"YulFunctionCall","src":"10154:79:55"},"nativeSrc":"10154:79:55","nodeType":"YulExpressionStatement","src":"10154:79:55"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"10124:6:55","nodeType":"YulIdentifier","src":"10124:6:55"},{"kind":"number","nativeSrc":"10132:18:55","nodeType":"YulLiteral","src":"10132:18:55","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"10121:2:55","nodeType":"YulIdentifier","src":"10121:2:55"},"nativeSrc":"10121:30:55","nodeType":"YulFunctionCall","src":"10121:30:55"},"nativeSrc":"10118:117:55","nodeType":"YulIf","src":"10118:117:55"},{"nativeSrc":"10244:29:55","nodeType":"YulAssignment","src":"10244:29:55","value":{"arguments":[{"name":"offset","nativeSrc":"10260:6:55","nodeType":"YulIdentifier","src":"10260:6:55"},{"kind":"number","nativeSrc":"10268:4:55","nodeType":"YulLiteral","src":"10268:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10256:3:55","nodeType":"YulIdentifier","src":"10256:3:55"},"nativeSrc":"10256:17:55","nodeType":"YulFunctionCall","src":"10256:17:55"},"variableNames":[{"name":"arrayPos","nativeSrc":"10244:8:55","nodeType":"YulIdentifier","src":"10244:8:55"}]},{"body":{"nativeSrc":"10327:83:55","nodeType":"YulBlock","src":"10327:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nativeSrc":"10329:77:55","nodeType":"YulIdentifier","src":"10329:77:55"},"nativeSrc":"10329:79:55","nodeType":"YulFunctionCall","src":"10329:79:55"},"nativeSrc":"10329:79:55","nodeType":"YulExpressionStatement","src":"10329:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"arrayPos","nativeSrc":"10292:8:55","nodeType":"YulIdentifier","src":"10292:8:55"},{"arguments":[{"name":"length","nativeSrc":"10306:6:55","nodeType":"YulIdentifier","src":"10306:6:55"},{"kind":"number","nativeSrc":"10314:4:55","nodeType":"YulLiteral","src":"10314:4:55","type":"","value":"0x20"}],"functionName":{"name":"mul","nativeSrc":"10302:3:55","nodeType":"YulIdentifier","src":"10302:3:55"},"nativeSrc":"10302:17:55","nodeType":"YulFunctionCall","src":"10302:17:55"}],"functionName":{"name":"add","nativeSrc":"10288:3:55","nodeType":"YulIdentifier","src":"10288:3:55"},"nativeSrc":"10288:32:55","nodeType":"YulFunctionCall","src":"10288:32:55"},{"name":"end","nativeSrc":"10322:3:55","nodeType":"YulIdentifier","src":"10322:3:55"}],"functionName":{"name":"gt","nativeSrc":"10285:2:55","nodeType":"YulIdentifier","src":"10285:2:55"},"nativeSrc":"10285:41:55","nodeType":"YulFunctionCall","src":"10285:41:55"},"nativeSrc":"10282:128:55","nodeType":"YulIf","src":"10282:128:55"}]},"name":"abi_decode_t_array$_t_uint256_$dyn_calldata_ptr","nativeSrc":"9848:568:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"9905:6:55","nodeType":"YulTypedName","src":"9905:6:55","type":""},{"name":"end","nativeSrc":"9913:3:55","nodeType":"YulTypedName","src":"9913:3:55","type":""}],"returnVariables":[{"name":"arrayPos","nativeSrc":"9921:8:55","nodeType":"YulTypedName","src":"9921:8:55","type":""},{"name":"length","nativeSrc":"9931:6:55","nodeType":"YulTypedName","src":"9931:6:55","type":""}],"src":"9848:568:55"},{"body":{"nativeSrc":"10713:1686:55","nodeType":"YulBlock","src":"10713:1686:55","statements":[{"body":{"nativeSrc":"10760:83:55","nodeType":"YulBlock","src":"10760:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"10762:77:55","nodeType":"YulIdentifier","src":"10762:77:55"},"nativeSrc":"10762:79:55","nodeType":"YulFunctionCall","src":"10762:79:55"},"nativeSrc":"10762:79:55","nodeType":"YulExpressionStatement","src":"10762:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"10734:7:55","nodeType":"YulIdentifier","src":"10734:7:55"},{"name":"headStart","nativeSrc":"10743:9:55","nodeType":"YulIdentifier","src":"10743:9:55"}],"functionName":{"name":"sub","nativeSrc":"10730:3:55","nodeType":"YulIdentifier","src":"10730:3:55"},"nativeSrc":"10730:23:55","nodeType":"YulFunctionCall","src":"10730:23:55"},{"kind":"number","nativeSrc":"10755:3:55","nodeType":"YulLiteral","src":"10755:3:55","type":"","value":"192"}],"functionName":{"name":"slt","nativeSrc":"10726:3:55","nodeType":"YulIdentifier","src":"10726:3:55"},"nativeSrc":"10726:33:55","nodeType":"YulFunctionCall","src":"10726:33:55"},"nativeSrc":"10723:120:55","nodeType":"YulIf","src":"10723:120:55"},{"nativeSrc":"10853:328:55","nodeType":"YulBlock","src":"10853:328:55","statements":[{"nativeSrc":"10868:45:55","nodeType":"YulVariableDeclaration","src":"10868:45:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10899:9:55","nodeType":"YulIdentifier","src":"10899:9:55"},{"kind":"number","nativeSrc":"10910:1:55","nodeType":"YulLiteral","src":"10910:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"10895:3:55","nodeType":"YulIdentifier","src":"10895:3:55"},"nativeSrc":"10895:17:55","nodeType":"YulFunctionCall","src":"10895:17:55"}],"functionName":{"name":"calldataload","nativeSrc":"10882:12:55","nodeType":"YulIdentifier","src":"10882:12:55"},"nativeSrc":"10882:31:55","nodeType":"YulFunctionCall","src":"10882:31:55"},"variables":[{"name":"offset","nativeSrc":"10872:6:55","nodeType":"YulTypedName","src":"10872:6:55","type":""}]},{"body":{"nativeSrc":"10960:83:55","nodeType":"YulBlock","src":"10960:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"10962:77:55","nodeType":"YulIdentifier","src":"10962:77:55"},"nativeSrc":"10962:79:55","nodeType":"YulFunctionCall","src":"10962:79:55"},"nativeSrc":"10962:79:55","nodeType":"YulExpressionStatement","src":"10962:79:55"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"10932:6:55","nodeType":"YulIdentifier","src":"10932:6:55"},{"kind":"number","nativeSrc":"10940:18:55","nodeType":"YulLiteral","src":"10940:18:55","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"10929:2:55","nodeType":"YulIdentifier","src":"10929:2:55"},"nativeSrc":"10929:30:55","nodeType":"YulFunctionCall","src":"10929:30:55"},"nativeSrc":"10926:117:55","nodeType":"YulIf","src":"10926:117:55"},{"nativeSrc":"11057:114:55","nodeType":"YulAssignment","src":"11057:114:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11143:9:55","nodeType":"YulIdentifier","src":"11143:9:55"},{"name":"offset","nativeSrc":"11154:6:55","nodeType":"YulIdentifier","src":"11154:6:55"}],"functionName":{"name":"add","nativeSrc":"11139:3:55","nodeType":"YulIdentifier","src":"11139:3:55"},"nativeSrc":"11139:22:55","nodeType":"YulFunctionCall","src":"11139:22:55"},{"name":"dataEnd","nativeSrc":"11163:7:55","nodeType":"YulIdentifier","src":"11163:7:55"}],"functionName":{"name":"abi_decode_t_array$_t_contract$_IVToken_$5277_$dyn_calldata_ptr","nativeSrc":"11075:63:55","nodeType":"YulIdentifier","src":"11075:63:55"},"nativeSrc":"11075:96:55","nodeType":"YulFunctionCall","src":"11075:96:55"},"variableNames":[{"name":"value0","nativeSrc":"11057:6:55","nodeType":"YulIdentifier","src":"11057:6:55"},{"name":"value1","nativeSrc":"11065:6:55","nodeType":"YulIdentifier","src":"11065:6:55"}]}]},{"nativeSrc":"11191:313:55","nodeType":"YulBlock","src":"11191:313:55","statements":[{"nativeSrc":"11206:46:55","nodeType":"YulVariableDeclaration","src":"11206:46:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11237:9:55","nodeType":"YulIdentifier","src":"11237:9:55"},{"kind":"number","nativeSrc":"11248:2:55","nodeType":"YulLiteral","src":"11248:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11233:3:55","nodeType":"YulIdentifier","src":"11233:3:55"},"nativeSrc":"11233:18:55","nodeType":"YulFunctionCall","src":"11233:18:55"}],"functionName":{"name":"calldataload","nativeSrc":"11220:12:55","nodeType":"YulIdentifier","src":"11220:12:55"},"nativeSrc":"11220:32:55","nodeType":"YulFunctionCall","src":"11220:32:55"},"variables":[{"name":"offset","nativeSrc":"11210:6:55","nodeType":"YulTypedName","src":"11210:6:55","type":""}]},{"body":{"nativeSrc":"11299:83:55","nodeType":"YulBlock","src":"11299:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"11301:77:55","nodeType":"YulIdentifier","src":"11301:77:55"},"nativeSrc":"11301:79:55","nodeType":"YulFunctionCall","src":"11301:79:55"},"nativeSrc":"11301:79:55","nodeType":"YulExpressionStatement","src":"11301:79:55"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"11271:6:55","nodeType":"YulIdentifier","src":"11271:6:55"},{"kind":"number","nativeSrc":"11279:18:55","nodeType":"YulLiteral","src":"11279:18:55","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"11268:2:55","nodeType":"YulIdentifier","src":"11268:2:55"},"nativeSrc":"11268:30:55","nodeType":"YulFunctionCall","src":"11268:30:55"},"nativeSrc":"11265:117:55","nodeType":"YulIf","src":"11265:117:55"},{"nativeSrc":"11396:98:55","nodeType":"YulAssignment","src":"11396:98:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11466:9:55","nodeType":"YulIdentifier","src":"11466:9:55"},{"name":"offset","nativeSrc":"11477:6:55","nodeType":"YulIdentifier","src":"11477:6:55"}],"functionName":{"name":"add","nativeSrc":"11462:3:55","nodeType":"YulIdentifier","src":"11462:3:55"},"nativeSrc":"11462:22:55","nodeType":"YulFunctionCall","src":"11462:22:55"},{"name":"dataEnd","nativeSrc":"11486:7:55","nodeType":"YulIdentifier","src":"11486:7:55"}],"functionName":{"name":"abi_decode_t_array$_t_uint256_$dyn_calldata_ptr","nativeSrc":"11414:47:55","nodeType":"YulIdentifier","src":"11414:47:55"},"nativeSrc":"11414:80:55","nodeType":"YulFunctionCall","src":"11414:80:55"},"variableNames":[{"name":"value2","nativeSrc":"11396:6:55","nodeType":"YulIdentifier","src":"11396:6:55"},{"name":"value3","nativeSrc":"11404:6:55","nodeType":"YulIdentifier","src":"11404:6:55"}]}]},{"nativeSrc":"11514:313:55","nodeType":"YulBlock","src":"11514:313:55","statements":[{"nativeSrc":"11529:46:55","nodeType":"YulVariableDeclaration","src":"11529:46:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11560:9:55","nodeType":"YulIdentifier","src":"11560:9:55"},{"kind":"number","nativeSrc":"11571:2:55","nodeType":"YulLiteral","src":"11571:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"11556:3:55","nodeType":"YulIdentifier","src":"11556:3:55"},"nativeSrc":"11556:18:55","nodeType":"YulFunctionCall","src":"11556:18:55"}],"functionName":{"name":"calldataload","nativeSrc":"11543:12:55","nodeType":"YulIdentifier","src":"11543:12:55"},"nativeSrc":"11543:32:55","nodeType":"YulFunctionCall","src":"11543:32:55"},"variables":[{"name":"offset","nativeSrc":"11533:6:55","nodeType":"YulTypedName","src":"11533:6:55","type":""}]},{"body":{"nativeSrc":"11622:83:55","nodeType":"YulBlock","src":"11622:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"11624:77:55","nodeType":"YulIdentifier","src":"11624:77:55"},"nativeSrc":"11624:79:55","nodeType":"YulFunctionCall","src":"11624:79:55"},"nativeSrc":"11624:79:55","nodeType":"YulExpressionStatement","src":"11624:79:55"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"11594:6:55","nodeType":"YulIdentifier","src":"11594:6:55"},{"kind":"number","nativeSrc":"11602:18:55","nodeType":"YulLiteral","src":"11602:18:55","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"11591:2:55","nodeType":"YulIdentifier","src":"11591:2:55"},"nativeSrc":"11591:30:55","nodeType":"YulFunctionCall","src":"11591:30:55"},"nativeSrc":"11588:117:55","nodeType":"YulIf","src":"11588:117:55"},{"nativeSrc":"11719:98:55","nodeType":"YulAssignment","src":"11719:98:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11789:9:55","nodeType":"YulIdentifier","src":"11789:9:55"},{"name":"offset","nativeSrc":"11800:6:55","nodeType":"YulIdentifier","src":"11800:6:55"}],"functionName":{"name":"add","nativeSrc":"11785:3:55","nodeType":"YulIdentifier","src":"11785:3:55"},"nativeSrc":"11785:22:55","nodeType":"YulFunctionCall","src":"11785:22:55"},{"name":"dataEnd","nativeSrc":"11809:7:55","nodeType":"YulIdentifier","src":"11809:7:55"}],"functionName":{"name":"abi_decode_t_array$_t_uint256_$dyn_calldata_ptr","nativeSrc":"11737:47:55","nodeType":"YulIdentifier","src":"11737:47:55"},"nativeSrc":"11737:80:55","nodeType":"YulFunctionCall","src":"11737:80:55"},"variableNames":[{"name":"value4","nativeSrc":"11719:6:55","nodeType":"YulIdentifier","src":"11719:6:55"},{"name":"value5","nativeSrc":"11727:6:55","nodeType":"YulIdentifier","src":"11727:6:55"}]}]},{"nativeSrc":"11837:118:55","nodeType":"YulBlock","src":"11837:118:55","statements":[{"nativeSrc":"11852:16:55","nodeType":"YulVariableDeclaration","src":"11852:16:55","value":{"kind":"number","nativeSrc":"11866:2:55","nodeType":"YulLiteral","src":"11866:2:55","type":"","value":"96"},"variables":[{"name":"offset","nativeSrc":"11856:6:55","nodeType":"YulTypedName","src":"11856:6:55","type":""}]},{"nativeSrc":"11882:63:55","nodeType":"YulAssignment","src":"11882:63:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11917:9:55","nodeType":"YulIdentifier","src":"11917:9:55"},{"name":"offset","nativeSrc":"11928:6:55","nodeType":"YulIdentifier","src":"11928:6:55"}],"functionName":{"name":"add","nativeSrc":"11913:3:55","nodeType":"YulIdentifier","src":"11913:3:55"},"nativeSrc":"11913:22:55","nodeType":"YulFunctionCall","src":"11913:22:55"},{"name":"dataEnd","nativeSrc":"11937:7:55","nodeType":"YulIdentifier","src":"11937:7:55"}],"functionName":{"name":"abi_decode_t_address","nativeSrc":"11892:20:55","nodeType":"YulIdentifier","src":"11892:20:55"},"nativeSrc":"11892:53:55","nodeType":"YulFunctionCall","src":"11892:53:55"},"variableNames":[{"name":"value6","nativeSrc":"11882:6:55","nodeType":"YulIdentifier","src":"11882:6:55"}]}]},{"nativeSrc":"11965:119:55","nodeType":"YulBlock","src":"11965:119:55","statements":[{"nativeSrc":"11980:17:55","nodeType":"YulVariableDeclaration","src":"11980:17:55","value":{"kind":"number","nativeSrc":"11994:3:55","nodeType":"YulLiteral","src":"11994:3:55","type":"","value":"128"},"variables":[{"name":"offset","nativeSrc":"11984:6:55","nodeType":"YulTypedName","src":"11984:6:55","type":""}]},{"nativeSrc":"12011:63:55","nodeType":"YulAssignment","src":"12011:63:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12046:9:55","nodeType":"YulIdentifier","src":"12046:9:55"},{"name":"offset","nativeSrc":"12057:6:55","nodeType":"YulIdentifier","src":"12057:6:55"}],"functionName":{"name":"add","nativeSrc":"12042:3:55","nodeType":"YulIdentifier","src":"12042:3:55"},"nativeSrc":"12042:22:55","nodeType":"YulFunctionCall","src":"12042:22:55"},{"name":"dataEnd","nativeSrc":"12066:7:55","nodeType":"YulIdentifier","src":"12066:7:55"}],"functionName":{"name":"abi_decode_t_address","nativeSrc":"12021:20:55","nodeType":"YulIdentifier","src":"12021:20:55"},"nativeSrc":"12021:53:55","nodeType":"YulFunctionCall","src":"12021:53:55"},"variableNames":[{"name":"value7","nativeSrc":"12011:6:55","nodeType":"YulIdentifier","src":"12011:6:55"}]}]},{"nativeSrc":"12094:298:55","nodeType":"YulBlock","src":"12094:298:55","statements":[{"nativeSrc":"12109:47:55","nodeType":"YulVariableDeclaration","src":"12109:47:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12140:9:55","nodeType":"YulIdentifier","src":"12140:9:55"},{"kind":"number","nativeSrc":"12151:3:55","nodeType":"YulLiteral","src":"12151:3:55","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"12136:3:55","nodeType":"YulIdentifier","src":"12136:3:55"},"nativeSrc":"12136:19:55","nodeType":"YulFunctionCall","src":"12136:19:55"}],"functionName":{"name":"calldataload","nativeSrc":"12123:12:55","nodeType":"YulIdentifier","src":"12123:12:55"},"nativeSrc":"12123:33:55","nodeType":"YulFunctionCall","src":"12123:33:55"},"variables":[{"name":"offset","nativeSrc":"12113:6:55","nodeType":"YulTypedName","src":"12113:6:55","type":""}]},{"body":{"nativeSrc":"12203:83:55","nodeType":"YulBlock","src":"12203:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"12205:77:55","nodeType":"YulIdentifier","src":"12205:77:55"},"nativeSrc":"12205:79:55","nodeType":"YulFunctionCall","src":"12205:79:55"},"nativeSrc":"12205:79:55","nodeType":"YulExpressionStatement","src":"12205:79:55"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"12175:6:55","nodeType":"YulIdentifier","src":"12175:6:55"},{"kind":"number","nativeSrc":"12183:18:55","nodeType":"YulLiteral","src":"12183:18:55","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"12172:2:55","nodeType":"YulIdentifier","src":"12172:2:55"},"nativeSrc":"12172:30:55","nodeType":"YulFunctionCall","src":"12172:30:55"},"nativeSrc":"12169:117:55","nodeType":"YulIf","src":"12169:117:55"},{"nativeSrc":"12300:82:55","nodeType":"YulAssignment","src":"12300:82:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12354:9:55","nodeType":"YulIdentifier","src":"12354:9:55"},{"name":"offset","nativeSrc":"12365:6:55","nodeType":"YulIdentifier","src":"12365:6:55"}],"functionName":{"name":"add","nativeSrc":"12350:3:55","nodeType":"YulIdentifier","src":"12350:3:55"},"nativeSrc":"12350:22:55","nodeType":"YulFunctionCall","src":"12350:22:55"},{"name":"dataEnd","nativeSrc":"12374:7:55","nodeType":"YulIdentifier","src":"12374:7:55"}],"functionName":{"name":"abi_decode_t_bytes_calldata_ptr","nativeSrc":"12318:31:55","nodeType":"YulIdentifier","src":"12318:31:55"},"nativeSrc":"12318:64:55","nodeType":"YulFunctionCall","src":"12318:64:55"},"variableNames":[{"name":"value8","nativeSrc":"12300:6:55","nodeType":"YulIdentifier","src":"12300:6:55"},{"name":"value9","nativeSrc":"12308:6:55","nodeType":"YulIdentifier","src":"12308:6:55"}]}]}]},"name":"abi_decode_tuple_t_array$_t_contract$_IVToken_$5277_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptrt_addresst_addresst_bytes_calldata_ptr","nativeSrc":"10422:1977:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10611:9:55","nodeType":"YulTypedName","src":"10611:9:55","type":""},{"name":"dataEnd","nativeSrc":"10622:7:55","nodeType":"YulTypedName","src":"10622:7:55","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"10634:6:55","nodeType":"YulTypedName","src":"10634:6:55","type":""},{"name":"value1","nativeSrc":"10642:6:55","nodeType":"YulTypedName","src":"10642:6:55","type":""},{"name":"value2","nativeSrc":"10650:6:55","nodeType":"YulTypedName","src":"10650:6:55","type":""},{"name":"value3","nativeSrc":"10658:6:55","nodeType":"YulTypedName","src":"10658:6:55","type":""},{"name":"value4","nativeSrc":"10666:6:55","nodeType":"YulTypedName","src":"10666:6:55","type":""},{"name":"value5","nativeSrc":"10674:6:55","nodeType":"YulTypedName","src":"10674:6:55","type":""},{"name":"value6","nativeSrc":"10682:6:55","nodeType":"YulTypedName","src":"10682:6:55","type":""},{"name":"value7","nativeSrc":"10690:6:55","nodeType":"YulTypedName","src":"10690:6:55","type":""},{"name":"value8","nativeSrc":"10698:6:55","nodeType":"YulTypedName","src":"10698:6:55","type":""},{"name":"value9","nativeSrc":"10706:6:55","nodeType":"YulTypedName","src":"10706:6:55","type":""}],"src":"10422:1977:55"},{"body":{"nativeSrc":"12447:48:55","nodeType":"YulBlock","src":"12447:48:55","statements":[{"nativeSrc":"12457:32:55","nodeType":"YulAssignment","src":"12457:32:55","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"12482:5:55","nodeType":"YulIdentifier","src":"12482:5:55"}],"functionName":{"name":"iszero","nativeSrc":"12475:6:55","nodeType":"YulIdentifier","src":"12475:6:55"},"nativeSrc":"12475:13:55","nodeType":"YulFunctionCall","src":"12475:13:55"}],"functionName":{"name":"iszero","nativeSrc":"12468:6:55","nodeType":"YulIdentifier","src":"12468:6:55"},"nativeSrc":"12468:21:55","nodeType":"YulFunctionCall","src":"12468:21:55"},"variableNames":[{"name":"cleaned","nativeSrc":"12457:7:55","nodeType":"YulIdentifier","src":"12457:7:55"}]}]},"name":"cleanup_t_bool","nativeSrc":"12405:90:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"12429:5:55","nodeType":"YulTypedName","src":"12429:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"12439:7:55","nodeType":"YulTypedName","src":"12439:7:55","type":""}],"src":"12405:90:55"},{"body":{"nativeSrc":"12560:50:55","nodeType":"YulBlock","src":"12560:50:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"12577:3:55","nodeType":"YulIdentifier","src":"12577:3:55"},{"arguments":[{"name":"value","nativeSrc":"12597:5:55","nodeType":"YulIdentifier","src":"12597:5:55"}],"functionName":{"name":"cleanup_t_bool","nativeSrc":"12582:14:55","nodeType":"YulIdentifier","src":"12582:14:55"},"nativeSrc":"12582:21:55","nodeType":"YulFunctionCall","src":"12582:21:55"}],"functionName":{"name":"mstore","nativeSrc":"12570:6:55","nodeType":"YulIdentifier","src":"12570:6:55"},"nativeSrc":"12570:34:55","nodeType":"YulFunctionCall","src":"12570:34:55"},"nativeSrc":"12570:34:55","nodeType":"YulExpressionStatement","src":"12570:34:55"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nativeSrc":"12501:109:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"12548:5:55","nodeType":"YulTypedName","src":"12548:5:55","type":""},{"name":"pos","nativeSrc":"12555:3:55","nodeType":"YulTypedName","src":"12555:3:55","type":""}],"src":"12501:109:55"},{"body":{"nativeSrc":"12690:40:55","nodeType":"YulBlock","src":"12690:40:55","statements":[{"nativeSrc":"12701:22:55","nodeType":"YulAssignment","src":"12701:22:55","value":{"arguments":[{"name":"value","nativeSrc":"12717:5:55","nodeType":"YulIdentifier","src":"12717:5:55"}],"functionName":{"name":"mload","nativeSrc":"12711:5:55","nodeType":"YulIdentifier","src":"12711:5:55"},"nativeSrc":"12711:12:55","nodeType":"YulFunctionCall","src":"12711:12:55"},"variableNames":[{"name":"length","nativeSrc":"12701:6:55","nodeType":"YulIdentifier","src":"12701:6:55"}]}]},"name":"array_length_t_array$_t_uint256_$dyn_memory_ptr","nativeSrc":"12616:114:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"12673:5:55","nodeType":"YulTypedName","src":"12673:5:55","type":""}],"returnVariables":[{"name":"length","nativeSrc":"12683:6:55","nodeType":"YulTypedName","src":"12683:6:55","type":""}],"src":"12616:114:55"},{"body":{"nativeSrc":"12847:73:55","nodeType":"YulBlock","src":"12847:73:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"12864:3:55","nodeType":"YulIdentifier","src":"12864:3:55"},{"name":"length","nativeSrc":"12869:6:55","nodeType":"YulIdentifier","src":"12869:6:55"}],"functionName":{"name":"mstore","nativeSrc":"12857:6:55","nodeType":"YulIdentifier","src":"12857:6:55"},"nativeSrc":"12857:19:55","nodeType":"YulFunctionCall","src":"12857:19:55"},"nativeSrc":"12857:19:55","nodeType":"YulExpressionStatement","src":"12857:19:55"},{"nativeSrc":"12885:29:55","nodeType":"YulAssignment","src":"12885:29:55","value":{"arguments":[{"name":"pos","nativeSrc":"12904:3:55","nodeType":"YulIdentifier","src":"12904:3:55"},{"kind":"number","nativeSrc":"12909:4:55","nodeType":"YulLiteral","src":"12909:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"12900:3:55","nodeType":"YulIdentifier","src":"12900:3:55"},"nativeSrc":"12900:14:55","nodeType":"YulFunctionCall","src":"12900:14:55"},"variableNames":[{"name":"updated_pos","nativeSrc":"12885:11:55","nodeType":"YulIdentifier","src":"12885:11:55"}]}]},"name":"array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack","nativeSrc":"12736:184:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"12819:3:55","nodeType":"YulTypedName","src":"12819:3:55","type":""},{"name":"length","nativeSrc":"12824:6:55","nodeType":"YulTypedName","src":"12824:6:55","type":""}],"returnVariables":[{"name":"updated_pos","nativeSrc":"12835:11:55","nodeType":"YulTypedName","src":"12835:11:55","type":""}],"src":"12736:184:55"},{"body":{"nativeSrc":"12998:60:55","nodeType":"YulBlock","src":"12998:60:55","statements":[{"nativeSrc":"13008:11:55","nodeType":"YulAssignment","src":"13008:11:55","value":{"name":"ptr","nativeSrc":"13016:3:55","nodeType":"YulIdentifier","src":"13016:3:55"},"variableNames":[{"name":"data","nativeSrc":"13008:4:55","nodeType":"YulIdentifier","src":"13008:4:55"}]},{"nativeSrc":"13029:22:55","nodeType":"YulAssignment","src":"13029:22:55","value":{"arguments":[{"name":"ptr","nativeSrc":"13041:3:55","nodeType":"YulIdentifier","src":"13041:3:55"},{"kind":"number","nativeSrc":"13046:4:55","nodeType":"YulLiteral","src":"13046:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"13037:3:55","nodeType":"YulIdentifier","src":"13037:3:55"},"nativeSrc":"13037:14:55","nodeType":"YulFunctionCall","src":"13037:14:55"},"variableNames":[{"name":"data","nativeSrc":"13029:4:55","nodeType":"YulIdentifier","src":"13029:4:55"}]}]},"name":"array_dataslot_t_array$_t_uint256_$dyn_memory_ptr","nativeSrc":"12926:132:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"12985:3:55","nodeType":"YulTypedName","src":"12985:3:55","type":""}],"returnVariables":[{"name":"data","nativeSrc":"12993:4:55","nodeType":"YulTypedName","src":"12993:4:55","type":""}],"src":"12926:132:55"},{"body":{"nativeSrc":"13119:53:55","nodeType":"YulBlock","src":"13119:53:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"13136:3:55","nodeType":"YulIdentifier","src":"13136:3:55"},{"arguments":[{"name":"value","nativeSrc":"13159:5:55","nodeType":"YulIdentifier","src":"13159:5:55"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"13141:17:55","nodeType":"YulIdentifier","src":"13141:17:55"},"nativeSrc":"13141:24:55","nodeType":"YulFunctionCall","src":"13141:24:55"}],"functionName":{"name":"mstore","nativeSrc":"13129:6:55","nodeType":"YulIdentifier","src":"13129:6:55"},"nativeSrc":"13129:37:55","nodeType":"YulFunctionCall","src":"13129:37:55"},"nativeSrc":"13129:37:55","nodeType":"YulExpressionStatement","src":"13129:37:55"}]},"name":"abi_encode_t_uint256_to_t_uint256","nativeSrc":"13064:108:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"13107:5:55","nodeType":"YulTypedName","src":"13107:5:55","type":""},{"name":"pos","nativeSrc":"13114:3:55","nodeType":"YulTypedName","src":"13114:3:55","type":""}],"src":"13064:108:55"},{"body":{"nativeSrc":"13258:99:55","nodeType":"YulBlock","src":"13258:99:55","statements":[{"expression":{"arguments":[{"name":"value0","nativeSrc":"13302:6:55","nodeType":"YulIdentifier","src":"13302:6:55"},{"name":"pos","nativeSrc":"13310:3:55","nodeType":"YulIdentifier","src":"13310:3:55"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nativeSrc":"13268:33:55","nodeType":"YulIdentifier","src":"13268:33:55"},"nativeSrc":"13268:46:55","nodeType":"YulFunctionCall","src":"13268:46:55"},"nativeSrc":"13268:46:55","nodeType":"YulExpressionStatement","src":"13268:46:55"},{"nativeSrc":"13323:28:55","nodeType":"YulAssignment","src":"13323:28:55","value":{"arguments":[{"name":"pos","nativeSrc":"13341:3:55","nodeType":"YulIdentifier","src":"13341:3:55"},{"kind":"number","nativeSrc":"13346:4:55","nodeType":"YulLiteral","src":"13346:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"13337:3:55","nodeType":"YulIdentifier","src":"13337:3:55"},"nativeSrc":"13337:14:55","nodeType":"YulFunctionCall","src":"13337:14:55"},"variableNames":[{"name":"updatedPos","nativeSrc":"13323:10:55","nodeType":"YulIdentifier","src":"13323:10:55"}]}]},"name":"abi_encodeUpdatedPos_t_uint256_to_t_uint256","nativeSrc":"13178:179:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nativeSrc":"13231:6:55","nodeType":"YulTypedName","src":"13231:6:55","type":""},{"name":"pos","nativeSrc":"13239:3:55","nodeType":"YulTypedName","src":"13239:3:55","type":""}],"returnVariables":[{"name":"updatedPos","nativeSrc":"13247:10:55","nodeType":"YulTypedName","src":"13247:10:55","type":""}],"src":"13178:179:55"},{"body":{"nativeSrc":"13438:38:55","nodeType":"YulBlock","src":"13438:38:55","statements":[{"nativeSrc":"13448:22:55","nodeType":"YulAssignment","src":"13448:22:55","value":{"arguments":[{"name":"ptr","nativeSrc":"13460:3:55","nodeType":"YulIdentifier","src":"13460:3:55"},{"kind":"number","nativeSrc":"13465:4:55","nodeType":"YulLiteral","src":"13465:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"13456:3:55","nodeType":"YulIdentifier","src":"13456:3:55"},"nativeSrc":"13456:14:55","nodeType":"YulFunctionCall","src":"13456:14:55"},"variableNames":[{"name":"next","nativeSrc":"13448:4:55","nodeType":"YulIdentifier","src":"13448:4:55"}]}]},"name":"array_nextElement_t_array$_t_uint256_$dyn_memory_ptr","nativeSrc":"13363:113:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"13425:3:55","nodeType":"YulTypedName","src":"13425:3:55","type":""}],"returnVariables":[{"name":"next","nativeSrc":"13433:4:55","nodeType":"YulTypedName","src":"13433:4:55","type":""}],"src":"13363:113:55"},{"body":{"nativeSrc":"13636:608:55","nodeType":"YulBlock","src":"13636:608:55","statements":[{"nativeSrc":"13646:68:55","nodeType":"YulVariableDeclaration","src":"13646:68:55","value":{"arguments":[{"name":"value","nativeSrc":"13708:5:55","nodeType":"YulIdentifier","src":"13708:5:55"}],"functionName":{"name":"array_length_t_array$_t_uint256_$dyn_memory_ptr","nativeSrc":"13660:47:55","nodeType":"YulIdentifier","src":"13660:47:55"},"nativeSrc":"13660:54:55","nodeType":"YulFunctionCall","src":"13660:54:55"},"variables":[{"name":"length","nativeSrc":"13650:6:55","nodeType":"YulTypedName","src":"13650:6:55","type":""}]},{"nativeSrc":"13723:93:55","nodeType":"YulAssignment","src":"13723:93:55","value":{"arguments":[{"name":"pos","nativeSrc":"13804:3:55","nodeType":"YulIdentifier","src":"13804:3:55"},{"name":"length","nativeSrc":"13809:6:55","nodeType":"YulIdentifier","src":"13809:6:55"}],"functionName":{"name":"array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack","nativeSrc":"13730:73:55","nodeType":"YulIdentifier","src":"13730:73:55"},"nativeSrc":"13730:86:55","nodeType":"YulFunctionCall","src":"13730:86:55"},"variableNames":[{"name":"pos","nativeSrc":"13723:3:55","nodeType":"YulIdentifier","src":"13723:3:55"}]},{"nativeSrc":"13825:71:55","nodeType":"YulVariableDeclaration","src":"13825:71:55","value":{"arguments":[{"name":"value","nativeSrc":"13890:5:55","nodeType":"YulIdentifier","src":"13890:5:55"}],"functionName":{"name":"array_dataslot_t_array$_t_uint256_$dyn_memory_ptr","nativeSrc":"13840:49:55","nodeType":"YulIdentifier","src":"13840:49:55"},"nativeSrc":"13840:56:55","nodeType":"YulFunctionCall","src":"13840:56:55"},"variables":[{"name":"baseRef","nativeSrc":"13829:7:55","nodeType":"YulTypedName","src":"13829:7:55","type":""}]},{"nativeSrc":"13905:21:55","nodeType":"YulVariableDeclaration","src":"13905:21:55","value":{"name":"baseRef","nativeSrc":"13919:7:55","nodeType":"YulIdentifier","src":"13919:7:55"},"variables":[{"name":"srcPtr","nativeSrc":"13909:6:55","nodeType":"YulTypedName","src":"13909:6:55","type":""}]},{"body":{"nativeSrc":"13995:224:55","nodeType":"YulBlock","src":"13995:224:55","statements":[{"nativeSrc":"14009:34:55","nodeType":"YulVariableDeclaration","src":"14009:34:55","value":{"arguments":[{"name":"srcPtr","nativeSrc":"14036:6:55","nodeType":"YulIdentifier","src":"14036:6:55"}],"functionName":{"name":"mload","nativeSrc":"14030:5:55","nodeType":"YulIdentifier","src":"14030:5:55"},"nativeSrc":"14030:13:55","nodeType":"YulFunctionCall","src":"14030:13:55"},"variables":[{"name":"elementValue0","nativeSrc":"14013:13:55","nodeType":"YulTypedName","src":"14013:13:55","type":""}]},{"nativeSrc":"14056:70:55","nodeType":"YulAssignment","src":"14056:70:55","value":{"arguments":[{"name":"elementValue0","nativeSrc":"14107:13:55","nodeType":"YulIdentifier","src":"14107:13:55"},{"name":"pos","nativeSrc":"14122:3:55","nodeType":"YulIdentifier","src":"14122:3:55"}],"functionName":{"name":"abi_encodeUpdatedPos_t_uint256_to_t_uint256","nativeSrc":"14063:43:55","nodeType":"YulIdentifier","src":"14063:43:55"},"nativeSrc":"14063:63:55","nodeType":"YulFunctionCall","src":"14063:63:55"},"variableNames":[{"name":"pos","nativeSrc":"14056:3:55","nodeType":"YulIdentifier","src":"14056:3:55"}]},{"nativeSrc":"14139:70:55","nodeType":"YulAssignment","src":"14139:70:55","value":{"arguments":[{"name":"srcPtr","nativeSrc":"14202:6:55","nodeType":"YulIdentifier","src":"14202:6:55"}],"functionName":{"name":"array_nextElement_t_array$_t_uint256_$dyn_memory_ptr","nativeSrc":"14149:52:55","nodeType":"YulIdentifier","src":"14149:52:55"},"nativeSrc":"14149:60:55","nodeType":"YulFunctionCall","src":"14149:60:55"},"variableNames":[{"name":"srcPtr","nativeSrc":"14139:6:55","nodeType":"YulIdentifier","src":"14139:6:55"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"13957:1:55","nodeType":"YulIdentifier","src":"13957:1:55"},{"name":"length","nativeSrc":"13960:6:55","nodeType":"YulIdentifier","src":"13960:6:55"}],"functionName":{"name":"lt","nativeSrc":"13954:2:55","nodeType":"YulIdentifier","src":"13954:2:55"},"nativeSrc":"13954:13:55","nodeType":"YulFunctionCall","src":"13954:13:55"},"nativeSrc":"13935:284:55","nodeType":"YulForLoop","post":{"nativeSrc":"13968:18:55","nodeType":"YulBlock","src":"13968:18:55","statements":[{"nativeSrc":"13970:14:55","nodeType":"YulAssignment","src":"13970:14:55","value":{"arguments":[{"name":"i","nativeSrc":"13979:1:55","nodeType":"YulIdentifier","src":"13979:1:55"},{"kind":"number","nativeSrc":"13982:1:55","nodeType":"YulLiteral","src":"13982:1:55","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"13975:3:55","nodeType":"YulIdentifier","src":"13975:3:55"},"nativeSrc":"13975:9:55","nodeType":"YulFunctionCall","src":"13975:9:55"},"variableNames":[{"name":"i","nativeSrc":"13970:1:55","nodeType":"YulIdentifier","src":"13970:1:55"}]}]},"pre":{"nativeSrc":"13939:14:55","nodeType":"YulBlock","src":"13939:14:55","statements":[{"nativeSrc":"13941:10:55","nodeType":"YulVariableDeclaration","src":"13941:10:55","value":{"kind":"number","nativeSrc":"13950:1:55","nodeType":"YulLiteral","src":"13950:1:55","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"13945:1:55","nodeType":"YulTypedName","src":"13945:1:55","type":""}]}]},"src":"13935:284:55"},{"nativeSrc":"14228:10:55","nodeType":"YulAssignment","src":"14228:10:55","value":{"name":"pos","nativeSrc":"14235:3:55","nodeType":"YulIdentifier","src":"14235:3:55"},"variableNames":[{"name":"end","nativeSrc":"14228:3:55","nodeType":"YulIdentifier","src":"14228:3:55"}]}]},"name":"abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack","nativeSrc":"13512:732:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"13615:5:55","nodeType":"YulTypedName","src":"13615:5:55","type":""},{"name":"pos","nativeSrc":"13622:3:55","nodeType":"YulTypedName","src":"13622:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"13631:3:55","nodeType":"YulTypedName","src":"13631:3:55","type":""}],"src":"13512:732:55"},{"body":{"nativeSrc":"14420:301:55","nodeType":"YulBlock","src":"14420:301:55","statements":[{"nativeSrc":"14430:26:55","nodeType":"YulAssignment","src":"14430:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"14442:9:55","nodeType":"YulIdentifier","src":"14442:9:55"},{"kind":"number","nativeSrc":"14453:2:55","nodeType":"YulLiteral","src":"14453:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"14438:3:55","nodeType":"YulIdentifier","src":"14438:3:55"},"nativeSrc":"14438:18:55","nodeType":"YulFunctionCall","src":"14438:18:55"},"variableNames":[{"name":"tail","nativeSrc":"14430:4:55","nodeType":"YulIdentifier","src":"14430:4:55"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"14504:6:55","nodeType":"YulIdentifier","src":"14504:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"14517:9:55","nodeType":"YulIdentifier","src":"14517:9:55"},{"kind":"number","nativeSrc":"14528:1:55","nodeType":"YulLiteral","src":"14528:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"14513:3:55","nodeType":"YulIdentifier","src":"14513:3:55"},"nativeSrc":"14513:17:55","nodeType":"YulFunctionCall","src":"14513:17:55"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nativeSrc":"14466:37:55","nodeType":"YulIdentifier","src":"14466:37:55"},"nativeSrc":"14466:65:55","nodeType":"YulFunctionCall","src":"14466:65:55"},"nativeSrc":"14466:65:55","nodeType":"YulExpressionStatement","src":"14466:65:55"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14552:9:55","nodeType":"YulIdentifier","src":"14552:9:55"},{"kind":"number","nativeSrc":"14563:2:55","nodeType":"YulLiteral","src":"14563:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"14548:3:55","nodeType":"YulIdentifier","src":"14548:3:55"},"nativeSrc":"14548:18:55","nodeType":"YulFunctionCall","src":"14548:18:55"},{"arguments":[{"name":"tail","nativeSrc":"14572:4:55","nodeType":"YulIdentifier","src":"14572:4:55"},{"name":"headStart","nativeSrc":"14578:9:55","nodeType":"YulIdentifier","src":"14578:9:55"}],"functionName":{"name":"sub","nativeSrc":"14568:3:55","nodeType":"YulIdentifier","src":"14568:3:55"},"nativeSrc":"14568:20:55","nodeType":"YulFunctionCall","src":"14568:20:55"}],"functionName":{"name":"mstore","nativeSrc":"14541:6:55","nodeType":"YulIdentifier","src":"14541:6:55"},"nativeSrc":"14541:48:55","nodeType":"YulFunctionCall","src":"14541:48:55"},"nativeSrc":"14541:48:55","nodeType":"YulExpressionStatement","src":"14541:48:55"},{"nativeSrc":"14598:116:55","nodeType":"YulAssignment","src":"14598:116:55","value":{"arguments":[{"name":"value1","nativeSrc":"14700:6:55","nodeType":"YulIdentifier","src":"14700:6:55"},{"name":"tail","nativeSrc":"14709:4:55","nodeType":"YulIdentifier","src":"14709:4:55"}],"functionName":{"name":"abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack","nativeSrc":"14606:93:55","nodeType":"YulIdentifier","src":"14606:93:55"},"nativeSrc":"14606:108:55","nodeType":"YulFunctionCall","src":"14606:108:55"},"variableNames":[{"name":"tail","nativeSrc":"14598:4:55","nodeType":"YulIdentifier","src":"14598:4:55"}]}]},"name":"abi_encode_tuple_t_bool_t_array$_t_uint256_$dyn_memory_ptr__to_t_bool_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed","nativeSrc":"14250:471:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"14384:9:55","nodeType":"YulTypedName","src":"14384:9:55","type":""},{"name":"value1","nativeSrc":"14396:6:55","nodeType":"YulTypedName","src":"14396:6:55","type":""},{"name":"value0","nativeSrc":"14404:6:55","nodeType":"YulTypedName","src":"14404:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"14415:4:55","nodeType":"YulTypedName","src":"14415:4:55","type":""}],"src":"14250:471:55"},{"body":{"nativeSrc":"14755:152:55","nodeType":"YulBlock","src":"14755:152:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14772:1:55","nodeType":"YulLiteral","src":"14772:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"14775:77:55","nodeType":"YulLiteral","src":"14775:77:55","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"14765:6:55","nodeType":"YulIdentifier","src":"14765:6:55"},"nativeSrc":"14765:88:55","nodeType":"YulFunctionCall","src":"14765:88:55"},"nativeSrc":"14765:88:55","nodeType":"YulExpressionStatement","src":"14765:88:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14869:1:55","nodeType":"YulLiteral","src":"14869:1:55","type":"","value":"4"},{"kind":"number","nativeSrc":"14872:4:55","nodeType":"YulLiteral","src":"14872:4:55","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"14862:6:55","nodeType":"YulIdentifier","src":"14862:6:55"},"nativeSrc":"14862:15:55","nodeType":"YulFunctionCall","src":"14862:15:55"},"nativeSrc":"14862:15:55","nodeType":"YulExpressionStatement","src":"14862:15:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14893:1:55","nodeType":"YulLiteral","src":"14893:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"14896:4:55","nodeType":"YulLiteral","src":"14896:4:55","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"14886:6:55","nodeType":"YulIdentifier","src":"14886:6:55"},"nativeSrc":"14886:15:55","nodeType":"YulFunctionCall","src":"14886:15:55"},"nativeSrc":"14886:15:55","nodeType":"YulExpressionStatement","src":"14886:15:55"}]},"name":"panic_error_0x21","nativeSrc":"14727:180:55","nodeType":"YulFunctionDefinition","src":"14727:180:55"},{"body":{"nativeSrc":"14941:152:55","nodeType":"YulBlock","src":"14941:152:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14958:1:55","nodeType":"YulLiteral","src":"14958:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"14961:77:55","nodeType":"YulLiteral","src":"14961:77:55","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"14951:6:55","nodeType":"YulIdentifier","src":"14951:6:55"},"nativeSrc":"14951:88:55","nodeType":"YulFunctionCall","src":"14951:88:55"},"nativeSrc":"14951:88:55","nodeType":"YulExpressionStatement","src":"14951:88:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15055:1:55","nodeType":"YulLiteral","src":"15055:1:55","type":"","value":"4"},{"kind":"number","nativeSrc":"15058:4:55","nodeType":"YulLiteral","src":"15058:4:55","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"15048:6:55","nodeType":"YulIdentifier","src":"15048:6:55"},"nativeSrc":"15048:15:55","nodeType":"YulFunctionCall","src":"15048:15:55"},"nativeSrc":"15048:15:55","nodeType":"YulExpressionStatement","src":"15048:15:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15079:1:55","nodeType":"YulLiteral","src":"15079:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"15082:4:55","nodeType":"YulLiteral","src":"15082:4:55","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"15072:6:55","nodeType":"YulIdentifier","src":"15072:6:55"},"nativeSrc":"15072:15:55","nodeType":"YulFunctionCall","src":"15072:15:55"},"nativeSrc":"15072:15:55","nodeType":"YulExpressionStatement","src":"15072:15:55"}]},"name":"panic_error_0x41","nativeSrc":"14913:180:55","nodeType":"YulFunctionDefinition","src":"14913:180:55"},{"body":{"nativeSrc":"15127:152:55","nodeType":"YulBlock","src":"15127:152:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15144:1:55","nodeType":"YulLiteral","src":"15144:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"15147:77:55","nodeType":"YulLiteral","src":"15147:77:55","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"15137:6:55","nodeType":"YulIdentifier","src":"15137:6:55"},"nativeSrc":"15137:88:55","nodeType":"YulFunctionCall","src":"15137:88:55"},"nativeSrc":"15137:88:55","nodeType":"YulExpressionStatement","src":"15137:88:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15241:1:55","nodeType":"YulLiteral","src":"15241:1:55","type":"","value":"4"},{"kind":"number","nativeSrc":"15244:4:55","nodeType":"YulLiteral","src":"15244:4:55","type":"","value":"0x32"}],"functionName":{"name":"mstore","nativeSrc":"15234:6:55","nodeType":"YulIdentifier","src":"15234:6:55"},"nativeSrc":"15234:15:55","nodeType":"YulFunctionCall","src":"15234:15:55"},"nativeSrc":"15234:15:55","nodeType":"YulExpressionStatement","src":"15234:15:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15265:1:55","nodeType":"YulLiteral","src":"15265:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"15268:4:55","nodeType":"YulLiteral","src":"15268:4:55","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"15258:6:55","nodeType":"YulIdentifier","src":"15258:6:55"},"nativeSrc":"15258:15:55","nodeType":"YulFunctionCall","src":"15258:15:55"},"nativeSrc":"15258:15:55","nodeType":"YulExpressionStatement","src":"15258:15:55"}]},"name":"panic_error_0x32","nativeSrc":"15099:180:55","nodeType":"YulFunctionDefinition","src":"15099:180:55"},{"body":{"nativeSrc":"15338:51:55","nodeType":"YulBlock","src":"15338:51:55","statements":[{"nativeSrc":"15348:35:55","nodeType":"YulAssignment","src":"15348:35:55","value":{"arguments":[{"name":"value","nativeSrc":"15377:5:55","nodeType":"YulIdentifier","src":"15377:5:55"}],"functionName":{"name":"cleanup_t_uint160","nativeSrc":"15359:17:55","nodeType":"YulIdentifier","src":"15359:17:55"},"nativeSrc":"15359:24:55","nodeType":"YulFunctionCall","src":"15359:24:55"},"variableNames":[{"name":"cleaned","nativeSrc":"15348:7:55","nodeType":"YulIdentifier","src":"15348:7:55"}]}]},"name":"cleanup_t_address_payable","nativeSrc":"15285:104:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"15320:5:55","nodeType":"YulTypedName","src":"15320:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"15330:7:55","nodeType":"YulTypedName","src":"15330:7:55","type":""}],"src":"15285:104:55"},{"body":{"nativeSrc":"15476:61:55","nodeType":"YulBlock","src":"15476:61:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"15493:3:55","nodeType":"YulIdentifier","src":"15493:3:55"},{"arguments":[{"name":"value","nativeSrc":"15524:5:55","nodeType":"YulIdentifier","src":"15524:5:55"}],"functionName":{"name":"cleanup_t_address_payable","nativeSrc":"15498:25:55","nodeType":"YulIdentifier","src":"15498:25:55"},"nativeSrc":"15498:32:55","nodeType":"YulFunctionCall","src":"15498:32:55"}],"functionName":{"name":"mstore","nativeSrc":"15486:6:55","nodeType":"YulIdentifier","src":"15486:6:55"},"nativeSrc":"15486:45:55","nodeType":"YulFunctionCall","src":"15486:45:55"},"nativeSrc":"15486:45:55","nodeType":"YulExpressionStatement","src":"15486:45:55"}]},"name":"abi_encode_t_address_payable_to_t_address_payable_fromStack","nativeSrc":"15395:142:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"15464:5:55","nodeType":"YulTypedName","src":"15464:5:55","type":""},{"name":"pos","nativeSrc":"15471:3:55","nodeType":"YulTypedName","src":"15471:3:55","type":""}],"src":"15395:142:55"},{"body":{"nativeSrc":"15633:40:55","nodeType":"YulBlock","src":"15633:40:55","statements":[{"nativeSrc":"15644:22:55","nodeType":"YulAssignment","src":"15644:22:55","value":{"arguments":[{"name":"value","nativeSrc":"15660:5:55","nodeType":"YulIdentifier","src":"15660:5:55"}],"functionName":{"name":"mload","nativeSrc":"15654:5:55","nodeType":"YulIdentifier","src":"15654:5:55"},"nativeSrc":"15654:12:55","nodeType":"YulFunctionCall","src":"15654:12:55"},"variableNames":[{"name":"length","nativeSrc":"15644:6:55","nodeType":"YulIdentifier","src":"15644:6:55"}]}]},"name":"array_length_t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr","nativeSrc":"15543:130:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"15616:5:55","nodeType":"YulTypedName","src":"15616:5:55","type":""}],"returnVariables":[{"name":"length","nativeSrc":"15626:6:55","nodeType":"YulTypedName","src":"15626:6:55","type":""}],"src":"15543:130:55"},{"body":{"nativeSrc":"15790:73:55","nodeType":"YulBlock","src":"15790:73:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"15807:3:55","nodeType":"YulIdentifier","src":"15807:3:55"},{"name":"length","nativeSrc":"15812:6:55","nodeType":"YulIdentifier","src":"15812:6:55"}],"functionName":{"name":"mstore","nativeSrc":"15800:6:55","nodeType":"YulIdentifier","src":"15800:6:55"},"nativeSrc":"15800:19:55","nodeType":"YulFunctionCall","src":"15800:19:55"},"nativeSrc":"15800:19:55","nodeType":"YulExpressionStatement","src":"15800:19:55"},{"nativeSrc":"15828:29:55","nodeType":"YulAssignment","src":"15828:29:55","value":{"arguments":[{"name":"pos","nativeSrc":"15847:3:55","nodeType":"YulIdentifier","src":"15847:3:55"},{"kind":"number","nativeSrc":"15852:4:55","nodeType":"YulLiteral","src":"15852:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"15843:3:55","nodeType":"YulIdentifier","src":"15843:3:55"},"nativeSrc":"15843:14:55","nodeType":"YulFunctionCall","src":"15843:14:55"},"variableNames":[{"name":"updated_pos","nativeSrc":"15828:11:55","nodeType":"YulIdentifier","src":"15828:11:55"}]}]},"name":"array_storeLengthForEncoding_t_array$_t_address_$dyn_memory_ptr_fromStack","nativeSrc":"15679:184:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"15762:3:55","nodeType":"YulTypedName","src":"15762:3:55","type":""},{"name":"length","nativeSrc":"15767:6:55","nodeType":"YulTypedName","src":"15767:6:55","type":""}],"returnVariables":[{"name":"updated_pos","nativeSrc":"15778:11:55","nodeType":"YulTypedName","src":"15778:11:55","type":""}],"src":"15679:184:55"},{"body":{"nativeSrc":"15957:60:55","nodeType":"YulBlock","src":"15957:60:55","statements":[{"nativeSrc":"15967:11:55","nodeType":"YulAssignment","src":"15967:11:55","value":{"name":"ptr","nativeSrc":"15975:3:55","nodeType":"YulIdentifier","src":"15975:3:55"},"variableNames":[{"name":"data","nativeSrc":"15967:4:55","nodeType":"YulIdentifier","src":"15967:4:55"}]},{"nativeSrc":"15988:22:55","nodeType":"YulAssignment","src":"15988:22:55","value":{"arguments":[{"name":"ptr","nativeSrc":"16000:3:55","nodeType":"YulIdentifier","src":"16000:3:55"},{"kind":"number","nativeSrc":"16005:4:55","nodeType":"YulLiteral","src":"16005:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"15996:3:55","nodeType":"YulIdentifier","src":"15996:3:55"},"nativeSrc":"15996:14:55","nodeType":"YulFunctionCall","src":"15996:14:55"},"variableNames":[{"name":"data","nativeSrc":"15988:4:55","nodeType":"YulIdentifier","src":"15988:4:55"}]}]},"name":"array_dataslot_t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr","nativeSrc":"15869:148:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"15944:3:55","nodeType":"YulTypedName","src":"15944:3:55","type":""}],"returnVariables":[{"name":"data","nativeSrc":"15952:4:55","nodeType":"YulTypedName","src":"15952:4:55","type":""}],"src":"15869:148:55"},{"body":{"nativeSrc":"16094:82:55","nodeType":"YulBlock","src":"16094:82:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"16111:3:55","nodeType":"YulIdentifier","src":"16111:3:55"},{"arguments":[{"name":"value","nativeSrc":"16163:5:55","nodeType":"YulIdentifier","src":"16163:5:55"}],"functionName":{"name":"convert_t_contract$_IVToken_$5277_to_t_address","nativeSrc":"16116:46:55","nodeType":"YulIdentifier","src":"16116:46:55"},"nativeSrc":"16116:53:55","nodeType":"YulFunctionCall","src":"16116:53:55"}],"functionName":{"name":"mstore","nativeSrc":"16104:6:55","nodeType":"YulIdentifier","src":"16104:6:55"},"nativeSrc":"16104:66:55","nodeType":"YulFunctionCall","src":"16104:66:55"},"nativeSrc":"16104:66:55","nodeType":"YulExpressionStatement","src":"16104:66:55"}]},"name":"abi_encode_t_contract$_IVToken_$5277_to_t_address","nativeSrc":"16023:153:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"16082:5:55","nodeType":"YulTypedName","src":"16082:5:55","type":""},{"name":"pos","nativeSrc":"16089:3:55","nodeType":"YulTypedName","src":"16089:3:55","type":""}],"src":"16023:153:55"},{"body":{"nativeSrc":"16278:115:55","nodeType":"YulBlock","src":"16278:115:55","statements":[{"expression":{"arguments":[{"name":"value0","nativeSrc":"16338:6:55","nodeType":"YulIdentifier","src":"16338:6:55"},{"name":"pos","nativeSrc":"16346:3:55","nodeType":"YulIdentifier","src":"16346:3:55"}],"functionName":{"name":"abi_encode_t_contract$_IVToken_$5277_to_t_address","nativeSrc":"16288:49:55","nodeType":"YulIdentifier","src":"16288:49:55"},"nativeSrc":"16288:62:55","nodeType":"YulFunctionCall","src":"16288:62:55"},"nativeSrc":"16288:62:55","nodeType":"YulExpressionStatement","src":"16288:62:55"},{"nativeSrc":"16359:28:55","nodeType":"YulAssignment","src":"16359:28:55","value":{"arguments":[{"name":"pos","nativeSrc":"16377:3:55","nodeType":"YulIdentifier","src":"16377:3:55"},{"kind":"number","nativeSrc":"16382:4:55","nodeType":"YulLiteral","src":"16382:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"16373:3:55","nodeType":"YulIdentifier","src":"16373:3:55"},"nativeSrc":"16373:14:55","nodeType":"YulFunctionCall","src":"16373:14:55"},"variableNames":[{"name":"updatedPos","nativeSrc":"16359:10:55","nodeType":"YulIdentifier","src":"16359:10:55"}]}]},"name":"abi_encodeUpdatedPos_t_contract$_IVToken_$5277_to_t_address","nativeSrc":"16182:211:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nativeSrc":"16251:6:55","nodeType":"YulTypedName","src":"16251:6:55","type":""},{"name":"pos","nativeSrc":"16259:3:55","nodeType":"YulTypedName","src":"16259:3:55","type":""}],"returnVariables":[{"name":"updatedPos","nativeSrc":"16267:10:55","nodeType":"YulTypedName","src":"16267:10:55","type":""}],"src":"16182:211:55"},{"body":{"nativeSrc":"16490:38:55","nodeType":"YulBlock","src":"16490:38:55","statements":[{"nativeSrc":"16500:22:55","nodeType":"YulAssignment","src":"16500:22:55","value":{"arguments":[{"name":"ptr","nativeSrc":"16512:3:55","nodeType":"YulIdentifier","src":"16512:3:55"},{"kind":"number","nativeSrc":"16517:4:55","nodeType":"YulLiteral","src":"16517:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"16508:3:55","nodeType":"YulIdentifier","src":"16508:3:55"},"nativeSrc":"16508:14:55","nodeType":"YulFunctionCall","src":"16508:14:55"},"variableNames":[{"name":"next","nativeSrc":"16500:4:55","nodeType":"YulIdentifier","src":"16500:4:55"}]}]},"name":"array_nextElement_t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr","nativeSrc":"16399:129:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"16477:3:55","nodeType":"YulTypedName","src":"16477:3:55","type":""}],"returnVariables":[{"name":"next","nativeSrc":"16485:4:55","nodeType":"YulTypedName","src":"16485:4:55","type":""}],"src":"16399:129:55"},{"body":{"nativeSrc":"16713:672:55","nodeType":"YulBlock","src":"16713:672:55","statements":[{"nativeSrc":"16723:84:55","nodeType":"YulVariableDeclaration","src":"16723:84:55","value":{"arguments":[{"name":"value","nativeSrc":"16801:5:55","nodeType":"YulIdentifier","src":"16801:5:55"}],"functionName":{"name":"array_length_t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr","nativeSrc":"16737:63:55","nodeType":"YulIdentifier","src":"16737:63:55"},"nativeSrc":"16737:70:55","nodeType":"YulFunctionCall","src":"16737:70:55"},"variables":[{"name":"length","nativeSrc":"16727:6:55","nodeType":"YulTypedName","src":"16727:6:55","type":""}]},{"nativeSrc":"16816:93:55","nodeType":"YulAssignment","src":"16816:93:55","value":{"arguments":[{"name":"pos","nativeSrc":"16897:3:55","nodeType":"YulIdentifier","src":"16897:3:55"},{"name":"length","nativeSrc":"16902:6:55","nodeType":"YulIdentifier","src":"16902:6:55"}],"functionName":{"name":"array_storeLengthForEncoding_t_array$_t_address_$dyn_memory_ptr_fromStack","nativeSrc":"16823:73:55","nodeType":"YulIdentifier","src":"16823:73:55"},"nativeSrc":"16823:86:55","nodeType":"YulFunctionCall","src":"16823:86:55"},"variableNames":[{"name":"pos","nativeSrc":"16816:3:55","nodeType":"YulIdentifier","src":"16816:3:55"}]},{"nativeSrc":"16918:87:55","nodeType":"YulVariableDeclaration","src":"16918:87:55","value":{"arguments":[{"name":"value","nativeSrc":"16999:5:55","nodeType":"YulIdentifier","src":"16999:5:55"}],"functionName":{"name":"array_dataslot_t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr","nativeSrc":"16933:65:55","nodeType":"YulIdentifier","src":"16933:65:55"},"nativeSrc":"16933:72:55","nodeType":"YulFunctionCall","src":"16933:72:55"},"variables":[{"name":"baseRef","nativeSrc":"16922:7:55","nodeType":"YulTypedName","src":"16922:7:55","type":""}]},{"nativeSrc":"17014:21:55","nodeType":"YulVariableDeclaration","src":"17014:21:55","value":{"name":"baseRef","nativeSrc":"17028:7:55","nodeType":"YulIdentifier","src":"17028:7:55"},"variables":[{"name":"srcPtr","nativeSrc":"17018:6:55","nodeType":"YulTypedName","src":"17018:6:55","type":""}]},{"body":{"nativeSrc":"17104:256:55","nodeType":"YulBlock","src":"17104:256:55","statements":[{"nativeSrc":"17118:34:55","nodeType":"YulVariableDeclaration","src":"17118:34:55","value":{"arguments":[{"name":"srcPtr","nativeSrc":"17145:6:55","nodeType":"YulIdentifier","src":"17145:6:55"}],"functionName":{"name":"mload","nativeSrc":"17139:5:55","nodeType":"YulIdentifier","src":"17139:5:55"},"nativeSrc":"17139:13:55","nodeType":"YulFunctionCall","src":"17139:13:55"},"variables":[{"name":"elementValue0","nativeSrc":"17122:13:55","nodeType":"YulTypedName","src":"17122:13:55","type":""}]},{"nativeSrc":"17165:86:55","nodeType":"YulAssignment","src":"17165:86:55","value":{"arguments":[{"name":"elementValue0","nativeSrc":"17232:13:55","nodeType":"YulIdentifier","src":"17232:13:55"},{"name":"pos","nativeSrc":"17247:3:55","nodeType":"YulIdentifier","src":"17247:3:55"}],"functionName":{"name":"abi_encodeUpdatedPos_t_contract$_IVToken_$5277_to_t_address","nativeSrc":"17172:59:55","nodeType":"YulIdentifier","src":"17172:59:55"},"nativeSrc":"17172:79:55","nodeType":"YulFunctionCall","src":"17172:79:55"},"variableNames":[{"name":"pos","nativeSrc":"17165:3:55","nodeType":"YulIdentifier","src":"17165:3:55"}]},{"nativeSrc":"17264:86:55","nodeType":"YulAssignment","src":"17264:86:55","value":{"arguments":[{"name":"srcPtr","nativeSrc":"17343:6:55","nodeType":"YulIdentifier","src":"17343:6:55"}],"functionName":{"name":"array_nextElement_t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr","nativeSrc":"17274:68:55","nodeType":"YulIdentifier","src":"17274:68:55"},"nativeSrc":"17274:76:55","nodeType":"YulFunctionCall","src":"17274:76:55"},"variableNames":[{"name":"srcPtr","nativeSrc":"17264:6:55","nodeType":"YulIdentifier","src":"17264:6:55"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"17066:1:55","nodeType":"YulIdentifier","src":"17066:1:55"},{"name":"length","nativeSrc":"17069:6:55","nodeType":"YulIdentifier","src":"17069:6:55"}],"functionName":{"name":"lt","nativeSrc":"17063:2:55","nodeType":"YulIdentifier","src":"17063:2:55"},"nativeSrc":"17063:13:55","nodeType":"YulFunctionCall","src":"17063:13:55"},"nativeSrc":"17044:316:55","nodeType":"YulForLoop","post":{"nativeSrc":"17077:18:55","nodeType":"YulBlock","src":"17077:18:55","statements":[{"nativeSrc":"17079:14:55","nodeType":"YulAssignment","src":"17079:14:55","value":{"arguments":[{"name":"i","nativeSrc":"17088:1:55","nodeType":"YulIdentifier","src":"17088:1:55"},{"kind":"number","nativeSrc":"17091:1:55","nodeType":"YulLiteral","src":"17091:1:55","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"17084:3:55","nodeType":"YulIdentifier","src":"17084:3:55"},"nativeSrc":"17084:9:55","nodeType":"YulFunctionCall","src":"17084:9:55"},"variableNames":[{"name":"i","nativeSrc":"17079:1:55","nodeType":"YulIdentifier","src":"17079:1:55"}]}]},"pre":{"nativeSrc":"17048:14:55","nodeType":"YulBlock","src":"17048:14:55","statements":[{"nativeSrc":"17050:10:55","nodeType":"YulVariableDeclaration","src":"17050:10:55","value":{"kind":"number","nativeSrc":"17059:1:55","nodeType":"YulLiteral","src":"17059:1:55","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"17054:1:55","nodeType":"YulTypedName","src":"17054:1:55","type":""}]}]},"src":"17044:316:55"},{"nativeSrc":"17369:10:55","nodeType":"YulAssignment","src":"17369:10:55","value":{"name":"pos","nativeSrc":"17376:3:55","nodeType":"YulIdentifier","src":"17376:3:55"},"variableNames":[{"name":"end","nativeSrc":"17369:3:55","nodeType":"YulIdentifier","src":"17369:3:55"}]}]},"name":"abi_encode_t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr_fromStack","nativeSrc":"16573:812:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"16692:5:55","nodeType":"YulTypedName","src":"16692:5:55","type":""},{"name":"pos","nativeSrc":"16699:3:55","nodeType":"YulTypedName","src":"16699:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"16708:3:55","nodeType":"YulTypedName","src":"16708:3:55","type":""}],"src":"16573:812:55"},{"body":{"nativeSrc":"17486:73:55","nodeType":"YulBlock","src":"17486:73:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"17503:3:55","nodeType":"YulIdentifier","src":"17503:3:55"},{"name":"length","nativeSrc":"17508:6:55","nodeType":"YulIdentifier","src":"17508:6:55"}],"functionName":{"name":"mstore","nativeSrc":"17496:6:55","nodeType":"YulIdentifier","src":"17496:6:55"},"nativeSrc":"17496:19:55","nodeType":"YulFunctionCall","src":"17496:19:55"},"nativeSrc":"17496:19:55","nodeType":"YulExpressionStatement","src":"17496:19:55"},{"nativeSrc":"17524:29:55","nodeType":"YulAssignment","src":"17524:29:55","value":{"arguments":[{"name":"pos","nativeSrc":"17543:3:55","nodeType":"YulIdentifier","src":"17543:3:55"},{"kind":"number","nativeSrc":"17548:4:55","nodeType":"YulLiteral","src":"17548:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"17539:3:55","nodeType":"YulIdentifier","src":"17539:3:55"},"nativeSrc":"17539:14:55","nodeType":"YulFunctionCall","src":"17539:14:55"},"variableNames":[{"name":"updated_pos","nativeSrc":"17524:11:55","nodeType":"YulIdentifier","src":"17524:11:55"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nativeSrc":"17391:168:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"17458:3:55","nodeType":"YulTypedName","src":"17458:3:55","type":""},{"name":"length","nativeSrc":"17463:6:55","nodeType":"YulTypedName","src":"17463:6:55","type":""}],"returnVariables":[{"name":"updated_pos","nativeSrc":"17474:11:55","nodeType":"YulTypedName","src":"17474:11:55","type":""}],"src":"17391:168:55"},{"body":{"nativeSrc":"17629:84:55","nodeType":"YulBlock","src":"17629:84:55","statements":[{"expression":{"arguments":[{"name":"dst","nativeSrc":"17653:3:55","nodeType":"YulIdentifier","src":"17653:3:55"},{"name":"src","nativeSrc":"17658:3:55","nodeType":"YulIdentifier","src":"17658:3:55"},{"name":"length","nativeSrc":"17663:6:55","nodeType":"YulIdentifier","src":"17663:6:55"}],"functionName":{"name":"calldatacopy","nativeSrc":"17640:12:55","nodeType":"YulIdentifier","src":"17640:12:55"},"nativeSrc":"17640:30:55","nodeType":"YulFunctionCall","src":"17640:30:55"},"nativeSrc":"17640:30:55","nodeType":"YulExpressionStatement","src":"17640:30:55"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"17690:3:55","nodeType":"YulIdentifier","src":"17690:3:55"},{"name":"length","nativeSrc":"17695:6:55","nodeType":"YulIdentifier","src":"17695:6:55"}],"functionName":{"name":"add","nativeSrc":"17686:3:55","nodeType":"YulIdentifier","src":"17686:3:55"},"nativeSrc":"17686:16:55","nodeType":"YulFunctionCall","src":"17686:16:55"},{"kind":"number","nativeSrc":"17704:1:55","nodeType":"YulLiteral","src":"17704:1:55","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"17679:6:55","nodeType":"YulIdentifier","src":"17679:6:55"},"nativeSrc":"17679:27:55","nodeType":"YulFunctionCall","src":"17679:27:55"},"nativeSrc":"17679:27:55","nodeType":"YulExpressionStatement","src":"17679:27:55"}]},"name":"copy_calldata_to_memory_with_cleanup","nativeSrc":"17565:148:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nativeSrc":"17611:3:55","nodeType":"YulTypedName","src":"17611:3:55","type":""},{"name":"dst","nativeSrc":"17616:3:55","nodeType":"YulTypedName","src":"17616:3:55","type":""},{"name":"length","nativeSrc":"17621:6:55","nodeType":"YulTypedName","src":"17621:6:55","type":""}],"src":"17565:148:55"},{"body":{"nativeSrc":"17767:54:55","nodeType":"YulBlock","src":"17767:54:55","statements":[{"nativeSrc":"17777:38:55","nodeType":"YulAssignment","src":"17777:38:55","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"17795:5:55","nodeType":"YulIdentifier","src":"17795:5:55"},{"kind":"number","nativeSrc":"17802:2:55","nodeType":"YulLiteral","src":"17802:2:55","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"17791:3:55","nodeType":"YulIdentifier","src":"17791:3:55"},"nativeSrc":"17791:14:55","nodeType":"YulFunctionCall","src":"17791:14:55"},{"arguments":[{"kind":"number","nativeSrc":"17811:2:55","nodeType":"YulLiteral","src":"17811:2:55","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"17807:3:55","nodeType":"YulIdentifier","src":"17807:3:55"},"nativeSrc":"17807:7:55","nodeType":"YulFunctionCall","src":"17807:7:55"}],"functionName":{"name":"and","nativeSrc":"17787:3:55","nodeType":"YulIdentifier","src":"17787:3:55"},"nativeSrc":"17787:28:55","nodeType":"YulFunctionCall","src":"17787:28:55"},"variableNames":[{"name":"result","nativeSrc":"17777:6:55","nodeType":"YulIdentifier","src":"17777:6:55"}]}]},"name":"round_up_to_mul_of_32","nativeSrc":"17719:102:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"17750:5:55","nodeType":"YulTypedName","src":"17750:5:55","type":""}],"returnVariables":[{"name":"result","nativeSrc":"17760:6:55","nodeType":"YulTypedName","src":"17760:6:55","type":""}],"src":"17719:102:55"},{"body":{"nativeSrc":"17949:214:55","nodeType":"YulBlock","src":"17949:214:55","statements":[{"nativeSrc":"17959:77:55","nodeType":"YulAssignment","src":"17959:77:55","value":{"arguments":[{"name":"pos","nativeSrc":"18024:3:55","nodeType":"YulIdentifier","src":"18024:3:55"},{"name":"length","nativeSrc":"18029:6:55","nodeType":"YulIdentifier","src":"18029:6:55"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nativeSrc":"17966:57:55","nodeType":"YulIdentifier","src":"17966:57:55"},"nativeSrc":"17966:70:55","nodeType":"YulFunctionCall","src":"17966:70:55"},"variableNames":[{"name":"pos","nativeSrc":"17959:3:55","nodeType":"YulIdentifier","src":"17959:3:55"}]},{"expression":{"arguments":[{"name":"start","nativeSrc":"18083:5:55","nodeType":"YulIdentifier","src":"18083:5:55"},{"name":"pos","nativeSrc":"18090:3:55","nodeType":"YulIdentifier","src":"18090:3:55"},{"name":"length","nativeSrc":"18095:6:55","nodeType":"YulIdentifier","src":"18095:6:55"}],"functionName":{"name":"copy_calldata_to_memory_with_cleanup","nativeSrc":"18046:36:55","nodeType":"YulIdentifier","src":"18046:36:55"},"nativeSrc":"18046:56:55","nodeType":"YulFunctionCall","src":"18046:56:55"},"nativeSrc":"18046:56:55","nodeType":"YulExpressionStatement","src":"18046:56:55"},{"nativeSrc":"18111:46:55","nodeType":"YulAssignment","src":"18111:46:55","value":{"arguments":[{"name":"pos","nativeSrc":"18122:3:55","nodeType":"YulIdentifier","src":"18122:3:55"},{"arguments":[{"name":"length","nativeSrc":"18149:6:55","nodeType":"YulIdentifier","src":"18149:6:55"}],"functionName":{"name":"round_up_to_mul_of_32","nativeSrc":"18127:21:55","nodeType":"YulIdentifier","src":"18127:21:55"},"nativeSrc":"18127:29:55","nodeType":"YulFunctionCall","src":"18127:29:55"}],"functionName":{"name":"add","nativeSrc":"18118:3:55","nodeType":"YulIdentifier","src":"18118:3:55"},"nativeSrc":"18118:39:55","nodeType":"YulFunctionCall","src":"18118:39:55"},"variableNames":[{"name":"end","nativeSrc":"18111:3:55","nodeType":"YulIdentifier","src":"18111:3:55"}]}]},"name":"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack","nativeSrc":"17849:314:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nativeSrc":"17922:5:55","nodeType":"YulTypedName","src":"17922:5:55","type":""},{"name":"length","nativeSrc":"17929:6:55","nodeType":"YulTypedName","src":"17929:6:55","type":""},{"name":"pos","nativeSrc":"17937:3:55","nodeType":"YulTypedName","src":"17937:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"17945:3:55","nodeType":"YulTypedName","src":"17945:3:55","type":""}],"src":"17849:314:55"},{"body":{"nativeSrc":"18555:783:55","nodeType":"YulBlock","src":"18555:783:55","statements":[{"nativeSrc":"18565:27:55","nodeType":"YulAssignment","src":"18565:27:55","value":{"arguments":[{"name":"headStart","nativeSrc":"18577:9:55","nodeType":"YulIdentifier","src":"18577:9:55"},{"kind":"number","nativeSrc":"18588:3:55","nodeType":"YulLiteral","src":"18588:3:55","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"18573:3:55","nodeType":"YulIdentifier","src":"18573:3:55"},"nativeSrc":"18573:19:55","nodeType":"YulFunctionCall","src":"18573:19:55"},"variableNames":[{"name":"tail","nativeSrc":"18565:4:55","nodeType":"YulIdentifier","src":"18565:4:55"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"18662:6:55","nodeType":"YulIdentifier","src":"18662:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"18675:9:55","nodeType":"YulIdentifier","src":"18675:9:55"},{"kind":"number","nativeSrc":"18686:1:55","nodeType":"YulLiteral","src":"18686:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"18671:3:55","nodeType":"YulIdentifier","src":"18671:3:55"},"nativeSrc":"18671:17:55","nodeType":"YulFunctionCall","src":"18671:17:55"}],"functionName":{"name":"abi_encode_t_address_payable_to_t_address_payable_fromStack","nativeSrc":"18602:59:55","nodeType":"YulIdentifier","src":"18602:59:55"},"nativeSrc":"18602:87:55","nodeType":"YulFunctionCall","src":"18602:87:55"},"nativeSrc":"18602:87:55","nodeType":"YulExpressionStatement","src":"18602:87:55"},{"expression":{"arguments":[{"name":"value1","nativeSrc":"18759:6:55","nodeType":"YulIdentifier","src":"18759:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"18772:9:55","nodeType":"YulIdentifier","src":"18772:9:55"},{"kind":"number","nativeSrc":"18783:2:55","nodeType":"YulLiteral","src":"18783:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"18768:3:55","nodeType":"YulIdentifier","src":"18768:3:55"},"nativeSrc":"18768:18:55","nodeType":"YulFunctionCall","src":"18768:18:55"}],"functionName":{"name":"abi_encode_t_address_payable_to_t_address_payable_fromStack","nativeSrc":"18699:59:55","nodeType":"YulIdentifier","src":"18699:59:55"},"nativeSrc":"18699:88:55","nodeType":"YulFunctionCall","src":"18699:88:55"},"nativeSrc":"18699:88:55","nodeType":"YulExpressionStatement","src":"18699:88:55"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"18808:9:55","nodeType":"YulIdentifier","src":"18808:9:55"},{"kind":"number","nativeSrc":"18819:2:55","nodeType":"YulLiteral","src":"18819:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"18804:3:55","nodeType":"YulIdentifier","src":"18804:3:55"},"nativeSrc":"18804:18:55","nodeType":"YulFunctionCall","src":"18804:18:55"},{"arguments":[{"name":"tail","nativeSrc":"18828:4:55","nodeType":"YulIdentifier","src":"18828:4:55"},{"name":"headStart","nativeSrc":"18834:9:55","nodeType":"YulIdentifier","src":"18834:9:55"}],"functionName":{"name":"sub","nativeSrc":"18824:3:55","nodeType":"YulIdentifier","src":"18824:3:55"},"nativeSrc":"18824:20:55","nodeType":"YulFunctionCall","src":"18824:20:55"}],"functionName":{"name":"mstore","nativeSrc":"18797:6:55","nodeType":"YulIdentifier","src":"18797:6:55"},"nativeSrc":"18797:48:55","nodeType":"YulFunctionCall","src":"18797:48:55"},"nativeSrc":"18797:48:55","nodeType":"YulExpressionStatement","src":"18797:48:55"},{"nativeSrc":"18854:132:55","nodeType":"YulAssignment","src":"18854:132:55","value":{"arguments":[{"name":"value2","nativeSrc":"18972:6:55","nodeType":"YulIdentifier","src":"18972:6:55"},{"name":"tail","nativeSrc":"18981:4:55","nodeType":"YulIdentifier","src":"18981:4:55"}],"functionName":{"name":"abi_encode_t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr_fromStack","nativeSrc":"18862:109:55","nodeType":"YulIdentifier","src":"18862:109:55"},"nativeSrc":"18862:124:55","nodeType":"YulFunctionCall","src":"18862:124:55"},"variableNames":[{"name":"tail","nativeSrc":"18854:4:55","nodeType":"YulIdentifier","src":"18854:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"19007:9:55","nodeType":"YulIdentifier","src":"19007:9:55"},{"kind":"number","nativeSrc":"19018:2:55","nodeType":"YulLiteral","src":"19018:2:55","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"19003:3:55","nodeType":"YulIdentifier","src":"19003:3:55"},"nativeSrc":"19003:18:55","nodeType":"YulFunctionCall","src":"19003:18:55"},{"arguments":[{"name":"tail","nativeSrc":"19027:4:55","nodeType":"YulIdentifier","src":"19027:4:55"},{"name":"headStart","nativeSrc":"19033:9:55","nodeType":"YulIdentifier","src":"19033:9:55"}],"functionName":{"name":"sub","nativeSrc":"19023:3:55","nodeType":"YulIdentifier","src":"19023:3:55"},"nativeSrc":"19023:20:55","nodeType":"YulFunctionCall","src":"19023:20:55"}],"functionName":{"name":"mstore","nativeSrc":"18996:6:55","nodeType":"YulIdentifier","src":"18996:6:55"},"nativeSrc":"18996:48:55","nodeType":"YulFunctionCall","src":"18996:48:55"},"nativeSrc":"18996:48:55","nodeType":"YulExpressionStatement","src":"18996:48:55"},{"nativeSrc":"19053:116:55","nodeType":"YulAssignment","src":"19053:116:55","value":{"arguments":[{"name":"value3","nativeSrc":"19155:6:55","nodeType":"YulIdentifier","src":"19155:6:55"},{"name":"tail","nativeSrc":"19164:4:55","nodeType":"YulIdentifier","src":"19164:4:55"}],"functionName":{"name":"abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack","nativeSrc":"19061:93:55","nodeType":"YulIdentifier","src":"19061:93:55"},"nativeSrc":"19061:108:55","nodeType":"YulFunctionCall","src":"19061:108:55"},"variableNames":[{"name":"tail","nativeSrc":"19053:4:55","nodeType":"YulIdentifier","src":"19053:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"19190:9:55","nodeType":"YulIdentifier","src":"19190:9:55"},{"kind":"number","nativeSrc":"19201:3:55","nodeType":"YulLiteral","src":"19201:3:55","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"19186:3:55","nodeType":"YulIdentifier","src":"19186:3:55"},"nativeSrc":"19186:19:55","nodeType":"YulFunctionCall","src":"19186:19:55"},{"arguments":[{"name":"tail","nativeSrc":"19211:4:55","nodeType":"YulIdentifier","src":"19211:4:55"},{"name":"headStart","nativeSrc":"19217:9:55","nodeType":"YulIdentifier","src":"19217:9:55"}],"functionName":{"name":"sub","nativeSrc":"19207:3:55","nodeType":"YulIdentifier","src":"19207:3:55"},"nativeSrc":"19207:20:55","nodeType":"YulFunctionCall","src":"19207:20:55"}],"functionName":{"name":"mstore","nativeSrc":"19179:6:55","nodeType":"YulIdentifier","src":"19179:6:55"},"nativeSrc":"19179:49:55","nodeType":"YulFunctionCall","src":"19179:49:55"},"nativeSrc":"19179:49:55","nodeType":"YulExpressionStatement","src":"19179:49:55"},{"nativeSrc":"19237:94:55","nodeType":"YulAssignment","src":"19237:94:55","value":{"arguments":[{"name":"value4","nativeSrc":"19309:6:55","nodeType":"YulIdentifier","src":"19309:6:55"},{"name":"value5","nativeSrc":"19317:6:55","nodeType":"YulIdentifier","src":"19317:6:55"},{"name":"tail","nativeSrc":"19326:4:55","nodeType":"YulIdentifier","src":"19326:4:55"}],"functionName":{"name":"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack","nativeSrc":"19245:63:55","nodeType":"YulIdentifier","src":"19245:63:55"},"nativeSrc":"19245:86:55","nodeType":"YulFunctionCall","src":"19245:86:55"},"variableNames":[{"name":"tail","nativeSrc":"19237:4:55","nodeType":"YulIdentifier","src":"19237:4:55"}]}]},"name":"abi_encode_tuple_t_address_payable_t_address_payable_t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_calldata_ptr__to_t_address_payable_t_address_payable_t_array$_t_address_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"18169:1169:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"18487:9:55","nodeType":"YulTypedName","src":"18487:9:55","type":""},{"name":"value5","nativeSrc":"18499:6:55","nodeType":"YulTypedName","src":"18499:6:55","type":""},{"name":"value4","nativeSrc":"18507:6:55","nodeType":"YulTypedName","src":"18507:6:55","type":""},{"name":"value3","nativeSrc":"18515:6:55","nodeType":"YulTypedName","src":"18515:6:55","type":""},{"name":"value2","nativeSrc":"18523:6:55","nodeType":"YulTypedName","src":"18523:6:55","type":""},{"name":"value1","nativeSrc":"18531:6:55","nodeType":"YulTypedName","src":"18531:6:55","type":""},{"name":"value0","nativeSrc":"18539:6:55","nodeType":"YulTypedName","src":"18539:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"18550:4:55","nodeType":"YulTypedName","src":"18550:4:55","type":""}],"src":"18169:1169:55"},{"body":{"nativeSrc":"19409:53:55","nodeType":"YulBlock","src":"19409:53:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"19426:3:55","nodeType":"YulIdentifier","src":"19426:3:55"},{"arguments":[{"name":"value","nativeSrc":"19449:5:55","nodeType":"YulIdentifier","src":"19449:5:55"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"19431:17:55","nodeType":"YulIdentifier","src":"19431:17:55"},"nativeSrc":"19431:24:55","nodeType":"YulFunctionCall","src":"19431:24:55"}],"functionName":{"name":"mstore","nativeSrc":"19419:6:55","nodeType":"YulIdentifier","src":"19419:6:55"},"nativeSrc":"19419:37:55","nodeType":"YulFunctionCall","src":"19419:37:55"},"nativeSrc":"19419:37:55","nodeType":"YulExpressionStatement","src":"19419:37:55"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"19344:118:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"19397:5:55","nodeType":"YulTypedName","src":"19397:5:55","type":""},{"name":"pos","nativeSrc":"19404:3:55","nodeType":"YulTypedName","src":"19404:3:55","type":""}],"src":"19344:118:55"},{"body":{"nativeSrc":"19594:206:55","nodeType":"YulBlock","src":"19594:206:55","statements":[{"nativeSrc":"19604:26:55","nodeType":"YulAssignment","src":"19604:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"19616:9:55","nodeType":"YulIdentifier","src":"19616:9:55"},{"kind":"number","nativeSrc":"19627:2:55","nodeType":"YulLiteral","src":"19627:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"19612:3:55","nodeType":"YulIdentifier","src":"19612:3:55"},"nativeSrc":"19612:18:55","nodeType":"YulFunctionCall","src":"19612:18:55"},"variableNames":[{"name":"tail","nativeSrc":"19604:4:55","nodeType":"YulIdentifier","src":"19604:4:55"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"19684:6:55","nodeType":"YulIdentifier","src":"19684:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"19697:9:55","nodeType":"YulIdentifier","src":"19697:9:55"},{"kind":"number","nativeSrc":"19708:1:55","nodeType":"YulLiteral","src":"19708:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"19693:3:55","nodeType":"YulIdentifier","src":"19693:3:55"},"nativeSrc":"19693:17:55","nodeType":"YulFunctionCall","src":"19693:17:55"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"19640:43:55","nodeType":"YulIdentifier","src":"19640:43:55"},"nativeSrc":"19640:71:55","nodeType":"YulFunctionCall","src":"19640:71:55"},"nativeSrc":"19640:71:55","nodeType":"YulExpressionStatement","src":"19640:71:55"},{"expression":{"arguments":[{"name":"value1","nativeSrc":"19765:6:55","nodeType":"YulIdentifier","src":"19765:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"19778:9:55","nodeType":"YulIdentifier","src":"19778:9:55"},{"kind":"number","nativeSrc":"19789:2:55","nodeType":"YulLiteral","src":"19789:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"19774:3:55","nodeType":"YulIdentifier","src":"19774:3:55"},"nativeSrc":"19774:18:55","nodeType":"YulFunctionCall","src":"19774:18:55"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"19721:43:55","nodeType":"YulIdentifier","src":"19721:43:55"},"nativeSrc":"19721:72:55","nodeType":"YulFunctionCall","src":"19721:72:55"},"nativeSrc":"19721:72:55","nodeType":"YulExpressionStatement","src":"19721:72:55"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"19468:332:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"19558:9:55","nodeType":"YulTypedName","src":"19558:9:55","type":""},{"name":"value1","nativeSrc":"19570:6:55","nodeType":"YulTypedName","src":"19570:6:55","type":""},{"name":"value0","nativeSrc":"19578:6:55","nodeType":"YulTypedName","src":"19578:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"19589:4:55","nodeType":"YulTypedName","src":"19589:4:55","type":""}],"src":"19468:332:55"},{"body":{"nativeSrc":"19912:8:55","nodeType":"YulBlock","src":"19912:8:55","statements":[]},"name":"store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","nativeSrc":"19806:114:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"19904:6:55","nodeType":"YulTypedName","src":"19904:6:55","type":""}],"src":"19806:114:55"},{"body":{"nativeSrc":"20071:217:55","nodeType":"YulBlock","src":"20071:217:55","statements":[{"nativeSrc":"20081:72:55","nodeType":"YulAssignment","src":"20081:72:55","value":{"arguments":[{"name":"pos","nativeSrc":"20146:3:55","nodeType":"YulIdentifier","src":"20146:3:55"},{"kind":"number","nativeSrc":"20151:1:55","nodeType":"YulLiteral","src":"20151:1:55","type":"","value":"0"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nativeSrc":"20088:57:55","nodeType":"YulIdentifier","src":"20088:57:55"},"nativeSrc":"20088:65:55","nodeType":"YulFunctionCall","src":"20088:65:55"},"variableNames":[{"name":"pos","nativeSrc":"20081:3:55","nodeType":"YulIdentifier","src":"20081:3:55"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"20251:3:55","nodeType":"YulIdentifier","src":"20251:3:55"}],"functionName":{"name":"store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","nativeSrc":"20162:88:55","nodeType":"YulIdentifier","src":"20162:88:55"},"nativeSrc":"20162:93:55","nodeType":"YulFunctionCall","src":"20162:93:55"},"nativeSrc":"20162:93:55","nodeType":"YulExpressionStatement","src":"20162:93:55"},{"nativeSrc":"20264:18:55","nodeType":"YulAssignment","src":"20264:18:55","value":{"arguments":[{"name":"pos","nativeSrc":"20275:3:55","nodeType":"YulIdentifier","src":"20275:3:55"},{"kind":"number","nativeSrc":"20280:1:55","nodeType":"YulLiteral","src":"20280:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"20271:3:55","nodeType":"YulIdentifier","src":"20271:3:55"},"nativeSrc":"20271:11:55","nodeType":"YulFunctionCall","src":"20271:11:55"},"variableNames":[{"name":"end","nativeSrc":"20264:3:55","nodeType":"YulIdentifier","src":"20264:3:55"}]}]},"name":"abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_fromStack","nativeSrc":"19926:362:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"20059:3:55","nodeType":"YulTypedName","src":"20059:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"20067:3:55","nodeType":"YulTypedName","src":"20067:3:55","type":""}],"src":"19926:362:55"},{"body":{"nativeSrc":"20724:827:55","nodeType":"YulBlock","src":"20724:827:55","statements":[{"nativeSrc":"20734:27:55","nodeType":"YulAssignment","src":"20734:27:55","value":{"arguments":[{"name":"headStart","nativeSrc":"20746:9:55","nodeType":"YulIdentifier","src":"20746:9:55"},{"kind":"number","nativeSrc":"20757:3:55","nodeType":"YulLiteral","src":"20757:3:55","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"20742:3:55","nodeType":"YulIdentifier","src":"20742:3:55"},"nativeSrc":"20742:19:55","nodeType":"YulFunctionCall","src":"20742:19:55"},"variableNames":[{"name":"tail","nativeSrc":"20734:4:55","nodeType":"YulIdentifier","src":"20734:4:55"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"20831:6:55","nodeType":"YulIdentifier","src":"20831:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"20844:9:55","nodeType":"YulIdentifier","src":"20844:9:55"},{"kind":"number","nativeSrc":"20855:1:55","nodeType":"YulLiteral","src":"20855:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"20840:3:55","nodeType":"YulIdentifier","src":"20840:3:55"},"nativeSrc":"20840:17:55","nodeType":"YulFunctionCall","src":"20840:17:55"}],"functionName":{"name":"abi_encode_t_address_payable_to_t_address_payable_fromStack","nativeSrc":"20771:59:55","nodeType":"YulIdentifier","src":"20771:59:55"},"nativeSrc":"20771:87:55","nodeType":"YulFunctionCall","src":"20771:87:55"},"nativeSrc":"20771:87:55","nodeType":"YulExpressionStatement","src":"20771:87:55"},{"expression":{"arguments":[{"name":"value1","nativeSrc":"20928:6:55","nodeType":"YulIdentifier","src":"20928:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"20941:9:55","nodeType":"YulIdentifier","src":"20941:9:55"},{"kind":"number","nativeSrc":"20952:2:55","nodeType":"YulLiteral","src":"20952:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"20937:3:55","nodeType":"YulIdentifier","src":"20937:3:55"},"nativeSrc":"20937:18:55","nodeType":"YulFunctionCall","src":"20937:18:55"}],"functionName":{"name":"abi_encode_t_address_payable_to_t_address_payable_fromStack","nativeSrc":"20868:59:55","nodeType":"YulIdentifier","src":"20868:59:55"},"nativeSrc":"20868:88:55","nodeType":"YulFunctionCall","src":"20868:88:55"},"nativeSrc":"20868:88:55","nodeType":"YulExpressionStatement","src":"20868:88:55"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"20977:9:55","nodeType":"YulIdentifier","src":"20977:9:55"},{"kind":"number","nativeSrc":"20988:2:55","nodeType":"YulLiteral","src":"20988:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"20973:3:55","nodeType":"YulIdentifier","src":"20973:3:55"},"nativeSrc":"20973:18:55","nodeType":"YulFunctionCall","src":"20973:18:55"},{"arguments":[{"name":"tail","nativeSrc":"20997:4:55","nodeType":"YulIdentifier","src":"20997:4:55"},{"name":"headStart","nativeSrc":"21003:9:55","nodeType":"YulIdentifier","src":"21003:9:55"}],"functionName":{"name":"sub","nativeSrc":"20993:3:55","nodeType":"YulIdentifier","src":"20993:3:55"},"nativeSrc":"20993:20:55","nodeType":"YulFunctionCall","src":"20993:20:55"}],"functionName":{"name":"mstore","nativeSrc":"20966:6:55","nodeType":"YulIdentifier","src":"20966:6:55"},"nativeSrc":"20966:48:55","nodeType":"YulFunctionCall","src":"20966:48:55"},"nativeSrc":"20966:48:55","nodeType":"YulExpressionStatement","src":"20966:48:55"},{"nativeSrc":"21023:132:55","nodeType":"YulAssignment","src":"21023:132:55","value":{"arguments":[{"name":"value2","nativeSrc":"21141:6:55","nodeType":"YulIdentifier","src":"21141:6:55"},{"name":"tail","nativeSrc":"21150:4:55","nodeType":"YulIdentifier","src":"21150:4:55"}],"functionName":{"name":"abi_encode_t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr_fromStack","nativeSrc":"21031:109:55","nodeType":"YulIdentifier","src":"21031:109:55"},"nativeSrc":"21031:124:55","nodeType":"YulFunctionCall","src":"21031:124:55"},"variableNames":[{"name":"tail","nativeSrc":"21023:4:55","nodeType":"YulIdentifier","src":"21023:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"21176:9:55","nodeType":"YulIdentifier","src":"21176:9:55"},{"kind":"number","nativeSrc":"21187:2:55","nodeType":"YulLiteral","src":"21187:2:55","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"21172:3:55","nodeType":"YulIdentifier","src":"21172:3:55"},"nativeSrc":"21172:18:55","nodeType":"YulFunctionCall","src":"21172:18:55"},{"arguments":[{"name":"tail","nativeSrc":"21196:4:55","nodeType":"YulIdentifier","src":"21196:4:55"},{"name":"headStart","nativeSrc":"21202:9:55","nodeType":"YulIdentifier","src":"21202:9:55"}],"functionName":{"name":"sub","nativeSrc":"21192:3:55","nodeType":"YulIdentifier","src":"21192:3:55"},"nativeSrc":"21192:20:55","nodeType":"YulFunctionCall","src":"21192:20:55"}],"functionName":{"name":"mstore","nativeSrc":"21165:6:55","nodeType":"YulIdentifier","src":"21165:6:55"},"nativeSrc":"21165:48:55","nodeType":"YulFunctionCall","src":"21165:48:55"},"nativeSrc":"21165:48:55","nodeType":"YulExpressionStatement","src":"21165:48:55"},{"nativeSrc":"21222:116:55","nodeType":"YulAssignment","src":"21222:116:55","value":{"arguments":[{"name":"value3","nativeSrc":"21324:6:55","nodeType":"YulIdentifier","src":"21324:6:55"},{"name":"tail","nativeSrc":"21333:4:55","nodeType":"YulIdentifier","src":"21333:4:55"}],"functionName":{"name":"abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack","nativeSrc":"21230:93:55","nodeType":"YulIdentifier","src":"21230:93:55"},"nativeSrc":"21230:108:55","nodeType":"YulFunctionCall","src":"21230:108:55"},"variableNames":[{"name":"tail","nativeSrc":"21222:4:55","nodeType":"YulIdentifier","src":"21222:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"21359:9:55","nodeType":"YulIdentifier","src":"21359:9:55"},{"kind":"number","nativeSrc":"21370:3:55","nodeType":"YulLiteral","src":"21370:3:55","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"21355:3:55","nodeType":"YulIdentifier","src":"21355:3:55"},"nativeSrc":"21355:19:55","nodeType":"YulFunctionCall","src":"21355:19:55"},{"arguments":[{"name":"tail","nativeSrc":"21380:4:55","nodeType":"YulIdentifier","src":"21380:4:55"},{"name":"headStart","nativeSrc":"21386:9:55","nodeType":"YulIdentifier","src":"21386:9:55"}],"functionName":{"name":"sub","nativeSrc":"21376:3:55","nodeType":"YulIdentifier","src":"21376:3:55"},"nativeSrc":"21376:20:55","nodeType":"YulFunctionCall","src":"21376:20:55"}],"functionName":{"name":"mstore","nativeSrc":"21348:6:55","nodeType":"YulIdentifier","src":"21348:6:55"},"nativeSrc":"21348:49:55","nodeType":"YulFunctionCall","src":"21348:49:55"},"nativeSrc":"21348:49:55","nodeType":"YulExpressionStatement","src":"21348:49:55"},{"nativeSrc":"21406:138:55","nodeType":"YulAssignment","src":"21406:138:55","value":{"arguments":[{"name":"tail","nativeSrc":"21539:4:55","nodeType":"YulIdentifier","src":"21539:4:55"}],"functionName":{"name":"abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_fromStack","nativeSrc":"21414:123:55","nodeType":"YulIdentifier","src":"21414:123:55"},"nativeSrc":"21414:130:55","nodeType":"YulFunctionCall","src":"21414:130:55"},"variableNames":[{"name":"tail","nativeSrc":"21406:4:55","nodeType":"YulIdentifier","src":"21406:4:55"}]}]},"name":"abi_encode_tuple_t_address_payable_t_address_payable_t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_payable_t_address_payable_t_array$_t_address_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"20294:1257:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"20672:9:55","nodeType":"YulTypedName","src":"20672:9:55","type":""},{"name":"value3","nativeSrc":"20684:6:55","nodeType":"YulTypedName","src":"20684:6:55","type":""},{"name":"value2","nativeSrc":"20692:6:55","nodeType":"YulTypedName","src":"20692:6:55","type":""},{"name":"value1","nativeSrc":"20700:6:55","nodeType":"YulTypedName","src":"20700:6:55","type":""},{"name":"value0","nativeSrc":"20708:6:55","nodeType":"YulTypedName","src":"20708:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"20719:4:55","nodeType":"YulTypedName","src":"20719:4:55","type":""}],"src":"20294:1257:55"},{"body":{"nativeSrc":"21653:73:55","nodeType":"YulBlock","src":"21653:73:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"21670:3:55","nodeType":"YulIdentifier","src":"21670:3:55"},{"name":"length","nativeSrc":"21675:6:55","nodeType":"YulIdentifier","src":"21675:6:55"}],"functionName":{"name":"mstore","nativeSrc":"21663:6:55","nodeType":"YulIdentifier","src":"21663:6:55"},"nativeSrc":"21663:19:55","nodeType":"YulFunctionCall","src":"21663:19:55"},"nativeSrc":"21663:19:55","nodeType":"YulExpressionStatement","src":"21663:19:55"},{"nativeSrc":"21691:29:55","nodeType":"YulAssignment","src":"21691:29:55","value":{"arguments":[{"name":"pos","nativeSrc":"21710:3:55","nodeType":"YulIdentifier","src":"21710:3:55"},{"kind":"number","nativeSrc":"21715:4:55","nodeType":"YulLiteral","src":"21715:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"21706:3:55","nodeType":"YulIdentifier","src":"21706:3:55"},"nativeSrc":"21706:14:55","nodeType":"YulFunctionCall","src":"21706:14:55"},"variableNames":[{"name":"updated_pos","nativeSrc":"21691:11:55","nodeType":"YulIdentifier","src":"21691:11:55"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"21557:169:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"21625:3:55","nodeType":"YulTypedName","src":"21625:3:55","type":""},{"name":"length","nativeSrc":"21630:6:55","nodeType":"YulTypedName","src":"21630:6:55","type":""}],"returnVariables":[{"name":"updated_pos","nativeSrc":"21641:11:55","nodeType":"YulTypedName","src":"21641:11:55","type":""}],"src":"21557:169:55"},{"body":{"nativeSrc":"21838:122:55","nodeType":"YulBlock","src":"21838:122:55","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"21860:6:55","nodeType":"YulIdentifier","src":"21860:6:55"},{"kind":"number","nativeSrc":"21868:1:55","nodeType":"YulLiteral","src":"21868:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"21856:3:55","nodeType":"YulIdentifier","src":"21856:3:55"},"nativeSrc":"21856:14:55","nodeType":"YulFunctionCall","src":"21856:14:55"},{"hexValue":"4f776e61626c6532537465703a2063616c6c6572206973206e6f742074686520","kind":"string","nativeSrc":"21872:34:55","nodeType":"YulLiteral","src":"21872:34:55","type":"","value":"Ownable2Step: caller is not the "}],"functionName":{"name":"mstore","nativeSrc":"21849:6:55","nodeType":"YulIdentifier","src":"21849:6:55"},"nativeSrc":"21849:58:55","nodeType":"YulFunctionCall","src":"21849:58:55"},"nativeSrc":"21849:58:55","nodeType":"YulExpressionStatement","src":"21849:58:55"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"21928:6:55","nodeType":"YulIdentifier","src":"21928:6:55"},{"kind":"number","nativeSrc":"21936:2:55","nodeType":"YulLiteral","src":"21936:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"21924:3:55","nodeType":"YulIdentifier","src":"21924:3:55"},"nativeSrc":"21924:15:55","nodeType":"YulFunctionCall","src":"21924:15:55"},{"hexValue":"6e6577206f776e6572","kind":"string","nativeSrc":"21941:11:55","nodeType":"YulLiteral","src":"21941:11:55","type":"","value":"new owner"}],"functionName":{"name":"mstore","nativeSrc":"21917:6:55","nodeType":"YulIdentifier","src":"21917:6:55"},"nativeSrc":"21917:36:55","nodeType":"YulFunctionCall","src":"21917:36:55"},"nativeSrc":"21917:36:55","nodeType":"YulExpressionStatement","src":"21917:36:55"}]},"name":"store_literal_in_memory_225559eb8402045bea7ff07c35d0ad8c0547830223ac1c21d44fb948d6896ebc","nativeSrc":"21732:228:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"21830:6:55","nodeType":"YulTypedName","src":"21830:6:55","type":""}],"src":"21732:228:55"},{"body":{"nativeSrc":"22112:220:55","nodeType":"YulBlock","src":"22112:220:55","statements":[{"nativeSrc":"22122:74:55","nodeType":"YulAssignment","src":"22122:74:55","value":{"arguments":[{"name":"pos","nativeSrc":"22188:3:55","nodeType":"YulIdentifier","src":"22188:3:55"},{"kind":"number","nativeSrc":"22193:2:55","nodeType":"YulLiteral","src":"22193:2:55","type":"","value":"41"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"22129:58:55","nodeType":"YulIdentifier","src":"22129:58:55"},"nativeSrc":"22129:67:55","nodeType":"YulFunctionCall","src":"22129:67:55"},"variableNames":[{"name":"pos","nativeSrc":"22122:3:55","nodeType":"YulIdentifier","src":"22122:3:55"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"22294:3:55","nodeType":"YulIdentifier","src":"22294:3:55"}],"functionName":{"name":"store_literal_in_memory_225559eb8402045bea7ff07c35d0ad8c0547830223ac1c21d44fb948d6896ebc","nativeSrc":"22205:88:55","nodeType":"YulIdentifier","src":"22205:88:55"},"nativeSrc":"22205:93:55","nodeType":"YulFunctionCall","src":"22205:93:55"},"nativeSrc":"22205:93:55","nodeType":"YulExpressionStatement","src":"22205:93:55"},{"nativeSrc":"22307:19:55","nodeType":"YulAssignment","src":"22307:19:55","value":{"arguments":[{"name":"pos","nativeSrc":"22318:3:55","nodeType":"YulIdentifier","src":"22318:3:55"},{"kind":"number","nativeSrc":"22323:2:55","nodeType":"YulLiteral","src":"22323:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"22314:3:55","nodeType":"YulIdentifier","src":"22314:3:55"},"nativeSrc":"22314:12:55","nodeType":"YulFunctionCall","src":"22314:12:55"},"variableNames":[{"name":"end","nativeSrc":"22307:3:55","nodeType":"YulIdentifier","src":"22307:3:55"}]}]},"name":"abi_encode_t_stringliteral_225559eb8402045bea7ff07c35d0ad8c0547830223ac1c21d44fb948d6896ebc_to_t_string_memory_ptr_fromStack","nativeSrc":"21966:366:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"22100:3:55","nodeType":"YulTypedName","src":"22100:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"22108:3:55","nodeType":"YulTypedName","src":"22108:3:55","type":""}],"src":"21966:366:55"},{"body":{"nativeSrc":"22509:248:55","nodeType":"YulBlock","src":"22509:248:55","statements":[{"nativeSrc":"22519:26:55","nodeType":"YulAssignment","src":"22519:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"22531:9:55","nodeType":"YulIdentifier","src":"22531:9:55"},{"kind":"number","nativeSrc":"22542:2:55","nodeType":"YulLiteral","src":"22542:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"22527:3:55","nodeType":"YulIdentifier","src":"22527:3:55"},"nativeSrc":"22527:18:55","nodeType":"YulFunctionCall","src":"22527:18:55"},"variableNames":[{"name":"tail","nativeSrc":"22519:4:55","nodeType":"YulIdentifier","src":"22519:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"22566:9:55","nodeType":"YulIdentifier","src":"22566:9:55"},{"kind":"number","nativeSrc":"22577:1:55","nodeType":"YulLiteral","src":"22577:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"22562:3:55","nodeType":"YulIdentifier","src":"22562:3:55"},"nativeSrc":"22562:17:55","nodeType":"YulFunctionCall","src":"22562:17:55"},{"arguments":[{"name":"tail","nativeSrc":"22585:4:55","nodeType":"YulIdentifier","src":"22585:4:55"},{"name":"headStart","nativeSrc":"22591:9:55","nodeType":"YulIdentifier","src":"22591:9:55"}],"functionName":{"name":"sub","nativeSrc":"22581:3:55","nodeType":"YulIdentifier","src":"22581:3:55"},"nativeSrc":"22581:20:55","nodeType":"YulFunctionCall","src":"22581:20:55"}],"functionName":{"name":"mstore","nativeSrc":"22555:6:55","nodeType":"YulIdentifier","src":"22555:6:55"},"nativeSrc":"22555:47:55","nodeType":"YulFunctionCall","src":"22555:47:55"},"nativeSrc":"22555:47:55","nodeType":"YulExpressionStatement","src":"22555:47:55"},{"nativeSrc":"22611:139:55","nodeType":"YulAssignment","src":"22611:139:55","value":{"arguments":[{"name":"tail","nativeSrc":"22745:4:55","nodeType":"YulIdentifier","src":"22745:4:55"}],"functionName":{"name":"abi_encode_t_stringliteral_225559eb8402045bea7ff07c35d0ad8c0547830223ac1c21d44fb948d6896ebc_to_t_string_memory_ptr_fromStack","nativeSrc":"22619:124:55","nodeType":"YulIdentifier","src":"22619:124:55"},"nativeSrc":"22619:131:55","nodeType":"YulFunctionCall","src":"22619:131:55"},"variableNames":[{"name":"tail","nativeSrc":"22611:4:55","nodeType":"YulIdentifier","src":"22611:4:55"}]}]},"name":"abi_encode_tuple_t_stringliteral_225559eb8402045bea7ff07c35d0ad8c0547830223ac1c21d44fb948d6896ebc__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"22338:419:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"22489:9:55","nodeType":"YulTypedName","src":"22489:9:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"22504:4:55","nodeType":"YulTypedName","src":"22504:4:55","type":""}],"src":"22338:419:55"},{"body":{"nativeSrc":"22869:127:55","nodeType":"YulBlock","src":"22869:127:55","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"22891:6:55","nodeType":"YulIdentifier","src":"22891:6:55"},{"kind":"number","nativeSrc":"22899:1:55","nodeType":"YulLiteral","src":"22899:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"22887:3:55","nodeType":"YulIdentifier","src":"22887:3:55"},"nativeSrc":"22887:14:55","nodeType":"YulFunctionCall","src":"22887:14:55"},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561","kind":"string","nativeSrc":"22903:34:55","nodeType":"YulLiteral","src":"22903:34:55","type":"","value":"Initializable: contract is alrea"}],"functionName":{"name":"mstore","nativeSrc":"22880:6:55","nodeType":"YulIdentifier","src":"22880:6:55"},"nativeSrc":"22880:58:55","nodeType":"YulFunctionCall","src":"22880:58:55"},"nativeSrc":"22880:58:55","nodeType":"YulExpressionStatement","src":"22880:58:55"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"22959:6:55","nodeType":"YulIdentifier","src":"22959:6:55"},{"kind":"number","nativeSrc":"22967:2:55","nodeType":"YulLiteral","src":"22967:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"22955:3:55","nodeType":"YulIdentifier","src":"22955:3:55"},"nativeSrc":"22955:15:55","nodeType":"YulFunctionCall","src":"22955:15:55"},{"hexValue":"647920696e697469616c697a6564","kind":"string","nativeSrc":"22972:16:55","nodeType":"YulLiteral","src":"22972:16:55","type":"","value":"dy initialized"}],"functionName":{"name":"mstore","nativeSrc":"22948:6:55","nodeType":"YulIdentifier","src":"22948:6:55"},"nativeSrc":"22948:41:55","nodeType":"YulFunctionCall","src":"22948:41:55"},"nativeSrc":"22948:41:55","nodeType":"YulExpressionStatement","src":"22948:41:55"}]},"name":"store_literal_in_memory_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","nativeSrc":"22763:233:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"22861:6:55","nodeType":"YulTypedName","src":"22861:6:55","type":""}],"src":"22763:233:55"},{"body":{"nativeSrc":"23148:220:55","nodeType":"YulBlock","src":"23148:220:55","statements":[{"nativeSrc":"23158:74:55","nodeType":"YulAssignment","src":"23158:74:55","value":{"arguments":[{"name":"pos","nativeSrc":"23224:3:55","nodeType":"YulIdentifier","src":"23224:3:55"},{"kind":"number","nativeSrc":"23229:2:55","nodeType":"YulLiteral","src":"23229:2:55","type":"","value":"46"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"23165:58:55","nodeType":"YulIdentifier","src":"23165:58:55"},"nativeSrc":"23165:67:55","nodeType":"YulFunctionCall","src":"23165:67:55"},"variableNames":[{"name":"pos","nativeSrc":"23158:3:55","nodeType":"YulIdentifier","src":"23158:3:55"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"23330:3:55","nodeType":"YulIdentifier","src":"23330:3:55"}],"functionName":{"name":"store_literal_in_memory_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","nativeSrc":"23241:88:55","nodeType":"YulIdentifier","src":"23241:88:55"},"nativeSrc":"23241:93:55","nodeType":"YulFunctionCall","src":"23241:93:55"},"nativeSrc":"23241:93:55","nodeType":"YulExpressionStatement","src":"23241:93:55"},{"nativeSrc":"23343:19:55","nodeType":"YulAssignment","src":"23343:19:55","value":{"arguments":[{"name":"pos","nativeSrc":"23354:3:55","nodeType":"YulIdentifier","src":"23354:3:55"},{"kind":"number","nativeSrc":"23359:2:55","nodeType":"YulLiteral","src":"23359:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"23350:3:55","nodeType":"YulIdentifier","src":"23350:3:55"},"nativeSrc":"23350:12:55","nodeType":"YulFunctionCall","src":"23350:12:55"},"variableNames":[{"name":"end","nativeSrc":"23343:3:55","nodeType":"YulIdentifier","src":"23343:3:55"}]}]},"name":"abi_encode_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759_to_t_string_memory_ptr_fromStack","nativeSrc":"23002:366:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"23136:3:55","nodeType":"YulTypedName","src":"23136:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"23144:3:55","nodeType":"YulTypedName","src":"23144:3:55","type":""}],"src":"23002:366:55"},{"body":{"nativeSrc":"23545:248:55","nodeType":"YulBlock","src":"23545:248:55","statements":[{"nativeSrc":"23555:26:55","nodeType":"YulAssignment","src":"23555:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"23567:9:55","nodeType":"YulIdentifier","src":"23567:9:55"},{"kind":"number","nativeSrc":"23578:2:55","nodeType":"YulLiteral","src":"23578:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"23563:3:55","nodeType":"YulIdentifier","src":"23563:3:55"},"nativeSrc":"23563:18:55","nodeType":"YulFunctionCall","src":"23563:18:55"},"variableNames":[{"name":"tail","nativeSrc":"23555:4:55","nodeType":"YulIdentifier","src":"23555:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"23602:9:55","nodeType":"YulIdentifier","src":"23602:9:55"},{"kind":"number","nativeSrc":"23613:1:55","nodeType":"YulLiteral","src":"23613:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"23598:3:55","nodeType":"YulIdentifier","src":"23598:3:55"},"nativeSrc":"23598:17:55","nodeType":"YulFunctionCall","src":"23598:17:55"},{"arguments":[{"name":"tail","nativeSrc":"23621:4:55","nodeType":"YulIdentifier","src":"23621:4:55"},{"name":"headStart","nativeSrc":"23627:9:55","nodeType":"YulIdentifier","src":"23627:9:55"}],"functionName":{"name":"sub","nativeSrc":"23617:3:55","nodeType":"YulIdentifier","src":"23617:3:55"},"nativeSrc":"23617:20:55","nodeType":"YulFunctionCall","src":"23617:20:55"}],"functionName":{"name":"mstore","nativeSrc":"23591:6:55","nodeType":"YulIdentifier","src":"23591:6:55"},"nativeSrc":"23591:47:55","nodeType":"YulFunctionCall","src":"23591:47:55"},"nativeSrc":"23591:47:55","nodeType":"YulExpressionStatement","src":"23591:47:55"},{"nativeSrc":"23647:139:55","nodeType":"YulAssignment","src":"23647:139:55","value":{"arguments":[{"name":"tail","nativeSrc":"23781:4:55","nodeType":"YulIdentifier","src":"23781:4:55"}],"functionName":{"name":"abi_encode_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759_to_t_string_memory_ptr_fromStack","nativeSrc":"23655:124:55","nodeType":"YulIdentifier","src":"23655:124:55"},"nativeSrc":"23655:131:55","nodeType":"YulFunctionCall","src":"23655:131:55"},"variableNames":[{"name":"tail","nativeSrc":"23647:4:55","nodeType":"YulIdentifier","src":"23647:4:55"}]}]},"name":"abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"23374:419:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"23525:9:55","nodeType":"YulTypedName","src":"23525:9:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"23540:4:55","nodeType":"YulTypedName","src":"23540:4:55","type":""}],"src":"23374:419:55"},{"body":{"nativeSrc":"23852:32:55","nodeType":"YulBlock","src":"23852:32:55","statements":[{"nativeSrc":"23862:16:55","nodeType":"YulAssignment","src":"23862:16:55","value":{"name":"value","nativeSrc":"23873:5:55","nodeType":"YulIdentifier","src":"23873:5:55"},"variableNames":[{"name":"cleaned","nativeSrc":"23862:7:55","nodeType":"YulIdentifier","src":"23862:7:55"}]}]},"name":"cleanup_t_rational_1_by_1","nativeSrc":"23799:85:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"23834:5:55","nodeType":"YulTypedName","src":"23834:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"23844:7:55","nodeType":"YulTypedName","src":"23844:7:55","type":""}],"src":"23799:85:55"},{"body":{"nativeSrc":"23933:43:55","nodeType":"YulBlock","src":"23933:43:55","statements":[{"nativeSrc":"23943:27:55","nodeType":"YulAssignment","src":"23943:27:55","value":{"arguments":[{"name":"value","nativeSrc":"23958:5:55","nodeType":"YulIdentifier","src":"23958:5:55"},{"kind":"number","nativeSrc":"23965:4:55","nodeType":"YulLiteral","src":"23965:4:55","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"23954:3:55","nodeType":"YulIdentifier","src":"23954:3:55"},"nativeSrc":"23954:16:55","nodeType":"YulFunctionCall","src":"23954:16:55"},"variableNames":[{"name":"cleaned","nativeSrc":"23943:7:55","nodeType":"YulIdentifier","src":"23943:7:55"}]}]},"name":"cleanup_t_uint8","nativeSrc":"23890:86:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"23915:5:55","nodeType":"YulTypedName","src":"23915:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"23925:7:55","nodeType":"YulTypedName","src":"23925:7:55","type":""}],"src":"23890:86:55"},{"body":{"nativeSrc":"24048:88:55","nodeType":"YulBlock","src":"24048:88:55","statements":[{"nativeSrc":"24058:72:55","nodeType":"YulAssignment","src":"24058:72:55","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nativeSrc":"24122:5:55","nodeType":"YulIdentifier","src":"24122:5:55"}],"functionName":{"name":"cleanup_t_rational_1_by_1","nativeSrc":"24096:25:55","nodeType":"YulIdentifier","src":"24096:25:55"},"nativeSrc":"24096:32:55","nodeType":"YulFunctionCall","src":"24096:32:55"}],"functionName":{"name":"identity","nativeSrc":"24087:8:55","nodeType":"YulIdentifier","src":"24087:8:55"},"nativeSrc":"24087:42:55","nodeType":"YulFunctionCall","src":"24087:42:55"}],"functionName":{"name":"cleanup_t_uint8","nativeSrc":"24071:15:55","nodeType":"YulIdentifier","src":"24071:15:55"},"nativeSrc":"24071:59:55","nodeType":"YulFunctionCall","src":"24071:59:55"},"variableNames":[{"name":"converted","nativeSrc":"24058:9:55","nodeType":"YulIdentifier","src":"24058:9:55"}]}]},"name":"convert_t_rational_1_by_1_to_t_uint8","nativeSrc":"23982:154:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"24028:5:55","nodeType":"YulTypedName","src":"24028:5:55","type":""}],"returnVariables":[{"name":"converted","nativeSrc":"24038:9:55","nodeType":"YulTypedName","src":"24038:9:55","type":""}],"src":"23982:154:55"},{"body":{"nativeSrc":"24213:72:55","nodeType":"YulBlock","src":"24213:72:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"24230:3:55","nodeType":"YulIdentifier","src":"24230:3:55"},{"arguments":[{"name":"value","nativeSrc":"24272:5:55","nodeType":"YulIdentifier","src":"24272:5:55"}],"functionName":{"name":"convert_t_rational_1_by_1_to_t_uint8","nativeSrc":"24235:36:55","nodeType":"YulIdentifier","src":"24235:36:55"},"nativeSrc":"24235:43:55","nodeType":"YulFunctionCall","src":"24235:43:55"}],"functionName":{"name":"mstore","nativeSrc":"24223:6:55","nodeType":"YulIdentifier","src":"24223:6:55"},"nativeSrc":"24223:56:55","nodeType":"YulFunctionCall","src":"24223:56:55"},"nativeSrc":"24223:56:55","nodeType":"YulExpressionStatement","src":"24223:56:55"}]},"name":"abi_encode_t_rational_1_by_1_to_t_uint8_fromStack","nativeSrc":"24142:143:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"24201:5:55","nodeType":"YulTypedName","src":"24201:5:55","type":""},{"name":"pos","nativeSrc":"24208:3:55","nodeType":"YulTypedName","src":"24208:3:55","type":""}],"src":"24142:143:55"},{"body":{"nativeSrc":"24395:130:55","nodeType":"YulBlock","src":"24395:130:55","statements":[{"nativeSrc":"24405:26:55","nodeType":"YulAssignment","src":"24405:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"24417:9:55","nodeType":"YulIdentifier","src":"24417:9:55"},{"kind":"number","nativeSrc":"24428:2:55","nodeType":"YulLiteral","src":"24428:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"24413:3:55","nodeType":"YulIdentifier","src":"24413:3:55"},"nativeSrc":"24413:18:55","nodeType":"YulFunctionCall","src":"24413:18:55"},"variableNames":[{"name":"tail","nativeSrc":"24405:4:55","nodeType":"YulIdentifier","src":"24405:4:55"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"24491:6:55","nodeType":"YulIdentifier","src":"24491:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"24504:9:55","nodeType":"YulIdentifier","src":"24504:9:55"},{"kind":"number","nativeSrc":"24515:1:55","nodeType":"YulLiteral","src":"24515:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"24500:3:55","nodeType":"YulIdentifier","src":"24500:3:55"},"nativeSrc":"24500:17:55","nodeType":"YulFunctionCall","src":"24500:17:55"}],"functionName":{"name":"abi_encode_t_rational_1_by_1_to_t_uint8_fromStack","nativeSrc":"24441:49:55","nodeType":"YulIdentifier","src":"24441:49:55"},"nativeSrc":"24441:77:55","nodeType":"YulFunctionCall","src":"24441:77:55"},"nativeSrc":"24441:77:55","nodeType":"YulExpressionStatement","src":"24441:77:55"}]},"name":"abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed","nativeSrc":"24291:234:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"24367:9:55","nodeType":"YulTypedName","src":"24367:9:55","type":""},{"name":"value0","nativeSrc":"24379:6:55","nodeType":"YulTypedName","src":"24379:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"24390:4:55","nodeType":"YulTypedName","src":"24390:4:55","type":""}],"src":"24291:234:55"},{"body":{"nativeSrc":"24629:124:55","nodeType":"YulBlock","src":"24629:124:55","statements":[{"nativeSrc":"24639:26:55","nodeType":"YulAssignment","src":"24639:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"24651:9:55","nodeType":"YulIdentifier","src":"24651:9:55"},{"kind":"number","nativeSrc":"24662:2:55","nodeType":"YulLiteral","src":"24662:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"24647:3:55","nodeType":"YulIdentifier","src":"24647:3:55"},"nativeSrc":"24647:18:55","nodeType":"YulFunctionCall","src":"24647:18:55"},"variableNames":[{"name":"tail","nativeSrc":"24639:4:55","nodeType":"YulIdentifier","src":"24639:4:55"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"24719:6:55","nodeType":"YulIdentifier","src":"24719:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"24732:9:55","nodeType":"YulIdentifier","src":"24732:9:55"},{"kind":"number","nativeSrc":"24743:1:55","nodeType":"YulLiteral","src":"24743:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"24728:3:55","nodeType":"YulIdentifier","src":"24728:3:55"},"nativeSrc":"24728:17:55","nodeType":"YulFunctionCall","src":"24728:17:55"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"24675:43:55","nodeType":"YulIdentifier","src":"24675:43:55"},"nativeSrc":"24675:71:55","nodeType":"YulFunctionCall","src":"24675:71:55"},"nativeSrc":"24675:71:55","nodeType":"YulExpressionStatement","src":"24675:71:55"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"24531:222:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"24601:9:55","nodeType":"YulTypedName","src":"24601:9:55","type":""},{"name":"value0","nativeSrc":"24613:6:55","nodeType":"YulTypedName","src":"24613:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"24624:4:55","nodeType":"YulTypedName","src":"24624:4:55","type":""}],"src":"24531:222:55"},{"body":{"nativeSrc":"24841:279:55","nodeType":"YulBlock","src":"24841:279:55","statements":[{"body":{"nativeSrc":"24887:83:55","nodeType":"YulBlock","src":"24887:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"24889:77:55","nodeType":"YulIdentifier","src":"24889:77:55"},"nativeSrc":"24889:79:55","nodeType":"YulFunctionCall","src":"24889:79:55"},"nativeSrc":"24889:79:55","nodeType":"YulExpressionStatement","src":"24889:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"24862:7:55","nodeType":"YulIdentifier","src":"24862:7:55"},{"name":"headStart","nativeSrc":"24871:9:55","nodeType":"YulIdentifier","src":"24871:9:55"}],"functionName":{"name":"sub","nativeSrc":"24858:3:55","nodeType":"YulIdentifier","src":"24858:3:55"},"nativeSrc":"24858:23:55","nodeType":"YulFunctionCall","src":"24858:23:55"},{"kind":"number","nativeSrc":"24883:2:55","nodeType":"YulLiteral","src":"24883:2:55","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"24854:3:55","nodeType":"YulIdentifier","src":"24854:3:55"},"nativeSrc":"24854:32:55","nodeType":"YulFunctionCall","src":"24854:32:55"},"nativeSrc":"24851:119:55","nodeType":"YulIf","src":"24851:119:55"},{"nativeSrc":"24980:133:55","nodeType":"YulBlock","src":"24980:133:55","statements":[{"nativeSrc":"24995:15:55","nodeType":"YulVariableDeclaration","src":"24995:15:55","value":{"kind":"number","nativeSrc":"25009:1:55","nodeType":"YulLiteral","src":"25009:1:55","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"24999:6:55","nodeType":"YulTypedName","src":"24999:6:55","type":""}]},{"nativeSrc":"25024:79:55","nodeType":"YulAssignment","src":"25024:79:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"25075:9:55","nodeType":"YulIdentifier","src":"25075:9:55"},{"name":"offset","nativeSrc":"25086:6:55","nodeType":"YulIdentifier","src":"25086:6:55"}],"functionName":{"name":"add","nativeSrc":"25071:3:55","nodeType":"YulIdentifier","src":"25071:3:55"},"nativeSrc":"25071:22:55","nodeType":"YulFunctionCall","src":"25071:22:55"},{"name":"dataEnd","nativeSrc":"25095:7:55","nodeType":"YulIdentifier","src":"25095:7:55"}],"functionName":{"name":"abi_decode_t_contract$_IVToken_$5277","nativeSrc":"25034:36:55","nodeType":"YulIdentifier","src":"25034:36:55"},"nativeSrc":"25034:69:55","nodeType":"YulFunctionCall","src":"25034:69:55"},"variableNames":[{"name":"value0","nativeSrc":"25024:6:55","nodeType":"YulIdentifier","src":"25024:6:55"}]}]}]},"name":"abi_decode_tuple_t_contract$_IVToken_$5277","nativeSrc":"24759:361:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"24811:9:55","nodeType":"YulTypedName","src":"24811:9:55","type":""},{"name":"dataEnd","nativeSrc":"24822:7:55","nodeType":"YulTypedName","src":"24822:7:55","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"24834:6:55","nodeType":"YulTypedName","src":"24834:6:55","type":""}],"src":"24759:361:55"},{"body":{"nativeSrc":"25166:76:55","nodeType":"YulBlock","src":"25166:76:55","statements":[{"body":{"nativeSrc":"25220:16:55","nodeType":"YulBlock","src":"25220:16:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"25229:1:55","nodeType":"YulLiteral","src":"25229:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"25232:1:55","nodeType":"YulLiteral","src":"25232:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"25222:6:55","nodeType":"YulIdentifier","src":"25222:6:55"},"nativeSrc":"25222:12:55","nodeType":"YulFunctionCall","src":"25222:12:55"},"nativeSrc":"25222:12:55","nodeType":"YulExpressionStatement","src":"25222:12:55"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"25189:5:55","nodeType":"YulIdentifier","src":"25189:5:55"},{"arguments":[{"name":"value","nativeSrc":"25211:5:55","nodeType":"YulIdentifier","src":"25211:5:55"}],"functionName":{"name":"cleanup_t_bool","nativeSrc":"25196:14:55","nodeType":"YulIdentifier","src":"25196:14:55"},"nativeSrc":"25196:21:55","nodeType":"YulFunctionCall","src":"25196:21:55"}],"functionName":{"name":"eq","nativeSrc":"25186:2:55","nodeType":"YulIdentifier","src":"25186:2:55"},"nativeSrc":"25186:32:55","nodeType":"YulFunctionCall","src":"25186:32:55"}],"functionName":{"name":"iszero","nativeSrc":"25179:6:55","nodeType":"YulIdentifier","src":"25179:6:55"},"nativeSrc":"25179:40:55","nodeType":"YulFunctionCall","src":"25179:40:55"},"nativeSrc":"25176:60:55","nodeType":"YulIf","src":"25176:60:55"}]},"name":"validator_revert_t_bool","nativeSrc":"25126:116:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"25159:5:55","nodeType":"YulTypedName","src":"25159:5:55","type":""}],"src":"25126:116:55"},{"body":{"nativeSrc":"25308:77:55","nodeType":"YulBlock","src":"25308:77:55","statements":[{"nativeSrc":"25318:22:55","nodeType":"YulAssignment","src":"25318:22:55","value":{"arguments":[{"name":"offset","nativeSrc":"25333:6:55","nodeType":"YulIdentifier","src":"25333:6:55"}],"functionName":{"name":"mload","nativeSrc":"25327:5:55","nodeType":"YulIdentifier","src":"25327:5:55"},"nativeSrc":"25327:13:55","nodeType":"YulFunctionCall","src":"25327:13:55"},"variableNames":[{"name":"value","nativeSrc":"25318:5:55","nodeType":"YulIdentifier","src":"25318:5:55"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"25373:5:55","nodeType":"YulIdentifier","src":"25373:5:55"}],"functionName":{"name":"validator_revert_t_bool","nativeSrc":"25349:23:55","nodeType":"YulIdentifier","src":"25349:23:55"},"nativeSrc":"25349:30:55","nodeType":"YulFunctionCall","src":"25349:30:55"},"nativeSrc":"25349:30:55","nodeType":"YulExpressionStatement","src":"25349:30:55"}]},"name":"abi_decode_t_bool_fromMemory","nativeSrc":"25248:137:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"25286:6:55","nodeType":"YulTypedName","src":"25286:6:55","type":""},{"name":"end","nativeSrc":"25294:3:55","nodeType":"YulTypedName","src":"25294:3:55","type":""}],"returnVariables":[{"name":"value","nativeSrc":"25302:5:55","nodeType":"YulTypedName","src":"25302:5:55","type":""}],"src":"25248:137:55"},{"body":{"nativeSrc":"25454:80:55","nodeType":"YulBlock","src":"25454:80:55","statements":[{"nativeSrc":"25464:22:55","nodeType":"YulAssignment","src":"25464:22:55","value":{"arguments":[{"name":"offset","nativeSrc":"25479:6:55","nodeType":"YulIdentifier","src":"25479:6:55"}],"functionName":{"name":"mload","nativeSrc":"25473:5:55","nodeType":"YulIdentifier","src":"25473:5:55"},"nativeSrc":"25473:13:55","nodeType":"YulFunctionCall","src":"25473:13:55"},"variableNames":[{"name":"value","nativeSrc":"25464:5:55","nodeType":"YulIdentifier","src":"25464:5:55"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"25522:5:55","nodeType":"YulIdentifier","src":"25522:5:55"}],"functionName":{"name":"validator_revert_t_uint256","nativeSrc":"25495:26:55","nodeType":"YulIdentifier","src":"25495:26:55"},"nativeSrc":"25495:33:55","nodeType":"YulFunctionCall","src":"25495:33:55"},"nativeSrc":"25495:33:55","nodeType":"YulExpressionStatement","src":"25495:33:55"}]},"name":"abi_decode_t_uint256_fromMemory","nativeSrc":"25391:143:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"25432:6:55","nodeType":"YulTypedName","src":"25432:6:55","type":""},{"name":"end","nativeSrc":"25440:3:55","nodeType":"YulTypedName","src":"25440:3:55","type":""}],"returnVariables":[{"name":"value","nativeSrc":"25448:5:55","nodeType":"YulTypedName","src":"25448:5:55","type":""}],"src":"25391:143:55"},{"body":{"nativeSrc":"25645:546:55","nodeType":"YulBlock","src":"25645:546:55","statements":[{"body":{"nativeSrc":"25691:83:55","nodeType":"YulBlock","src":"25691:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"25693:77:55","nodeType":"YulIdentifier","src":"25693:77:55"},"nativeSrc":"25693:79:55","nodeType":"YulFunctionCall","src":"25693:79:55"},"nativeSrc":"25693:79:55","nodeType":"YulExpressionStatement","src":"25693:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"25666:7:55","nodeType":"YulIdentifier","src":"25666:7:55"},{"name":"headStart","nativeSrc":"25675:9:55","nodeType":"YulIdentifier","src":"25675:9:55"}],"functionName":{"name":"sub","nativeSrc":"25662:3:55","nodeType":"YulIdentifier","src":"25662:3:55"},"nativeSrc":"25662:23:55","nodeType":"YulFunctionCall","src":"25662:23:55"},{"kind":"number","nativeSrc":"25687:2:55","nodeType":"YulLiteral","src":"25687:2:55","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"25658:3:55","nodeType":"YulIdentifier","src":"25658:3:55"},"nativeSrc":"25658:32:55","nodeType":"YulFunctionCall","src":"25658:32:55"},"nativeSrc":"25655:119:55","nodeType":"YulIf","src":"25655:119:55"},{"nativeSrc":"25784:125:55","nodeType":"YulBlock","src":"25784:125:55","statements":[{"nativeSrc":"25799:15:55","nodeType":"YulVariableDeclaration","src":"25799:15:55","value":{"kind":"number","nativeSrc":"25813:1:55","nodeType":"YulLiteral","src":"25813:1:55","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"25803:6:55","nodeType":"YulTypedName","src":"25803:6:55","type":""}]},{"nativeSrc":"25828:71:55","nodeType":"YulAssignment","src":"25828:71:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"25871:9:55","nodeType":"YulIdentifier","src":"25871:9:55"},{"name":"offset","nativeSrc":"25882:6:55","nodeType":"YulIdentifier","src":"25882:6:55"}],"functionName":{"name":"add","nativeSrc":"25867:3:55","nodeType":"YulIdentifier","src":"25867:3:55"},"nativeSrc":"25867:22:55","nodeType":"YulFunctionCall","src":"25867:22:55"},{"name":"dataEnd","nativeSrc":"25891:7:55","nodeType":"YulIdentifier","src":"25891:7:55"}],"functionName":{"name":"abi_decode_t_bool_fromMemory","nativeSrc":"25838:28:55","nodeType":"YulIdentifier","src":"25838:28:55"},"nativeSrc":"25838:61:55","nodeType":"YulFunctionCall","src":"25838:61:55"},"variableNames":[{"name":"value0","nativeSrc":"25828:6:55","nodeType":"YulIdentifier","src":"25828:6:55"}]}]},{"nativeSrc":"25919:129:55","nodeType":"YulBlock","src":"25919:129:55","statements":[{"nativeSrc":"25934:16:55","nodeType":"YulVariableDeclaration","src":"25934:16:55","value":{"kind":"number","nativeSrc":"25948:2:55","nodeType":"YulLiteral","src":"25948:2:55","type":"","value":"32"},"variables":[{"name":"offset","nativeSrc":"25938:6:55","nodeType":"YulTypedName","src":"25938:6:55","type":""}]},{"nativeSrc":"25964:74:55","nodeType":"YulAssignment","src":"25964:74:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"26010:9:55","nodeType":"YulIdentifier","src":"26010:9:55"},{"name":"offset","nativeSrc":"26021:6:55","nodeType":"YulIdentifier","src":"26021:6:55"}],"functionName":{"name":"add","nativeSrc":"26006:3:55","nodeType":"YulIdentifier","src":"26006:3:55"},"nativeSrc":"26006:22:55","nodeType":"YulFunctionCall","src":"26006:22:55"},{"name":"dataEnd","nativeSrc":"26030:7:55","nodeType":"YulIdentifier","src":"26030:7:55"}],"functionName":{"name":"abi_decode_t_uint256_fromMemory","nativeSrc":"25974:31:55","nodeType":"YulIdentifier","src":"25974:31:55"},"nativeSrc":"25974:64:55","nodeType":"YulFunctionCall","src":"25974:64:55"},"variableNames":[{"name":"value1","nativeSrc":"25964:6:55","nodeType":"YulIdentifier","src":"25964:6:55"}]}]},{"nativeSrc":"26058:126:55","nodeType":"YulBlock","src":"26058:126:55","statements":[{"nativeSrc":"26073:16:55","nodeType":"YulVariableDeclaration","src":"26073:16:55","value":{"kind":"number","nativeSrc":"26087:2:55","nodeType":"YulLiteral","src":"26087:2:55","type":"","value":"64"},"variables":[{"name":"offset","nativeSrc":"26077:6:55","nodeType":"YulTypedName","src":"26077:6:55","type":""}]},{"nativeSrc":"26103:71:55","nodeType":"YulAssignment","src":"26103:71:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"26146:9:55","nodeType":"YulIdentifier","src":"26146:9:55"},{"name":"offset","nativeSrc":"26157:6:55","nodeType":"YulIdentifier","src":"26157:6:55"}],"functionName":{"name":"add","nativeSrc":"26142:3:55","nodeType":"YulIdentifier","src":"26142:3:55"},"nativeSrc":"26142:22:55","nodeType":"YulFunctionCall","src":"26142:22:55"},{"name":"dataEnd","nativeSrc":"26166:7:55","nodeType":"YulIdentifier","src":"26166:7:55"}],"functionName":{"name":"abi_decode_t_bool_fromMemory","nativeSrc":"26113:28:55","nodeType":"YulIdentifier","src":"26113:28:55"},"nativeSrc":"26113:61:55","nodeType":"YulFunctionCall","src":"26113:61:55"},"variableNames":[{"name":"value2","nativeSrc":"26103:6:55","nodeType":"YulIdentifier","src":"26103:6:55"}]}]}]},"name":"abi_decode_tuple_t_boolt_uint256t_bool_fromMemory","nativeSrc":"25540:651:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"25599:9:55","nodeType":"YulTypedName","src":"25599:9:55","type":""},{"name":"dataEnd","nativeSrc":"25610:7:55","nodeType":"YulTypedName","src":"25610:7:55","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"25622:6:55","nodeType":"YulTypedName","src":"25622:6:55","type":""},{"name":"value1","nativeSrc":"25630:6:55","nodeType":"YulTypedName","src":"25630:6:55","type":""},{"name":"value2","nativeSrc":"25638:6:55","nodeType":"YulTypedName","src":"25638:6:55","type":""}],"src":"25540:651:55"},{"body":{"nativeSrc":"26323:206:55","nodeType":"YulBlock","src":"26323:206:55","statements":[{"nativeSrc":"26333:26:55","nodeType":"YulAssignment","src":"26333:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"26345:9:55","nodeType":"YulIdentifier","src":"26345:9:55"},{"kind":"number","nativeSrc":"26356:2:55","nodeType":"YulLiteral","src":"26356:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"26341:3:55","nodeType":"YulIdentifier","src":"26341:3:55"},"nativeSrc":"26341:18:55","nodeType":"YulFunctionCall","src":"26341:18:55"},"variableNames":[{"name":"tail","nativeSrc":"26333:4:55","nodeType":"YulIdentifier","src":"26333:4:55"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"26413:6:55","nodeType":"YulIdentifier","src":"26413:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"26426:9:55","nodeType":"YulIdentifier","src":"26426:9:55"},{"kind":"number","nativeSrc":"26437:1:55","nodeType":"YulLiteral","src":"26437:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"26422:3:55","nodeType":"YulIdentifier","src":"26422:3:55"},"nativeSrc":"26422:17:55","nodeType":"YulFunctionCall","src":"26422:17:55"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"26369:43:55","nodeType":"YulIdentifier","src":"26369:43:55"},"nativeSrc":"26369:71:55","nodeType":"YulFunctionCall","src":"26369:71:55"},"nativeSrc":"26369:71:55","nodeType":"YulExpressionStatement","src":"26369:71:55"},{"expression":{"arguments":[{"name":"value1","nativeSrc":"26494:6:55","nodeType":"YulIdentifier","src":"26494:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"26507:9:55","nodeType":"YulIdentifier","src":"26507:9:55"},{"kind":"number","nativeSrc":"26518:2:55","nodeType":"YulLiteral","src":"26518:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"26503:3:55","nodeType":"YulIdentifier","src":"26503:3:55"},"nativeSrc":"26503:18:55","nodeType":"YulFunctionCall","src":"26503:18:55"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"26450:43:55","nodeType":"YulIdentifier","src":"26450:43:55"},"nativeSrc":"26450:72:55","nodeType":"YulFunctionCall","src":"26450:72:55"},"nativeSrc":"26450:72:55","nodeType":"YulExpressionStatement","src":"26450:72:55"}]},"name":"abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed","nativeSrc":"26197:332:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"26287:9:55","nodeType":"YulTypedName","src":"26287:9:55","type":""},{"name":"value1","nativeSrc":"26299:6:55","nodeType":"YulTypedName","src":"26299:6:55","type":""},{"name":"value0","nativeSrc":"26307:6:55","nodeType":"YulTypedName","src":"26307:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"26318:4:55","nodeType":"YulTypedName","src":"26318:4:55","type":""}],"src":"26197:332:55"},{"body":{"nativeSrc":"26609:271:55","nodeType":"YulBlock","src":"26609:271:55","statements":[{"body":{"nativeSrc":"26655:83:55","nodeType":"YulBlock","src":"26655:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"26657:77:55","nodeType":"YulIdentifier","src":"26657:77:55"},"nativeSrc":"26657:79:55","nodeType":"YulFunctionCall","src":"26657:79:55"},"nativeSrc":"26657:79:55","nodeType":"YulExpressionStatement","src":"26657:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"26630:7:55","nodeType":"YulIdentifier","src":"26630:7:55"},{"name":"headStart","nativeSrc":"26639:9:55","nodeType":"YulIdentifier","src":"26639:9:55"}],"functionName":{"name":"sub","nativeSrc":"26626:3:55","nodeType":"YulIdentifier","src":"26626:3:55"},"nativeSrc":"26626:23:55","nodeType":"YulFunctionCall","src":"26626:23:55"},{"kind":"number","nativeSrc":"26651:2:55","nodeType":"YulLiteral","src":"26651:2:55","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"26622:3:55","nodeType":"YulIdentifier","src":"26622:3:55"},"nativeSrc":"26622:32:55","nodeType":"YulFunctionCall","src":"26622:32:55"},"nativeSrc":"26619:119:55","nodeType":"YulIf","src":"26619:119:55"},{"nativeSrc":"26748:125:55","nodeType":"YulBlock","src":"26748:125:55","statements":[{"nativeSrc":"26763:15:55","nodeType":"YulVariableDeclaration","src":"26763:15:55","value":{"kind":"number","nativeSrc":"26777:1:55","nodeType":"YulLiteral","src":"26777:1:55","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"26767:6:55","nodeType":"YulTypedName","src":"26767:6:55","type":""}]},{"nativeSrc":"26792:71:55","nodeType":"YulAssignment","src":"26792:71:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"26835:9:55","nodeType":"YulIdentifier","src":"26835:9:55"},{"name":"offset","nativeSrc":"26846:6:55","nodeType":"YulIdentifier","src":"26846:6:55"}],"functionName":{"name":"add","nativeSrc":"26831:3:55","nodeType":"YulIdentifier","src":"26831:3:55"},"nativeSrc":"26831:22:55","nodeType":"YulFunctionCall","src":"26831:22:55"},{"name":"dataEnd","nativeSrc":"26855:7:55","nodeType":"YulIdentifier","src":"26855:7:55"}],"functionName":{"name":"abi_decode_t_bool_fromMemory","nativeSrc":"26802:28:55","nodeType":"YulIdentifier","src":"26802:28:55"},"nativeSrc":"26802:61:55","nodeType":"YulFunctionCall","src":"26802:61:55"},"variableNames":[{"name":"value0","nativeSrc":"26792:6:55","nodeType":"YulIdentifier","src":"26792:6:55"}]}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nativeSrc":"26535:345:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"26579:9:55","nodeType":"YulTypedName","src":"26579:9:55","type":""},{"name":"dataEnd","nativeSrc":"26590:7:55","nodeType":"YulTypedName","src":"26590:7:55","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"26602:6:55","nodeType":"YulTypedName","src":"26602:6:55","type":""}],"src":"26535:345:55"},{"body":{"nativeSrc":"26963:274:55","nodeType":"YulBlock","src":"26963:274:55","statements":[{"body":{"nativeSrc":"27009:83:55","nodeType":"YulBlock","src":"27009:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"27011:77:55","nodeType":"YulIdentifier","src":"27011:77:55"},"nativeSrc":"27011:79:55","nodeType":"YulFunctionCall","src":"27011:79:55"},"nativeSrc":"27011:79:55","nodeType":"YulExpressionStatement","src":"27011:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"26984:7:55","nodeType":"YulIdentifier","src":"26984:7:55"},{"name":"headStart","nativeSrc":"26993:9:55","nodeType":"YulIdentifier","src":"26993:9:55"}],"functionName":{"name":"sub","nativeSrc":"26980:3:55","nodeType":"YulIdentifier","src":"26980:3:55"},"nativeSrc":"26980:23:55","nodeType":"YulFunctionCall","src":"26980:23:55"},{"kind":"number","nativeSrc":"27005:2:55","nodeType":"YulLiteral","src":"27005:2:55","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"26976:3:55","nodeType":"YulIdentifier","src":"26976:3:55"},"nativeSrc":"26976:32:55","nodeType":"YulFunctionCall","src":"26976:32:55"},"nativeSrc":"26973:119:55","nodeType":"YulIf","src":"26973:119:55"},{"nativeSrc":"27102:128:55","nodeType":"YulBlock","src":"27102:128:55","statements":[{"nativeSrc":"27117:15:55","nodeType":"YulVariableDeclaration","src":"27117:15:55","value":{"kind":"number","nativeSrc":"27131:1:55","nodeType":"YulLiteral","src":"27131:1:55","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"27121:6:55","nodeType":"YulTypedName","src":"27121:6:55","type":""}]},{"nativeSrc":"27146:74:55","nodeType":"YulAssignment","src":"27146:74:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"27192:9:55","nodeType":"YulIdentifier","src":"27192:9:55"},{"name":"offset","nativeSrc":"27203:6:55","nodeType":"YulIdentifier","src":"27203:6:55"}],"functionName":{"name":"add","nativeSrc":"27188:3:55","nodeType":"YulIdentifier","src":"27188:3:55"},"nativeSrc":"27188:22:55","nodeType":"YulFunctionCall","src":"27188:22:55"},{"name":"dataEnd","nativeSrc":"27212:7:55","nodeType":"YulIdentifier","src":"27212:7:55"}],"functionName":{"name":"abi_decode_t_uint256_fromMemory","nativeSrc":"27156:31:55","nodeType":"YulIdentifier","src":"27156:31:55"},"nativeSrc":"27156:64:55","nodeType":"YulFunctionCall","src":"27156:64:55"},"variableNames":[{"name":"value0","nativeSrc":"27146:6:55","nodeType":"YulIdentifier","src":"27146:6:55"}]}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nativeSrc":"26886:351:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"26933:9:55","nodeType":"YulTypedName","src":"26933:9:55","type":""},{"name":"dataEnd","nativeSrc":"26944:7:55","nodeType":"YulTypedName","src":"26944:7:55","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"26956:6:55","nodeType":"YulTypedName","src":"26956:6:55","type":""}],"src":"26886:351:55"},{"body":{"nativeSrc":"27385:222:55","nodeType":"YulBlock","src":"27385:222:55","statements":[{"nativeSrc":"27395:26:55","nodeType":"YulAssignment","src":"27395:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"27407:9:55","nodeType":"YulIdentifier","src":"27407:9:55"},{"kind":"number","nativeSrc":"27418:2:55","nodeType":"YulLiteral","src":"27418:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"27403:3:55","nodeType":"YulIdentifier","src":"27403:3:55"},"nativeSrc":"27403:18:55","nodeType":"YulFunctionCall","src":"27403:18:55"},"variableNames":[{"name":"tail","nativeSrc":"27395:4:55","nodeType":"YulIdentifier","src":"27395:4:55"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"27475:6:55","nodeType":"YulIdentifier","src":"27475:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"27488:9:55","nodeType":"YulIdentifier","src":"27488:9:55"},{"kind":"number","nativeSrc":"27499:1:55","nodeType":"YulLiteral","src":"27499:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"27484:3:55","nodeType":"YulIdentifier","src":"27484:3:55"},"nativeSrc":"27484:17:55","nodeType":"YulFunctionCall","src":"27484:17:55"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"27431:43:55","nodeType":"YulIdentifier","src":"27431:43:55"},"nativeSrc":"27431:71:55","nodeType":"YulFunctionCall","src":"27431:71:55"},"nativeSrc":"27431:71:55","nodeType":"YulExpressionStatement","src":"27431:71:55"},{"expression":{"arguments":[{"name":"value1","nativeSrc":"27572:6:55","nodeType":"YulIdentifier","src":"27572:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"27585:9:55","nodeType":"YulIdentifier","src":"27585:9:55"},{"kind":"number","nativeSrc":"27596:2:55","nodeType":"YulLiteral","src":"27596:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"27581:3:55","nodeType":"YulIdentifier","src":"27581:3:55"},"nativeSrc":"27581:18:55","nodeType":"YulFunctionCall","src":"27581:18:55"}],"functionName":{"name":"abi_encode_t_contract$_IVToken_$5277_to_t_address_fromStack","nativeSrc":"27512:59:55","nodeType":"YulIdentifier","src":"27512:59:55"},"nativeSrc":"27512:88:55","nodeType":"YulFunctionCall","src":"27512:88:55"},"nativeSrc":"27512:88:55","nodeType":"YulExpressionStatement","src":"27512:88:55"}]},"name":"abi_encode_tuple_t_address_t_contract$_IVToken_$5277__to_t_address_t_address__fromStack_reversed","nativeSrc":"27243:364:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"27349:9:55","nodeType":"YulTypedName","src":"27349:9:55","type":""},{"name":"value1","nativeSrc":"27361:6:55","nodeType":"YulTypedName","src":"27361:6:55","type":""},{"name":"value0","nativeSrc":"27369:6:55","nodeType":"YulTypedName","src":"27369:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"27380:4:55","nodeType":"YulTypedName","src":"27380:4:55","type":""}],"src":"27243:364:55"},{"body":{"nativeSrc":"27724:552:55","nodeType":"YulBlock","src":"27724:552:55","statements":[{"body":{"nativeSrc":"27770:83:55","nodeType":"YulBlock","src":"27770:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"27772:77:55","nodeType":"YulIdentifier","src":"27772:77:55"},"nativeSrc":"27772:79:55","nodeType":"YulFunctionCall","src":"27772:79:55"},"nativeSrc":"27772:79:55","nodeType":"YulExpressionStatement","src":"27772:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"27745:7:55","nodeType":"YulIdentifier","src":"27745:7:55"},{"name":"headStart","nativeSrc":"27754:9:55","nodeType":"YulIdentifier","src":"27754:9:55"}],"functionName":{"name":"sub","nativeSrc":"27741:3:55","nodeType":"YulIdentifier","src":"27741:3:55"},"nativeSrc":"27741:23:55","nodeType":"YulFunctionCall","src":"27741:23:55"},{"kind":"number","nativeSrc":"27766:2:55","nodeType":"YulLiteral","src":"27766:2:55","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"27737:3:55","nodeType":"YulIdentifier","src":"27737:3:55"},"nativeSrc":"27737:32:55","nodeType":"YulFunctionCall","src":"27737:32:55"},"nativeSrc":"27734:119:55","nodeType":"YulIf","src":"27734:119:55"},{"nativeSrc":"27863:128:55","nodeType":"YulBlock","src":"27863:128:55","statements":[{"nativeSrc":"27878:15:55","nodeType":"YulVariableDeclaration","src":"27878:15:55","value":{"kind":"number","nativeSrc":"27892:1:55","nodeType":"YulLiteral","src":"27892:1:55","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"27882:6:55","nodeType":"YulTypedName","src":"27882:6:55","type":""}]},{"nativeSrc":"27907:74:55","nodeType":"YulAssignment","src":"27907:74:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"27953:9:55","nodeType":"YulIdentifier","src":"27953:9:55"},{"name":"offset","nativeSrc":"27964:6:55","nodeType":"YulIdentifier","src":"27964:6:55"}],"functionName":{"name":"add","nativeSrc":"27949:3:55","nodeType":"YulIdentifier","src":"27949:3:55"},"nativeSrc":"27949:22:55","nodeType":"YulFunctionCall","src":"27949:22:55"},{"name":"dataEnd","nativeSrc":"27973:7:55","nodeType":"YulIdentifier","src":"27973:7:55"}],"functionName":{"name":"abi_decode_t_uint256_fromMemory","nativeSrc":"27917:31:55","nodeType":"YulIdentifier","src":"27917:31:55"},"nativeSrc":"27917:64:55","nodeType":"YulFunctionCall","src":"27917:64:55"},"variableNames":[{"name":"value0","nativeSrc":"27907:6:55","nodeType":"YulIdentifier","src":"27907:6:55"}]}]},{"nativeSrc":"28001:129:55","nodeType":"YulBlock","src":"28001:129:55","statements":[{"nativeSrc":"28016:16:55","nodeType":"YulVariableDeclaration","src":"28016:16:55","value":{"kind":"number","nativeSrc":"28030:2:55","nodeType":"YulLiteral","src":"28030:2:55","type":"","value":"32"},"variables":[{"name":"offset","nativeSrc":"28020:6:55","nodeType":"YulTypedName","src":"28020:6:55","type":""}]},{"nativeSrc":"28046:74:55","nodeType":"YulAssignment","src":"28046:74:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"28092:9:55","nodeType":"YulIdentifier","src":"28092:9:55"},{"name":"offset","nativeSrc":"28103:6:55","nodeType":"YulIdentifier","src":"28103:6:55"}],"functionName":{"name":"add","nativeSrc":"28088:3:55","nodeType":"YulIdentifier","src":"28088:3:55"},"nativeSrc":"28088:22:55","nodeType":"YulFunctionCall","src":"28088:22:55"},{"name":"dataEnd","nativeSrc":"28112:7:55","nodeType":"YulIdentifier","src":"28112:7:55"}],"functionName":{"name":"abi_decode_t_uint256_fromMemory","nativeSrc":"28056:31:55","nodeType":"YulIdentifier","src":"28056:31:55"},"nativeSrc":"28056:64:55","nodeType":"YulFunctionCall","src":"28056:64:55"},"variableNames":[{"name":"value1","nativeSrc":"28046:6:55","nodeType":"YulIdentifier","src":"28046:6:55"}]}]},{"nativeSrc":"28140:129:55","nodeType":"YulBlock","src":"28140:129:55","statements":[{"nativeSrc":"28155:16:55","nodeType":"YulVariableDeclaration","src":"28155:16:55","value":{"kind":"number","nativeSrc":"28169:2:55","nodeType":"YulLiteral","src":"28169:2:55","type":"","value":"64"},"variables":[{"name":"offset","nativeSrc":"28159:6:55","nodeType":"YulTypedName","src":"28159:6:55","type":""}]},{"nativeSrc":"28185:74:55","nodeType":"YulAssignment","src":"28185:74:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"28231:9:55","nodeType":"YulIdentifier","src":"28231:9:55"},{"name":"offset","nativeSrc":"28242:6:55","nodeType":"YulIdentifier","src":"28242:6:55"}],"functionName":{"name":"add","nativeSrc":"28227:3:55","nodeType":"YulIdentifier","src":"28227:3:55"},"nativeSrc":"28227:22:55","nodeType":"YulFunctionCall","src":"28227:22:55"},{"name":"dataEnd","nativeSrc":"28251:7:55","nodeType":"YulIdentifier","src":"28251:7:55"}],"functionName":{"name":"abi_decode_t_uint256_fromMemory","nativeSrc":"28195:31:55","nodeType":"YulIdentifier","src":"28195:31:55"},"nativeSrc":"28195:64:55","nodeType":"YulFunctionCall","src":"28195:64:55"},"variableNames":[{"name":"value2","nativeSrc":"28185:6:55","nodeType":"YulIdentifier","src":"28185:6:55"}]}]}]},"name":"abi_decode_tuple_t_uint256t_uint256t_uint256_fromMemory","nativeSrc":"27613:663:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"27678:9:55","nodeType":"YulTypedName","src":"27678:9:55","type":""},{"name":"dataEnd","nativeSrc":"27689:7:55","nodeType":"YulTypedName","src":"27689:7:55","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"27701:6:55","nodeType":"YulTypedName","src":"27701:6:55","type":""},{"name":"value1","nativeSrc":"27709:6:55","nodeType":"YulTypedName","src":"27709:6:55","type":""},{"name":"value2","nativeSrc":"27717:6:55","nodeType":"YulTypedName","src":"27717:6:55","type":""}],"src":"27613:663:55"},{"body":{"nativeSrc":"28345:80:55","nodeType":"YulBlock","src":"28345:80:55","statements":[{"nativeSrc":"28355:22:55","nodeType":"YulAssignment","src":"28355:22:55","value":{"arguments":[{"name":"offset","nativeSrc":"28370:6:55","nodeType":"YulIdentifier","src":"28370:6:55"}],"functionName":{"name":"mload","nativeSrc":"28364:5:55","nodeType":"YulIdentifier","src":"28364:5:55"},"nativeSrc":"28364:13:55","nodeType":"YulFunctionCall","src":"28364:13:55"},"variableNames":[{"name":"value","nativeSrc":"28355:5:55","nodeType":"YulIdentifier","src":"28355:5:55"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"28413:5:55","nodeType":"YulIdentifier","src":"28413:5:55"}],"functionName":{"name":"validator_revert_t_address","nativeSrc":"28386:26:55","nodeType":"YulIdentifier","src":"28386:26:55"},"nativeSrc":"28386:33:55","nodeType":"YulFunctionCall","src":"28386:33:55"},"nativeSrc":"28386:33:55","nodeType":"YulExpressionStatement","src":"28386:33:55"}]},"name":"abi_decode_t_address_fromMemory","nativeSrc":"28282:143:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"28323:6:55","nodeType":"YulTypedName","src":"28323:6:55","type":""},{"name":"end","nativeSrc":"28331:3:55","nodeType":"YulTypedName","src":"28331:3:55","type":""}],"returnVariables":[{"name":"value","nativeSrc":"28339:5:55","nodeType":"YulTypedName","src":"28339:5:55","type":""}],"src":"28282:143:55"},{"body":{"nativeSrc":"28508:274:55","nodeType":"YulBlock","src":"28508:274:55","statements":[{"body":{"nativeSrc":"28554:83:55","nodeType":"YulBlock","src":"28554:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"28556:77:55","nodeType":"YulIdentifier","src":"28556:77:55"},"nativeSrc":"28556:79:55","nodeType":"YulFunctionCall","src":"28556:79:55"},"nativeSrc":"28556:79:55","nodeType":"YulExpressionStatement","src":"28556:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"28529:7:55","nodeType":"YulIdentifier","src":"28529:7:55"},{"name":"headStart","nativeSrc":"28538:9:55","nodeType":"YulIdentifier","src":"28538:9:55"}],"functionName":{"name":"sub","nativeSrc":"28525:3:55","nodeType":"YulIdentifier","src":"28525:3:55"},"nativeSrc":"28525:23:55","nodeType":"YulFunctionCall","src":"28525:23:55"},{"kind":"number","nativeSrc":"28550:2:55","nodeType":"YulLiteral","src":"28550:2:55","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"28521:3:55","nodeType":"YulIdentifier","src":"28521:3:55"},"nativeSrc":"28521:32:55","nodeType":"YulFunctionCall","src":"28521:32:55"},"nativeSrc":"28518:119:55","nodeType":"YulIf","src":"28518:119:55"},{"nativeSrc":"28647:128:55","nodeType":"YulBlock","src":"28647:128:55","statements":[{"nativeSrc":"28662:15:55","nodeType":"YulVariableDeclaration","src":"28662:15:55","value":{"kind":"number","nativeSrc":"28676:1:55","nodeType":"YulLiteral","src":"28676:1:55","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"28666:6:55","nodeType":"YulTypedName","src":"28666:6:55","type":""}]},{"nativeSrc":"28691:74:55","nodeType":"YulAssignment","src":"28691:74:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"28737:9:55","nodeType":"YulIdentifier","src":"28737:9:55"},{"name":"offset","nativeSrc":"28748:6:55","nodeType":"YulIdentifier","src":"28748:6:55"}],"functionName":{"name":"add","nativeSrc":"28733:3:55","nodeType":"YulIdentifier","src":"28733:3:55"},"nativeSrc":"28733:22:55","nodeType":"YulFunctionCall","src":"28733:22:55"},{"name":"dataEnd","nativeSrc":"28757:7:55","nodeType":"YulIdentifier","src":"28757:7:55"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nativeSrc":"28701:31:55","nodeType":"YulIdentifier","src":"28701:31:55"},"nativeSrc":"28701:64:55","nodeType":"YulFunctionCall","src":"28701:64:55"},"variableNames":[{"name":"value0","nativeSrc":"28691:6:55","nodeType":"YulIdentifier","src":"28691:6:55"}]}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nativeSrc":"28431:351:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"28478:9:55","nodeType":"YulTypedName","src":"28478:9:55","type":""},{"name":"dataEnd","nativeSrc":"28489:7:55","nodeType":"YulTypedName","src":"28489:7:55","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"28501:6:55","nodeType":"YulTypedName","src":"28501:6:55","type":""}],"src":"28431:351:55"},{"body":{"nativeSrc":"28894:76:55","nodeType":"YulBlock","src":"28894:76:55","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"28916:6:55","nodeType":"YulIdentifier","src":"28916:6:55"},{"kind":"number","nativeSrc":"28924:1:55","nodeType":"YulLiteral","src":"28924:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"28912:3:55","nodeType":"YulIdentifier","src":"28912:3:55"},"nativeSrc":"28912:14:55","nodeType":"YulFunctionCall","src":"28912:14:55"},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","kind":"string","nativeSrc":"28928:34:55","nodeType":"YulLiteral","src":"28928:34:55","type":"","value":"Ownable: caller is not the owner"}],"functionName":{"name":"mstore","nativeSrc":"28905:6:55","nodeType":"YulIdentifier","src":"28905:6:55"},"nativeSrc":"28905:58:55","nodeType":"YulFunctionCall","src":"28905:58:55"},"nativeSrc":"28905:58:55","nodeType":"YulExpressionStatement","src":"28905:58:55"}]},"name":"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","nativeSrc":"28788:182:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"28886:6:55","nodeType":"YulTypedName","src":"28886:6:55","type":""}],"src":"28788:182:55"},{"body":{"nativeSrc":"29122:220:55","nodeType":"YulBlock","src":"29122:220:55","statements":[{"nativeSrc":"29132:74:55","nodeType":"YulAssignment","src":"29132:74:55","value":{"arguments":[{"name":"pos","nativeSrc":"29198:3:55","nodeType":"YulIdentifier","src":"29198:3:55"},{"kind":"number","nativeSrc":"29203:2:55","nodeType":"YulLiteral","src":"29203:2:55","type":"","value":"32"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"29139:58:55","nodeType":"YulIdentifier","src":"29139:58:55"},"nativeSrc":"29139:67:55","nodeType":"YulFunctionCall","src":"29139:67:55"},"variableNames":[{"name":"pos","nativeSrc":"29132:3:55","nodeType":"YulIdentifier","src":"29132:3:55"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"29304:3:55","nodeType":"YulIdentifier","src":"29304:3:55"}],"functionName":{"name":"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","nativeSrc":"29215:88:55","nodeType":"YulIdentifier","src":"29215:88:55"},"nativeSrc":"29215:93:55","nodeType":"YulFunctionCall","src":"29215:93:55"},"nativeSrc":"29215:93:55","nodeType":"YulExpressionStatement","src":"29215:93:55"},{"nativeSrc":"29317:19:55","nodeType":"YulAssignment","src":"29317:19:55","value":{"arguments":[{"name":"pos","nativeSrc":"29328:3:55","nodeType":"YulIdentifier","src":"29328:3:55"},{"kind":"number","nativeSrc":"29333:2:55","nodeType":"YulLiteral","src":"29333:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"29324:3:55","nodeType":"YulIdentifier","src":"29324:3:55"},"nativeSrc":"29324:12:55","nodeType":"YulFunctionCall","src":"29324:12:55"},"variableNames":[{"name":"end","nativeSrc":"29317:3:55","nodeType":"YulIdentifier","src":"29317:3:55"}]}]},"name":"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack","nativeSrc":"28976:366:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"29110:3:55","nodeType":"YulTypedName","src":"29110:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"29118:3:55","nodeType":"YulTypedName","src":"29118:3:55","type":""}],"src":"28976:366:55"},{"body":{"nativeSrc":"29519:248:55","nodeType":"YulBlock","src":"29519:248:55","statements":[{"nativeSrc":"29529:26:55","nodeType":"YulAssignment","src":"29529:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"29541:9:55","nodeType":"YulIdentifier","src":"29541:9:55"},{"kind":"number","nativeSrc":"29552:2:55","nodeType":"YulLiteral","src":"29552:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"29537:3:55","nodeType":"YulIdentifier","src":"29537:3:55"},"nativeSrc":"29537:18:55","nodeType":"YulFunctionCall","src":"29537:18:55"},"variableNames":[{"name":"tail","nativeSrc":"29529:4:55","nodeType":"YulIdentifier","src":"29529:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"29576:9:55","nodeType":"YulIdentifier","src":"29576:9:55"},{"kind":"number","nativeSrc":"29587:1:55","nodeType":"YulLiteral","src":"29587:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"29572:3:55","nodeType":"YulIdentifier","src":"29572:3:55"},"nativeSrc":"29572:17:55","nodeType":"YulFunctionCall","src":"29572:17:55"},{"arguments":[{"name":"tail","nativeSrc":"29595:4:55","nodeType":"YulIdentifier","src":"29595:4:55"},{"name":"headStart","nativeSrc":"29601:9:55","nodeType":"YulIdentifier","src":"29601:9:55"}],"functionName":{"name":"sub","nativeSrc":"29591:3:55","nodeType":"YulIdentifier","src":"29591:3:55"},"nativeSrc":"29591:20:55","nodeType":"YulFunctionCall","src":"29591:20:55"}],"functionName":{"name":"mstore","nativeSrc":"29565:6:55","nodeType":"YulIdentifier","src":"29565:6:55"},"nativeSrc":"29565:47:55","nodeType":"YulFunctionCall","src":"29565:47:55"},"nativeSrc":"29565:47:55","nodeType":"YulExpressionStatement","src":"29565:47:55"},{"nativeSrc":"29621:139:55","nodeType":"YulAssignment","src":"29621:139:55","value":{"arguments":[{"name":"tail","nativeSrc":"29755:4:55","nodeType":"YulIdentifier","src":"29755:4:55"}],"functionName":{"name":"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack","nativeSrc":"29629:124:55","nodeType":"YulIdentifier","src":"29629:124:55"},"nativeSrc":"29629:131:55","nodeType":"YulFunctionCall","src":"29629:131:55"},"variableNames":[{"name":"tail","nativeSrc":"29621:4:55","nodeType":"YulIdentifier","src":"29621:4:55"}]}]},"name":"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"29348:419:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"29499:9:55","nodeType":"YulTypedName","src":"29499:9:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"29514:4:55","nodeType":"YulTypedName","src":"29514:4:55","type":""}],"src":"29348:419:55"},{"body":{"nativeSrc":"29879:124:55","nodeType":"YulBlock","src":"29879:124:55","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"29901:6:55","nodeType":"YulIdentifier","src":"29901:6:55"},{"kind":"number","nativeSrc":"29909:1:55","nodeType":"YulLiteral","src":"29909:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"29897:3:55","nodeType":"YulIdentifier","src":"29897:3:55"},"nativeSrc":"29897:14:55","nodeType":"YulFunctionCall","src":"29897:14:55"},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069","kind":"string","nativeSrc":"29913:34:55","nodeType":"YulLiteral","src":"29913:34:55","type":"","value":"Initializable: contract is not i"}],"functionName":{"name":"mstore","nativeSrc":"29890:6:55","nodeType":"YulIdentifier","src":"29890:6:55"},"nativeSrc":"29890:58:55","nodeType":"YulFunctionCall","src":"29890:58:55"},"nativeSrc":"29890:58:55","nodeType":"YulExpressionStatement","src":"29890:58:55"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"29969:6:55","nodeType":"YulIdentifier","src":"29969:6:55"},{"kind":"number","nativeSrc":"29977:2:55","nodeType":"YulLiteral","src":"29977:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"29965:3:55","nodeType":"YulIdentifier","src":"29965:3:55"},"nativeSrc":"29965:15:55","nodeType":"YulFunctionCall","src":"29965:15:55"},{"hexValue":"6e697469616c697a696e67","kind":"string","nativeSrc":"29982:13:55","nodeType":"YulLiteral","src":"29982:13:55","type":"","value":"nitializing"}],"functionName":{"name":"mstore","nativeSrc":"29958:6:55","nodeType":"YulIdentifier","src":"29958:6:55"},"nativeSrc":"29958:38:55","nodeType":"YulFunctionCall","src":"29958:38:55"},"nativeSrc":"29958:38:55","nodeType":"YulExpressionStatement","src":"29958:38:55"}]},"name":"store_literal_in_memory_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b","nativeSrc":"29773:230:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"29871:6:55","nodeType":"YulTypedName","src":"29871:6:55","type":""}],"src":"29773:230:55"},{"body":{"nativeSrc":"30155:220:55","nodeType":"YulBlock","src":"30155:220:55","statements":[{"nativeSrc":"30165:74:55","nodeType":"YulAssignment","src":"30165:74:55","value":{"arguments":[{"name":"pos","nativeSrc":"30231:3:55","nodeType":"YulIdentifier","src":"30231:3:55"},{"kind":"number","nativeSrc":"30236:2:55","nodeType":"YulLiteral","src":"30236:2:55","type":"","value":"43"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"30172:58:55","nodeType":"YulIdentifier","src":"30172:58:55"},"nativeSrc":"30172:67:55","nodeType":"YulFunctionCall","src":"30172:67:55"},"variableNames":[{"name":"pos","nativeSrc":"30165:3:55","nodeType":"YulIdentifier","src":"30165:3:55"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"30337:3:55","nodeType":"YulIdentifier","src":"30337:3:55"}],"functionName":{"name":"store_literal_in_memory_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b","nativeSrc":"30248:88:55","nodeType":"YulIdentifier","src":"30248:88:55"},"nativeSrc":"30248:93:55","nodeType":"YulFunctionCall","src":"30248:93:55"},"nativeSrc":"30248:93:55","nodeType":"YulExpressionStatement","src":"30248:93:55"},{"nativeSrc":"30350:19:55","nodeType":"YulAssignment","src":"30350:19:55","value":{"arguments":[{"name":"pos","nativeSrc":"30361:3:55","nodeType":"YulIdentifier","src":"30361:3:55"},{"kind":"number","nativeSrc":"30366:2:55","nodeType":"YulLiteral","src":"30366:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"30357:3:55","nodeType":"YulIdentifier","src":"30357:3:55"},"nativeSrc":"30357:12:55","nodeType":"YulFunctionCall","src":"30357:12:55"},"variableNames":[{"name":"end","nativeSrc":"30350:3:55","nodeType":"YulIdentifier","src":"30350:3:55"}]}]},"name":"abi_encode_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b_to_t_string_memory_ptr_fromStack","nativeSrc":"30009:366:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"30143:3:55","nodeType":"YulTypedName","src":"30143:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"30151:3:55","nodeType":"YulTypedName","src":"30151:3:55","type":""}],"src":"30009:366:55"},{"body":{"nativeSrc":"30552:248:55","nodeType":"YulBlock","src":"30552:248:55","statements":[{"nativeSrc":"30562:26:55","nodeType":"YulAssignment","src":"30562:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"30574:9:55","nodeType":"YulIdentifier","src":"30574:9:55"},{"kind":"number","nativeSrc":"30585:2:55","nodeType":"YulLiteral","src":"30585:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"30570:3:55","nodeType":"YulIdentifier","src":"30570:3:55"},"nativeSrc":"30570:18:55","nodeType":"YulFunctionCall","src":"30570:18:55"},"variableNames":[{"name":"tail","nativeSrc":"30562:4:55","nodeType":"YulIdentifier","src":"30562:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"30609:9:55","nodeType":"YulIdentifier","src":"30609:9:55"},{"kind":"number","nativeSrc":"30620:1:55","nodeType":"YulLiteral","src":"30620:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"30605:3:55","nodeType":"YulIdentifier","src":"30605:3:55"},"nativeSrc":"30605:17:55","nodeType":"YulFunctionCall","src":"30605:17:55"},{"arguments":[{"name":"tail","nativeSrc":"30628:4:55","nodeType":"YulIdentifier","src":"30628:4:55"},{"name":"headStart","nativeSrc":"30634:9:55","nodeType":"YulIdentifier","src":"30634:9:55"}],"functionName":{"name":"sub","nativeSrc":"30624:3:55","nodeType":"YulIdentifier","src":"30624:3:55"},"nativeSrc":"30624:20:55","nodeType":"YulFunctionCall","src":"30624:20:55"}],"functionName":{"name":"mstore","nativeSrc":"30598:6:55","nodeType":"YulIdentifier","src":"30598:6:55"},"nativeSrc":"30598:47:55","nodeType":"YulFunctionCall","src":"30598:47:55"},"nativeSrc":"30598:47:55","nodeType":"YulExpressionStatement","src":"30598:47:55"},{"nativeSrc":"30654:139:55","nodeType":"YulAssignment","src":"30654:139:55","value":{"arguments":[{"name":"tail","nativeSrc":"30788:4:55","nodeType":"YulIdentifier","src":"30788:4:55"}],"functionName":{"name":"abi_encode_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b_to_t_string_memory_ptr_fromStack","nativeSrc":"30662:124:55","nodeType":"YulIdentifier","src":"30662:124:55"},"nativeSrc":"30662:131:55","nodeType":"YulFunctionCall","src":"30662:131:55"},"variableNames":[{"name":"tail","nativeSrc":"30654:4:55","nodeType":"YulIdentifier","src":"30654:4:55"}]}]},"name":"abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"30381:419:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"30532:9:55","nodeType":"YulTypedName","src":"30532:9:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"30547:4:55","nodeType":"YulTypedName","src":"30547:4:55","type":""}],"src":"30381:419:55"},{"body":{"nativeSrc":"30912:75:55","nodeType":"YulBlock","src":"30912:75:55","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"30934:6:55","nodeType":"YulIdentifier","src":"30934:6:55"},{"kind":"number","nativeSrc":"30942:1:55","nodeType":"YulLiteral","src":"30942:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"30930:3:55","nodeType":"YulIdentifier","src":"30930:3:55"},"nativeSrc":"30930:14:55","nodeType":"YulFunctionCall","src":"30930:14:55"},{"hexValue":"5265656e7472616e637947756172643a207265656e7472616e742063616c6c","kind":"string","nativeSrc":"30946:33:55","nodeType":"YulLiteral","src":"30946:33:55","type":"","value":"ReentrancyGuard: reentrant call"}],"functionName":{"name":"mstore","nativeSrc":"30923:6:55","nodeType":"YulIdentifier","src":"30923:6:55"},"nativeSrc":"30923:57:55","nodeType":"YulFunctionCall","src":"30923:57:55"},"nativeSrc":"30923:57:55","nodeType":"YulExpressionStatement","src":"30923:57:55"}]},"name":"store_literal_in_memory_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619","nativeSrc":"30806:181:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"30904:6:55","nodeType":"YulTypedName","src":"30904:6:55","type":""}],"src":"30806:181:55"},{"body":{"nativeSrc":"31139:220:55","nodeType":"YulBlock","src":"31139:220:55","statements":[{"nativeSrc":"31149:74:55","nodeType":"YulAssignment","src":"31149:74:55","value":{"arguments":[{"name":"pos","nativeSrc":"31215:3:55","nodeType":"YulIdentifier","src":"31215:3:55"},{"kind":"number","nativeSrc":"31220:2:55","nodeType":"YulLiteral","src":"31220:2:55","type":"","value":"31"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"31156:58:55","nodeType":"YulIdentifier","src":"31156:58:55"},"nativeSrc":"31156:67:55","nodeType":"YulFunctionCall","src":"31156:67:55"},"variableNames":[{"name":"pos","nativeSrc":"31149:3:55","nodeType":"YulIdentifier","src":"31149:3:55"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"31321:3:55","nodeType":"YulIdentifier","src":"31321:3:55"}],"functionName":{"name":"store_literal_in_memory_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619","nativeSrc":"31232:88:55","nodeType":"YulIdentifier","src":"31232:88:55"},"nativeSrc":"31232:93:55","nodeType":"YulFunctionCall","src":"31232:93:55"},"nativeSrc":"31232:93:55","nodeType":"YulExpressionStatement","src":"31232:93:55"},{"nativeSrc":"31334:19:55","nodeType":"YulAssignment","src":"31334:19:55","value":{"arguments":[{"name":"pos","nativeSrc":"31345:3:55","nodeType":"YulIdentifier","src":"31345:3:55"},{"kind":"number","nativeSrc":"31350:2:55","nodeType":"YulLiteral","src":"31350:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"31341:3:55","nodeType":"YulIdentifier","src":"31341:3:55"},"nativeSrc":"31341:12:55","nodeType":"YulFunctionCall","src":"31341:12:55"},"variableNames":[{"name":"end","nativeSrc":"31334:3:55","nodeType":"YulIdentifier","src":"31334:3:55"}]}]},"name":"abi_encode_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619_to_t_string_memory_ptr_fromStack","nativeSrc":"30993:366:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"31127:3:55","nodeType":"YulTypedName","src":"31127:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"31135:3:55","nodeType":"YulTypedName","src":"31135:3:55","type":""}],"src":"30993:366:55"},{"body":{"nativeSrc":"31536:248:55","nodeType":"YulBlock","src":"31536:248:55","statements":[{"nativeSrc":"31546:26:55","nodeType":"YulAssignment","src":"31546:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"31558:9:55","nodeType":"YulIdentifier","src":"31558:9:55"},{"kind":"number","nativeSrc":"31569:2:55","nodeType":"YulLiteral","src":"31569:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"31554:3:55","nodeType":"YulIdentifier","src":"31554:3:55"},"nativeSrc":"31554:18:55","nodeType":"YulFunctionCall","src":"31554:18:55"},"variableNames":[{"name":"tail","nativeSrc":"31546:4:55","nodeType":"YulIdentifier","src":"31546:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"31593:9:55","nodeType":"YulIdentifier","src":"31593:9:55"},{"kind":"number","nativeSrc":"31604:1:55","nodeType":"YulLiteral","src":"31604:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"31589:3:55","nodeType":"YulIdentifier","src":"31589:3:55"},"nativeSrc":"31589:17:55","nodeType":"YulFunctionCall","src":"31589:17:55"},{"arguments":[{"name":"tail","nativeSrc":"31612:4:55","nodeType":"YulIdentifier","src":"31612:4:55"},{"name":"headStart","nativeSrc":"31618:9:55","nodeType":"YulIdentifier","src":"31618:9:55"}],"functionName":{"name":"sub","nativeSrc":"31608:3:55","nodeType":"YulIdentifier","src":"31608:3:55"},"nativeSrc":"31608:20:55","nodeType":"YulFunctionCall","src":"31608:20:55"}],"functionName":{"name":"mstore","nativeSrc":"31582:6:55","nodeType":"YulIdentifier","src":"31582:6:55"},"nativeSrc":"31582:47:55","nodeType":"YulFunctionCall","src":"31582:47:55"},"nativeSrc":"31582:47:55","nodeType":"YulExpressionStatement","src":"31582:47:55"},{"nativeSrc":"31638:139:55","nodeType":"YulAssignment","src":"31638:139:55","value":{"arguments":[{"name":"tail","nativeSrc":"31772:4:55","nodeType":"YulIdentifier","src":"31772:4:55"}],"functionName":{"name":"abi_encode_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619_to_t_string_memory_ptr_fromStack","nativeSrc":"31646:124:55","nodeType":"YulIdentifier","src":"31646:124:55"},"nativeSrc":"31646:131:55","nodeType":"YulFunctionCall","src":"31646:131:55"},"variableNames":[{"name":"tail","nativeSrc":"31638:4:55","nodeType":"YulIdentifier","src":"31638:4:55"}]}]},"name":"abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"31365:419:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"31516:9:55","nodeType":"YulTypedName","src":"31516:9:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"31531:4:55","nodeType":"YulTypedName","src":"31531:4:55","type":""}],"src":"31365:419:55"},{"body":{"nativeSrc":"31818:152:55","nodeType":"YulBlock","src":"31818:152:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"31835:1:55","nodeType":"YulLiteral","src":"31835:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"31838:77:55","nodeType":"YulLiteral","src":"31838:77:55","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"31828:6:55","nodeType":"YulIdentifier","src":"31828:6:55"},"nativeSrc":"31828:88:55","nodeType":"YulFunctionCall","src":"31828:88:55"},"nativeSrc":"31828:88:55","nodeType":"YulExpressionStatement","src":"31828:88:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"31932:1:55","nodeType":"YulLiteral","src":"31932:1:55","type":"","value":"4"},{"kind":"number","nativeSrc":"31935:4:55","nodeType":"YulLiteral","src":"31935:4:55","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"31925:6:55","nodeType":"YulIdentifier","src":"31925:6:55"},"nativeSrc":"31925:15:55","nodeType":"YulFunctionCall","src":"31925:15:55"},"nativeSrc":"31925:15:55","nodeType":"YulExpressionStatement","src":"31925:15:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"31956:1:55","nodeType":"YulLiteral","src":"31956:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"31959:4:55","nodeType":"YulLiteral","src":"31959:4:55","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"31949:6:55","nodeType":"YulIdentifier","src":"31949:6:55"},"nativeSrc":"31949:15:55","nodeType":"YulFunctionCall","src":"31949:15:55"},"nativeSrc":"31949:15:55","nodeType":"YulExpressionStatement","src":"31949:15:55"}]},"name":"panic_error_0x11","nativeSrc":"31790:180:55","nodeType":"YulFunctionDefinition","src":"31790:180:55"},{"body":{"nativeSrc":"32020:147:55","nodeType":"YulBlock","src":"32020:147:55","statements":[{"nativeSrc":"32030:25:55","nodeType":"YulAssignment","src":"32030:25:55","value":{"arguments":[{"name":"x","nativeSrc":"32053:1:55","nodeType":"YulIdentifier","src":"32053:1:55"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"32035:17:55","nodeType":"YulIdentifier","src":"32035:17:55"},"nativeSrc":"32035:20:55","nodeType":"YulFunctionCall","src":"32035:20:55"},"variableNames":[{"name":"x","nativeSrc":"32030:1:55","nodeType":"YulIdentifier","src":"32030:1:55"}]},{"nativeSrc":"32064:25:55","nodeType":"YulAssignment","src":"32064:25:55","value":{"arguments":[{"name":"y","nativeSrc":"32087:1:55","nodeType":"YulIdentifier","src":"32087:1:55"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"32069:17:55","nodeType":"YulIdentifier","src":"32069:17:55"},"nativeSrc":"32069:20:55","nodeType":"YulFunctionCall","src":"32069:20:55"},"variableNames":[{"name":"y","nativeSrc":"32064:1:55","nodeType":"YulIdentifier","src":"32064:1:55"}]},{"nativeSrc":"32098:16:55","nodeType":"YulAssignment","src":"32098:16:55","value":{"arguments":[{"name":"x","nativeSrc":"32109:1:55","nodeType":"YulIdentifier","src":"32109:1:55"},{"name":"y","nativeSrc":"32112:1:55","nodeType":"YulIdentifier","src":"32112:1:55"}],"functionName":{"name":"add","nativeSrc":"32105:3:55","nodeType":"YulIdentifier","src":"32105:3:55"},"nativeSrc":"32105:9:55","nodeType":"YulFunctionCall","src":"32105:9:55"},"variableNames":[{"name":"sum","nativeSrc":"32098:3:55","nodeType":"YulIdentifier","src":"32098:3:55"}]},{"body":{"nativeSrc":"32138:22:55","nodeType":"YulBlock","src":"32138:22:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"32140:16:55","nodeType":"YulIdentifier","src":"32140:16:55"},"nativeSrc":"32140:18:55","nodeType":"YulFunctionCall","src":"32140:18:55"},"nativeSrc":"32140:18:55","nodeType":"YulExpressionStatement","src":"32140:18:55"}]},"condition":{"arguments":[{"name":"x","nativeSrc":"32130:1:55","nodeType":"YulIdentifier","src":"32130:1:55"},{"name":"sum","nativeSrc":"32133:3:55","nodeType":"YulIdentifier","src":"32133:3:55"}],"functionName":{"name":"gt","nativeSrc":"32127:2:55","nodeType":"YulIdentifier","src":"32127:2:55"},"nativeSrc":"32127:10:55","nodeType":"YulFunctionCall","src":"32127:10:55"},"nativeSrc":"32124:36:55","nodeType":"YulIf","src":"32124:36:55"}]},"name":"checked_add_t_uint256","nativeSrc":"31976:191:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"32007:1:55","nodeType":"YulTypedName","src":"32007:1:55","type":""},{"name":"y","nativeSrc":"32010:1:55","nodeType":"YulTypedName","src":"32010:1:55","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"32016:3:55","nodeType":"YulTypedName","src":"32016:3:55","type":""}],"src":"31976:191:55"},{"body":{"nativeSrc":"32299:206:55","nodeType":"YulBlock","src":"32299:206:55","statements":[{"nativeSrc":"32309:26:55","nodeType":"YulAssignment","src":"32309:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"32321:9:55","nodeType":"YulIdentifier","src":"32321:9:55"},{"kind":"number","nativeSrc":"32332:2:55","nodeType":"YulLiteral","src":"32332:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"32317:3:55","nodeType":"YulIdentifier","src":"32317:3:55"},"nativeSrc":"32317:18:55","nodeType":"YulFunctionCall","src":"32317:18:55"},"variableNames":[{"name":"tail","nativeSrc":"32309:4:55","nodeType":"YulIdentifier","src":"32309:4:55"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"32389:6:55","nodeType":"YulIdentifier","src":"32389:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"32402:9:55","nodeType":"YulIdentifier","src":"32402:9:55"},{"kind":"number","nativeSrc":"32413:1:55","nodeType":"YulLiteral","src":"32413:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"32398:3:55","nodeType":"YulIdentifier","src":"32398:3:55"},"nativeSrc":"32398:17:55","nodeType":"YulFunctionCall","src":"32398:17:55"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"32345:43:55","nodeType":"YulIdentifier","src":"32345:43:55"},"nativeSrc":"32345:71:55","nodeType":"YulFunctionCall","src":"32345:71:55"},"nativeSrc":"32345:71:55","nodeType":"YulExpressionStatement","src":"32345:71:55"},{"expression":{"arguments":[{"name":"value1","nativeSrc":"32470:6:55","nodeType":"YulIdentifier","src":"32470:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"32483:9:55","nodeType":"YulIdentifier","src":"32483:9:55"},{"kind":"number","nativeSrc":"32494:2:55","nodeType":"YulLiteral","src":"32494:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"32479:3:55","nodeType":"YulIdentifier","src":"32479:3:55"},"nativeSrc":"32479:18:55","nodeType":"YulFunctionCall","src":"32479:18:55"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"32426:43:55","nodeType":"YulIdentifier","src":"32426:43:55"},"nativeSrc":"32426:72:55","nodeType":"YulFunctionCall","src":"32426:72:55"},"nativeSrc":"32426:72:55","nodeType":"YulExpressionStatement","src":"32426:72:55"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nativeSrc":"32173:332:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"32263:9:55","nodeType":"YulTypedName","src":"32263:9:55","type":""},{"name":"value1","nativeSrc":"32275:6:55","nodeType":"YulTypedName","src":"32275:6:55","type":""},{"name":"value0","nativeSrc":"32283:6:55","nodeType":"YulTypedName","src":"32283:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"32294:4:55","nodeType":"YulTypedName","src":"32294:4:55","type":""}],"src":"32173:332:55"},{"body":{"nativeSrc":"32556:149:55","nodeType":"YulBlock","src":"32556:149:55","statements":[{"nativeSrc":"32566:25:55","nodeType":"YulAssignment","src":"32566:25:55","value":{"arguments":[{"name":"x","nativeSrc":"32589:1:55","nodeType":"YulIdentifier","src":"32589:1:55"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"32571:17:55","nodeType":"YulIdentifier","src":"32571:17:55"},"nativeSrc":"32571:20:55","nodeType":"YulFunctionCall","src":"32571:20:55"},"variableNames":[{"name":"x","nativeSrc":"32566:1:55","nodeType":"YulIdentifier","src":"32566:1:55"}]},{"nativeSrc":"32600:25:55","nodeType":"YulAssignment","src":"32600:25:55","value":{"arguments":[{"name":"y","nativeSrc":"32623:1:55","nodeType":"YulIdentifier","src":"32623:1:55"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"32605:17:55","nodeType":"YulIdentifier","src":"32605:17:55"},"nativeSrc":"32605:20:55","nodeType":"YulFunctionCall","src":"32605:20:55"},"variableNames":[{"name":"y","nativeSrc":"32600:1:55","nodeType":"YulIdentifier","src":"32600:1:55"}]},{"nativeSrc":"32634:17:55","nodeType":"YulAssignment","src":"32634:17:55","value":{"arguments":[{"name":"x","nativeSrc":"32646:1:55","nodeType":"YulIdentifier","src":"32646:1:55"},{"name":"y","nativeSrc":"32649:1:55","nodeType":"YulIdentifier","src":"32649:1:55"}],"functionName":{"name":"sub","nativeSrc":"32642:3:55","nodeType":"YulIdentifier","src":"32642:3:55"},"nativeSrc":"32642:9:55","nodeType":"YulFunctionCall","src":"32642:9:55"},"variableNames":[{"name":"diff","nativeSrc":"32634:4:55","nodeType":"YulIdentifier","src":"32634:4:55"}]},{"body":{"nativeSrc":"32676:22:55","nodeType":"YulBlock","src":"32676:22:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"32678:16:55","nodeType":"YulIdentifier","src":"32678:16:55"},"nativeSrc":"32678:18:55","nodeType":"YulFunctionCall","src":"32678:18:55"},"nativeSrc":"32678:18:55","nodeType":"YulExpressionStatement","src":"32678:18:55"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"32667:4:55","nodeType":"YulIdentifier","src":"32667:4:55"},{"name":"x","nativeSrc":"32673:1:55","nodeType":"YulIdentifier","src":"32673:1:55"}],"functionName":{"name":"gt","nativeSrc":"32664:2:55","nodeType":"YulIdentifier","src":"32664:2:55"},"nativeSrc":"32664:11:55","nodeType":"YulFunctionCall","src":"32664:11:55"},"nativeSrc":"32661:37:55","nodeType":"YulIf","src":"32661:37:55"}]},"name":"checked_sub_t_uint256","nativeSrc":"32511:194:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"32542:1:55","nodeType":"YulTypedName","src":"32542:1:55","type":""},{"name":"y","nativeSrc":"32545:1:55","nodeType":"YulTypedName","src":"32545:1:55","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"32551:4:55","nodeType":"YulTypedName","src":"32551:4:55","type":""}],"src":"32511:194:55"},{"body":{"nativeSrc":"32759:362:55","nodeType":"YulBlock","src":"32759:362:55","statements":[{"nativeSrc":"32769:25:55","nodeType":"YulAssignment","src":"32769:25:55","value":{"arguments":[{"name":"x","nativeSrc":"32792:1:55","nodeType":"YulIdentifier","src":"32792:1:55"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"32774:17:55","nodeType":"YulIdentifier","src":"32774:17:55"},"nativeSrc":"32774:20:55","nodeType":"YulFunctionCall","src":"32774:20:55"},"variableNames":[{"name":"x","nativeSrc":"32769:1:55","nodeType":"YulIdentifier","src":"32769:1:55"}]},{"nativeSrc":"32803:25:55","nodeType":"YulAssignment","src":"32803:25:55","value":{"arguments":[{"name":"y","nativeSrc":"32826:1:55","nodeType":"YulIdentifier","src":"32826:1:55"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"32808:17:55","nodeType":"YulIdentifier","src":"32808:17:55"},"nativeSrc":"32808:20:55","nodeType":"YulFunctionCall","src":"32808:20:55"},"variableNames":[{"name":"y","nativeSrc":"32803:1:55","nodeType":"YulIdentifier","src":"32803:1:55"}]},{"nativeSrc":"32837:28:55","nodeType":"YulVariableDeclaration","src":"32837:28:55","value":{"arguments":[{"name":"x","nativeSrc":"32860:1:55","nodeType":"YulIdentifier","src":"32860:1:55"},{"name":"y","nativeSrc":"32863:1:55","nodeType":"YulIdentifier","src":"32863:1:55"}],"functionName":{"name":"mul","nativeSrc":"32856:3:55","nodeType":"YulIdentifier","src":"32856:3:55"},"nativeSrc":"32856:9:55","nodeType":"YulFunctionCall","src":"32856:9:55"},"variables":[{"name":"product_raw","nativeSrc":"32841:11:55","nodeType":"YulTypedName","src":"32841:11:55","type":""}]},{"nativeSrc":"32874:41:55","nodeType":"YulAssignment","src":"32874:41:55","value":{"arguments":[{"name":"product_raw","nativeSrc":"32903:11:55","nodeType":"YulIdentifier","src":"32903:11:55"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"32885:17:55","nodeType":"YulIdentifier","src":"32885:17:55"},"nativeSrc":"32885:30:55","nodeType":"YulFunctionCall","src":"32885:30:55"},"variableNames":[{"name":"product","nativeSrc":"32874:7:55","nodeType":"YulIdentifier","src":"32874:7:55"}]},{"body":{"nativeSrc":"33092:22:55","nodeType":"YulBlock","src":"33092:22:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"33094:16:55","nodeType":"YulIdentifier","src":"33094:16:55"},"nativeSrc":"33094:18:55","nodeType":"YulFunctionCall","src":"33094:18:55"},"nativeSrc":"33094:18:55","nodeType":"YulExpressionStatement","src":"33094:18:55"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"x","nativeSrc":"33025:1:55","nodeType":"YulIdentifier","src":"33025:1:55"}],"functionName":{"name":"iszero","nativeSrc":"33018:6:55","nodeType":"YulIdentifier","src":"33018:6:55"},"nativeSrc":"33018:9:55","nodeType":"YulFunctionCall","src":"33018:9:55"},{"arguments":[{"name":"y","nativeSrc":"33048:1:55","nodeType":"YulIdentifier","src":"33048:1:55"},{"arguments":[{"name":"product","nativeSrc":"33055:7:55","nodeType":"YulIdentifier","src":"33055:7:55"},{"name":"x","nativeSrc":"33064:1:55","nodeType":"YulIdentifier","src":"33064:1:55"}],"functionName":{"name":"div","nativeSrc":"33051:3:55","nodeType":"YulIdentifier","src":"33051:3:55"},"nativeSrc":"33051:15:55","nodeType":"YulFunctionCall","src":"33051:15:55"}],"functionName":{"name":"eq","nativeSrc":"33045:2:55","nodeType":"YulIdentifier","src":"33045:2:55"},"nativeSrc":"33045:22:55","nodeType":"YulFunctionCall","src":"33045:22:55"}],"functionName":{"name":"or","nativeSrc":"32998:2:55","nodeType":"YulIdentifier","src":"32998:2:55"},"nativeSrc":"32998:83:55","nodeType":"YulFunctionCall","src":"32998:83:55"}],"functionName":{"name":"iszero","nativeSrc":"32978:6:55","nodeType":"YulIdentifier","src":"32978:6:55"},"nativeSrc":"32978:113:55","nodeType":"YulFunctionCall","src":"32978:113:55"},"nativeSrc":"32975:139:55","nodeType":"YulIf","src":"32975:139:55"}]},"name":"checked_mul_t_uint256","nativeSrc":"32711:410:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"32742:1:55","nodeType":"YulTypedName","src":"32742:1:55","type":""},{"name":"y","nativeSrc":"32745:1:55","nodeType":"YulTypedName","src":"32745:1:55","type":""}],"returnVariables":[{"name":"product","nativeSrc":"32751:7:55","nodeType":"YulTypedName","src":"32751:7:55","type":""}],"src":"32711:410:55"},{"body":{"nativeSrc":"33155:152:55","nodeType":"YulBlock","src":"33155:152:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"33172:1:55","nodeType":"YulLiteral","src":"33172:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"33175:77:55","nodeType":"YulLiteral","src":"33175:77:55","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"33165:6:55","nodeType":"YulIdentifier","src":"33165:6:55"},"nativeSrc":"33165:88:55","nodeType":"YulFunctionCall","src":"33165:88:55"},"nativeSrc":"33165:88:55","nodeType":"YulExpressionStatement","src":"33165:88:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"33269:1:55","nodeType":"YulLiteral","src":"33269:1:55","type":"","value":"4"},{"kind":"number","nativeSrc":"33272:4:55","nodeType":"YulLiteral","src":"33272:4:55","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"33262:6:55","nodeType":"YulIdentifier","src":"33262:6:55"},"nativeSrc":"33262:15:55","nodeType":"YulFunctionCall","src":"33262:15:55"},"nativeSrc":"33262:15:55","nodeType":"YulExpressionStatement","src":"33262:15:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"33293:1:55","nodeType":"YulLiteral","src":"33293:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"33296:4:55","nodeType":"YulLiteral","src":"33296:4:55","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"33286:6:55","nodeType":"YulIdentifier","src":"33286:6:55"},"nativeSrc":"33286:15:55","nodeType":"YulFunctionCall","src":"33286:15:55"},"nativeSrc":"33286:15:55","nodeType":"YulExpressionStatement","src":"33286:15:55"}]},"name":"panic_error_0x12","nativeSrc":"33127:180:55","nodeType":"YulFunctionDefinition","src":"33127:180:55"},{"body":{"nativeSrc":"33355:143:55","nodeType":"YulBlock","src":"33355:143:55","statements":[{"nativeSrc":"33365:25:55","nodeType":"YulAssignment","src":"33365:25:55","value":{"arguments":[{"name":"x","nativeSrc":"33388:1:55","nodeType":"YulIdentifier","src":"33388:1:55"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"33370:17:55","nodeType":"YulIdentifier","src":"33370:17:55"},"nativeSrc":"33370:20:55","nodeType":"YulFunctionCall","src":"33370:20:55"},"variableNames":[{"name":"x","nativeSrc":"33365:1:55","nodeType":"YulIdentifier","src":"33365:1:55"}]},{"nativeSrc":"33399:25:55","nodeType":"YulAssignment","src":"33399:25:55","value":{"arguments":[{"name":"y","nativeSrc":"33422:1:55","nodeType":"YulIdentifier","src":"33422:1:55"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"33404:17:55","nodeType":"YulIdentifier","src":"33404:17:55"},"nativeSrc":"33404:20:55","nodeType":"YulFunctionCall","src":"33404:20:55"},"variableNames":[{"name":"y","nativeSrc":"33399:1:55","nodeType":"YulIdentifier","src":"33399:1:55"}]},{"body":{"nativeSrc":"33446:22:55","nodeType":"YulBlock","src":"33446:22:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x12","nativeSrc":"33448:16:55","nodeType":"YulIdentifier","src":"33448:16:55"},"nativeSrc":"33448:18:55","nodeType":"YulFunctionCall","src":"33448:18:55"},"nativeSrc":"33448:18:55","nodeType":"YulExpressionStatement","src":"33448:18:55"}]},"condition":{"arguments":[{"name":"y","nativeSrc":"33443:1:55","nodeType":"YulIdentifier","src":"33443:1:55"}],"functionName":{"name":"iszero","nativeSrc":"33436:6:55","nodeType":"YulIdentifier","src":"33436:6:55"},"nativeSrc":"33436:9:55","nodeType":"YulFunctionCall","src":"33436:9:55"},"nativeSrc":"33433:35:55","nodeType":"YulIf","src":"33433:35:55"},{"nativeSrc":"33478:14:55","nodeType":"YulAssignment","src":"33478:14:55","value":{"arguments":[{"name":"x","nativeSrc":"33487:1:55","nodeType":"YulIdentifier","src":"33487:1:55"},{"name":"y","nativeSrc":"33490:1:55","nodeType":"YulIdentifier","src":"33490:1:55"}],"functionName":{"name":"div","nativeSrc":"33483:3:55","nodeType":"YulIdentifier","src":"33483:3:55"},"nativeSrc":"33483:9:55","nodeType":"YulFunctionCall","src":"33483:9:55"},"variableNames":[{"name":"r","nativeSrc":"33478:1:55","nodeType":"YulIdentifier","src":"33478:1:55"}]}]},"name":"checked_div_t_uint256","nativeSrc":"33313:185:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"33344:1:55","nodeType":"YulTypedName","src":"33344:1:55","type":""},{"name":"y","nativeSrc":"33347:1:55","nodeType":"YulTypedName","src":"33347:1:55","type":""}],"returnVariables":[{"name":"r","nativeSrc":"33353:1:55","nodeType":"YulTypedName","src":"33353:1:55","type":""}],"src":"33313:185:55"},{"body":{"nativeSrc":"33658:288:55","nodeType":"YulBlock","src":"33658:288:55","statements":[{"nativeSrc":"33668:26:55","nodeType":"YulAssignment","src":"33668:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"33680:9:55","nodeType":"YulIdentifier","src":"33680:9:55"},{"kind":"number","nativeSrc":"33691:2:55","nodeType":"YulLiteral","src":"33691:2:55","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"33676:3:55","nodeType":"YulIdentifier","src":"33676:3:55"},"nativeSrc":"33676:18:55","nodeType":"YulFunctionCall","src":"33676:18:55"},"variableNames":[{"name":"tail","nativeSrc":"33668:4:55","nodeType":"YulIdentifier","src":"33668:4:55"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"33748:6:55","nodeType":"YulIdentifier","src":"33748:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"33761:9:55","nodeType":"YulIdentifier","src":"33761:9:55"},{"kind":"number","nativeSrc":"33772:1:55","nodeType":"YulLiteral","src":"33772:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"33757:3:55","nodeType":"YulIdentifier","src":"33757:3:55"},"nativeSrc":"33757:17:55","nodeType":"YulFunctionCall","src":"33757:17:55"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"33704:43:55","nodeType":"YulIdentifier","src":"33704:43:55"},"nativeSrc":"33704:71:55","nodeType":"YulFunctionCall","src":"33704:71:55"},"nativeSrc":"33704:71:55","nodeType":"YulExpressionStatement","src":"33704:71:55"},{"expression":{"arguments":[{"name":"value1","nativeSrc":"33829:6:55","nodeType":"YulIdentifier","src":"33829:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"33842:9:55","nodeType":"YulIdentifier","src":"33842:9:55"},{"kind":"number","nativeSrc":"33853:2:55","nodeType":"YulLiteral","src":"33853:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"33838:3:55","nodeType":"YulIdentifier","src":"33838:3:55"},"nativeSrc":"33838:18:55","nodeType":"YulFunctionCall","src":"33838:18:55"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"33785:43:55","nodeType":"YulIdentifier","src":"33785:43:55"},"nativeSrc":"33785:72:55","nodeType":"YulFunctionCall","src":"33785:72:55"},"nativeSrc":"33785:72:55","nodeType":"YulExpressionStatement","src":"33785:72:55"},{"expression":{"arguments":[{"name":"value2","nativeSrc":"33911:6:55","nodeType":"YulIdentifier","src":"33911:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"33924:9:55","nodeType":"YulIdentifier","src":"33924:9:55"},{"kind":"number","nativeSrc":"33935:2:55","nodeType":"YulLiteral","src":"33935:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"33920:3:55","nodeType":"YulIdentifier","src":"33920:3:55"},"nativeSrc":"33920:18:55","nodeType":"YulFunctionCall","src":"33920:18:55"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"33867:43:55","nodeType":"YulIdentifier","src":"33867:43:55"},"nativeSrc":"33867:72:55","nodeType":"YulFunctionCall","src":"33867:72:55"},"nativeSrc":"33867:72:55","nodeType":"YulExpressionStatement","src":"33867:72:55"}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed","nativeSrc":"33504:442:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"33614:9:55","nodeType":"YulTypedName","src":"33614:9:55","type":""},{"name":"value2","nativeSrc":"33626:6:55","nodeType":"YulTypedName","src":"33626:6:55","type":""},{"name":"value1","nativeSrc":"33634:6:55","nodeType":"YulTypedName","src":"33634:6:55","type":""},{"name":"value0","nativeSrc":"33642:6:55","nodeType":"YulTypedName","src":"33642:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"33653:4:55","nodeType":"YulTypedName","src":"33653:4:55","type":""}],"src":"33504:442:55"},{"body":{"nativeSrc":"34005:32:55","nodeType":"YulBlock","src":"34005:32:55","statements":[{"nativeSrc":"34015:16:55","nodeType":"YulAssignment","src":"34015:16:55","value":{"name":"value","nativeSrc":"34026:5:55","nodeType":"YulIdentifier","src":"34026:5:55"},"variableNames":[{"name":"cleaned","nativeSrc":"34015:7:55","nodeType":"YulIdentifier","src":"34015:7:55"}]}]},"name":"cleanup_t_rational_0_by_1","nativeSrc":"33952:85:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"33987:5:55","nodeType":"YulTypedName","src":"33987:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"33997:7:55","nodeType":"YulTypedName","src":"33997:7:55","type":""}],"src":"33952:85:55"},{"body":{"nativeSrc":"34109:88:55","nodeType":"YulBlock","src":"34109:88:55","statements":[{"nativeSrc":"34119:72:55","nodeType":"YulAssignment","src":"34119:72:55","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nativeSrc":"34183:5:55","nodeType":"YulIdentifier","src":"34183:5:55"}],"functionName":{"name":"cleanup_t_rational_0_by_1","nativeSrc":"34157:25:55","nodeType":"YulIdentifier","src":"34157:25:55"},"nativeSrc":"34157:32:55","nodeType":"YulFunctionCall","src":"34157:32:55"}],"functionName":{"name":"identity","nativeSrc":"34148:8:55","nodeType":"YulIdentifier","src":"34148:8:55"},"nativeSrc":"34148:42:55","nodeType":"YulFunctionCall","src":"34148:42:55"}],"functionName":{"name":"cleanup_t_uint8","nativeSrc":"34132:15:55","nodeType":"YulIdentifier","src":"34132:15:55"},"nativeSrc":"34132:59:55","nodeType":"YulFunctionCall","src":"34132:59:55"},"variableNames":[{"name":"converted","nativeSrc":"34119:9:55","nodeType":"YulIdentifier","src":"34119:9:55"}]}]},"name":"convert_t_rational_0_by_1_to_t_uint8","nativeSrc":"34043:154:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"34089:5:55","nodeType":"YulTypedName","src":"34089:5:55","type":""}],"returnVariables":[{"name":"converted","nativeSrc":"34099:9:55","nodeType":"YulTypedName","src":"34099:9:55","type":""}],"src":"34043:154:55"},{"body":{"nativeSrc":"34274:72:55","nodeType":"YulBlock","src":"34274:72:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"34291:3:55","nodeType":"YulIdentifier","src":"34291:3:55"},{"arguments":[{"name":"value","nativeSrc":"34333:5:55","nodeType":"YulIdentifier","src":"34333:5:55"}],"functionName":{"name":"convert_t_rational_0_by_1_to_t_uint8","nativeSrc":"34296:36:55","nodeType":"YulIdentifier","src":"34296:36:55"},"nativeSrc":"34296:43:55","nodeType":"YulFunctionCall","src":"34296:43:55"}],"functionName":{"name":"mstore","nativeSrc":"34284:6:55","nodeType":"YulIdentifier","src":"34284:6:55"},"nativeSrc":"34284:56:55","nodeType":"YulFunctionCall","src":"34284:56:55"},"nativeSrc":"34284:56:55","nodeType":"YulExpressionStatement","src":"34284:56:55"}]},"name":"abi_encode_t_rational_0_by_1_to_t_uint8_fromStack","nativeSrc":"34203:143:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"34262:5:55","nodeType":"YulTypedName","src":"34262:5:55","type":""},{"name":"pos","nativeSrc":"34269:3:55","nodeType":"YulTypedName","src":"34269:3:55","type":""}],"src":"34203:143:55"},{"body":{"nativeSrc":"34484:212:55","nodeType":"YulBlock","src":"34484:212:55","statements":[{"nativeSrc":"34494:26:55","nodeType":"YulAssignment","src":"34494:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"34506:9:55","nodeType":"YulIdentifier","src":"34506:9:55"},{"kind":"number","nativeSrc":"34517:2:55","nodeType":"YulLiteral","src":"34517:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"34502:3:55","nodeType":"YulIdentifier","src":"34502:3:55"},"nativeSrc":"34502:18:55","nodeType":"YulFunctionCall","src":"34502:18:55"},"variableNames":[{"name":"tail","nativeSrc":"34494:4:55","nodeType":"YulIdentifier","src":"34494:4:55"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"34574:6:55","nodeType":"YulIdentifier","src":"34574:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"34587:9:55","nodeType":"YulIdentifier","src":"34587:9:55"},{"kind":"number","nativeSrc":"34598:1:55","nodeType":"YulLiteral","src":"34598:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"34583:3:55","nodeType":"YulIdentifier","src":"34583:3:55"},"nativeSrc":"34583:17:55","nodeType":"YulFunctionCall","src":"34583:17:55"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"34530:43:55","nodeType":"YulIdentifier","src":"34530:43:55"},"nativeSrc":"34530:71:55","nodeType":"YulFunctionCall","src":"34530:71:55"},"nativeSrc":"34530:71:55","nodeType":"YulExpressionStatement","src":"34530:71:55"},{"expression":{"arguments":[{"name":"value1","nativeSrc":"34661:6:55","nodeType":"YulIdentifier","src":"34661:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"34674:9:55","nodeType":"YulIdentifier","src":"34674:9:55"},{"kind":"number","nativeSrc":"34685:2:55","nodeType":"YulLiteral","src":"34685:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"34670:3:55","nodeType":"YulIdentifier","src":"34670:3:55"},"nativeSrc":"34670:18:55","nodeType":"YulFunctionCall","src":"34670:18:55"}],"functionName":{"name":"abi_encode_t_rational_0_by_1_to_t_uint8_fromStack","nativeSrc":"34611:49:55","nodeType":"YulIdentifier","src":"34611:49:55"},"nativeSrc":"34611:78:55","nodeType":"YulFunctionCall","src":"34611:78:55"},"nativeSrc":"34611:78:55","nodeType":"YulExpressionStatement","src":"34611:78:55"}]},"name":"abi_encode_tuple_t_address_t_rational_0_by_1__to_t_address_t_uint8__fromStack_reversed","nativeSrc":"34352:344:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"34448:9:55","nodeType":"YulTypedName","src":"34448:9:55","type":""},{"name":"value1","nativeSrc":"34460:6:55","nodeType":"YulTypedName","src":"34460:6:55","type":""},{"name":"value0","nativeSrc":"34468:6:55","nodeType":"YulTypedName","src":"34468:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"34479:4:55","nodeType":"YulTypedName","src":"34479:4:55","type":""}],"src":"34352:344:55"},{"body":{"nativeSrc":"34815:34:55","nodeType":"YulBlock","src":"34815:34:55","statements":[{"nativeSrc":"34825:18:55","nodeType":"YulAssignment","src":"34825:18:55","value":{"name":"pos","nativeSrc":"34840:3:55","nodeType":"YulIdentifier","src":"34840:3:55"},"variableNames":[{"name":"updated_pos","nativeSrc":"34825:11:55","nodeType":"YulIdentifier","src":"34825:11:55"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"34702:147:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"34787:3:55","nodeType":"YulTypedName","src":"34787:3:55","type":""},{"name":"length","nativeSrc":"34792:6:55","nodeType":"YulTypedName","src":"34792:6:55","type":""}],"returnVariables":[{"name":"updated_pos","nativeSrc":"34803:11:55","nodeType":"YulTypedName","src":"34803:11:55","type":""}],"src":"34702:147:55"},{"body":{"nativeSrc":"34995:209:55","nodeType":"YulBlock","src":"34995:209:55","statements":[{"nativeSrc":"35005:95:55","nodeType":"YulAssignment","src":"35005:95:55","value":{"arguments":[{"name":"pos","nativeSrc":"35088:3:55","nodeType":"YulIdentifier","src":"35088:3:55"},{"name":"length","nativeSrc":"35093:6:55","nodeType":"YulIdentifier","src":"35093:6:55"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"35012:75:55","nodeType":"YulIdentifier","src":"35012:75:55"},"nativeSrc":"35012:88:55","nodeType":"YulFunctionCall","src":"35012:88:55"},"variableNames":[{"name":"pos","nativeSrc":"35005:3:55","nodeType":"YulIdentifier","src":"35005:3:55"}]},{"expression":{"arguments":[{"name":"start","nativeSrc":"35147:5:55","nodeType":"YulIdentifier","src":"35147:5:55"},{"name":"pos","nativeSrc":"35154:3:55","nodeType":"YulIdentifier","src":"35154:3:55"},{"name":"length","nativeSrc":"35159:6:55","nodeType":"YulIdentifier","src":"35159:6:55"}],"functionName":{"name":"copy_calldata_to_memory_with_cleanup","nativeSrc":"35110:36:55","nodeType":"YulIdentifier","src":"35110:36:55"},"nativeSrc":"35110:56:55","nodeType":"YulFunctionCall","src":"35110:56:55"},"nativeSrc":"35110:56:55","nodeType":"YulExpressionStatement","src":"35110:56:55"},{"nativeSrc":"35175:23:55","nodeType":"YulAssignment","src":"35175:23:55","value":{"arguments":[{"name":"pos","nativeSrc":"35186:3:55","nodeType":"YulIdentifier","src":"35186:3:55"},{"name":"length","nativeSrc":"35191:6:55","nodeType":"YulIdentifier","src":"35191:6:55"}],"functionName":{"name":"add","nativeSrc":"35182:3:55","nodeType":"YulIdentifier","src":"35182:3:55"},"nativeSrc":"35182:16:55","nodeType":"YulFunctionCall","src":"35182:16:55"},"variableNames":[{"name":"end","nativeSrc":"35175:3:55","nodeType":"YulIdentifier","src":"35175:3:55"}]}]},"name":"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"34877:327:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nativeSrc":"34968:5:55","nodeType":"YulTypedName","src":"34968:5:55","type":""},{"name":"length","nativeSrc":"34975:6:55","nodeType":"YulTypedName","src":"34975:6:55","type":""},{"name":"pos","nativeSrc":"34983:3:55","nodeType":"YulTypedName","src":"34983:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"34991:3:55","nodeType":"YulTypedName","src":"34991:3:55","type":""}],"src":"34877:327:55"},{"body":{"nativeSrc":"35354:147:55","nodeType":"YulBlock","src":"35354:147:55","statements":[{"nativeSrc":"35365:110:55","nodeType":"YulAssignment","src":"35365:110:55","value":{"arguments":[{"name":"value0","nativeSrc":"35454:6:55","nodeType":"YulIdentifier","src":"35454:6:55"},{"name":"value1","nativeSrc":"35462:6:55","nodeType":"YulIdentifier","src":"35462:6:55"},{"name":"pos","nativeSrc":"35471:3:55","nodeType":"YulIdentifier","src":"35471:3:55"}],"functionName":{"name":"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"35372:81:55","nodeType":"YulIdentifier","src":"35372:81:55"},"nativeSrc":"35372:103:55","nodeType":"YulFunctionCall","src":"35372:103:55"},"variableNames":[{"name":"pos","nativeSrc":"35365:3:55","nodeType":"YulIdentifier","src":"35365:3:55"}]},{"nativeSrc":"35485:10:55","nodeType":"YulAssignment","src":"35485:10:55","value":{"name":"pos","nativeSrc":"35492:3:55","nodeType":"YulIdentifier","src":"35492:3:55"},"variableNames":[{"name":"end","nativeSrc":"35485:3:55","nodeType":"YulIdentifier","src":"35485:3:55"}]}]},"name":"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"35210:291:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"35325:3:55","nodeType":"YulTypedName","src":"35325:3:55","type":""},{"name":"value1","nativeSrc":"35331:6:55","nodeType":"YulTypedName","src":"35331:6:55","type":""},{"name":"value0","nativeSrc":"35339:6:55","nodeType":"YulTypedName","src":"35339:6:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"35350:3:55","nodeType":"YulTypedName","src":"35350:3:55","type":""}],"src":"35210:291:55"},{"body":{"nativeSrc":"35613:123:55","nodeType":"YulBlock","src":"35613:123:55","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"35635:6:55","nodeType":"YulIdentifier","src":"35635:6:55"},{"kind":"number","nativeSrc":"35643:1:55","nodeType":"YulLiteral","src":"35643:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"35631:3:55","nodeType":"YulIdentifier","src":"35631:3:55"},"nativeSrc":"35631:14:55","nodeType":"YulFunctionCall","src":"35631:14:55"},{"hexValue":"5361666545524332303a204552433230206f7065726174696f6e20646964206e","kind":"string","nativeSrc":"35647:34:55","nodeType":"YulLiteral","src":"35647:34:55","type":"","value":"SafeERC20: ERC20 operation did n"}],"functionName":{"name":"mstore","nativeSrc":"35624:6:55","nodeType":"YulIdentifier","src":"35624:6:55"},"nativeSrc":"35624:58:55","nodeType":"YulFunctionCall","src":"35624:58:55"},"nativeSrc":"35624:58:55","nodeType":"YulExpressionStatement","src":"35624:58:55"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"35703:6:55","nodeType":"YulIdentifier","src":"35703:6:55"},{"kind":"number","nativeSrc":"35711:2:55","nodeType":"YulLiteral","src":"35711:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"35699:3:55","nodeType":"YulIdentifier","src":"35699:3:55"},"nativeSrc":"35699:15:55","nodeType":"YulFunctionCall","src":"35699:15:55"},{"hexValue":"6f742073756363656564","kind":"string","nativeSrc":"35716:12:55","nodeType":"YulLiteral","src":"35716:12:55","type":"","value":"ot succeed"}],"functionName":{"name":"mstore","nativeSrc":"35692:6:55","nodeType":"YulIdentifier","src":"35692:6:55"},"nativeSrc":"35692:37:55","nodeType":"YulFunctionCall","src":"35692:37:55"},"nativeSrc":"35692:37:55","nodeType":"YulExpressionStatement","src":"35692:37:55"}]},"name":"store_literal_in_memory_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","nativeSrc":"35507:229:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"35605:6:55","nodeType":"YulTypedName","src":"35605:6:55","type":""}],"src":"35507:229:55"},{"body":{"nativeSrc":"35888:220:55","nodeType":"YulBlock","src":"35888:220:55","statements":[{"nativeSrc":"35898:74:55","nodeType":"YulAssignment","src":"35898:74:55","value":{"arguments":[{"name":"pos","nativeSrc":"35964:3:55","nodeType":"YulIdentifier","src":"35964:3:55"},{"kind":"number","nativeSrc":"35969:2:55","nodeType":"YulLiteral","src":"35969:2:55","type":"","value":"42"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"35905:58:55","nodeType":"YulIdentifier","src":"35905:58:55"},"nativeSrc":"35905:67:55","nodeType":"YulFunctionCall","src":"35905:67:55"},"variableNames":[{"name":"pos","nativeSrc":"35898:3:55","nodeType":"YulIdentifier","src":"35898:3:55"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"36070:3:55","nodeType":"YulIdentifier","src":"36070:3:55"}],"functionName":{"name":"store_literal_in_memory_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","nativeSrc":"35981:88:55","nodeType":"YulIdentifier","src":"35981:88:55"},"nativeSrc":"35981:93:55","nodeType":"YulFunctionCall","src":"35981:93:55"},"nativeSrc":"35981:93:55","nodeType":"YulExpressionStatement","src":"35981:93:55"},{"nativeSrc":"36083:19:55","nodeType":"YulAssignment","src":"36083:19:55","value":{"arguments":[{"name":"pos","nativeSrc":"36094:3:55","nodeType":"YulIdentifier","src":"36094:3:55"},{"kind":"number","nativeSrc":"36099:2:55","nodeType":"YulLiteral","src":"36099:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"36090:3:55","nodeType":"YulIdentifier","src":"36090:3:55"},"nativeSrc":"36090:12:55","nodeType":"YulFunctionCall","src":"36090:12:55"},"variableNames":[{"name":"end","nativeSrc":"36083:3:55","nodeType":"YulIdentifier","src":"36083:3:55"}]}]},"name":"abi_encode_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd_to_t_string_memory_ptr_fromStack","nativeSrc":"35742:366:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"35876:3:55","nodeType":"YulTypedName","src":"35876:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"35884:3:55","nodeType":"YulTypedName","src":"35884:3:55","type":""}],"src":"35742:366:55"},{"body":{"nativeSrc":"36285:248:55","nodeType":"YulBlock","src":"36285:248:55","statements":[{"nativeSrc":"36295:26:55","nodeType":"YulAssignment","src":"36295:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"36307:9:55","nodeType":"YulIdentifier","src":"36307:9:55"},{"kind":"number","nativeSrc":"36318:2:55","nodeType":"YulLiteral","src":"36318:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"36303:3:55","nodeType":"YulIdentifier","src":"36303:3:55"},"nativeSrc":"36303:18:55","nodeType":"YulFunctionCall","src":"36303:18:55"},"variableNames":[{"name":"tail","nativeSrc":"36295:4:55","nodeType":"YulIdentifier","src":"36295:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"36342:9:55","nodeType":"YulIdentifier","src":"36342:9:55"},{"kind":"number","nativeSrc":"36353:1:55","nodeType":"YulLiteral","src":"36353:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"36338:3:55","nodeType":"YulIdentifier","src":"36338:3:55"},"nativeSrc":"36338:17:55","nodeType":"YulFunctionCall","src":"36338:17:55"},{"arguments":[{"name":"tail","nativeSrc":"36361:4:55","nodeType":"YulIdentifier","src":"36361:4:55"},{"name":"headStart","nativeSrc":"36367:9:55","nodeType":"YulIdentifier","src":"36367:9:55"}],"functionName":{"name":"sub","nativeSrc":"36357:3:55","nodeType":"YulIdentifier","src":"36357:3:55"},"nativeSrc":"36357:20:55","nodeType":"YulFunctionCall","src":"36357:20:55"}],"functionName":{"name":"mstore","nativeSrc":"36331:6:55","nodeType":"YulIdentifier","src":"36331:6:55"},"nativeSrc":"36331:47:55","nodeType":"YulFunctionCall","src":"36331:47:55"},"nativeSrc":"36331:47:55","nodeType":"YulExpressionStatement","src":"36331:47:55"},{"nativeSrc":"36387:139:55","nodeType":"YulAssignment","src":"36387:139:55","value":{"arguments":[{"name":"tail","nativeSrc":"36521:4:55","nodeType":"YulIdentifier","src":"36521:4:55"}],"functionName":{"name":"abi_encode_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd_to_t_string_memory_ptr_fromStack","nativeSrc":"36395:124:55","nodeType":"YulIdentifier","src":"36395:124:55"},"nativeSrc":"36395:131:55","nodeType":"YulFunctionCall","src":"36395:131:55"},"variableNames":[{"name":"tail","nativeSrc":"36387:4:55","nodeType":"YulIdentifier","src":"36387:4:55"}]}]},"name":"abi_encode_tuple_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"36114:419:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"36265:9:55","nodeType":"YulTypedName","src":"36265:9:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"36280:4:55","nodeType":"YulTypedName","src":"36280:4:55","type":""}],"src":"36114:419:55"},{"body":{"nativeSrc":"36597:40:55","nodeType":"YulBlock","src":"36597:40:55","statements":[{"nativeSrc":"36608:22:55","nodeType":"YulAssignment","src":"36608:22:55","value":{"arguments":[{"name":"value","nativeSrc":"36624:5:55","nodeType":"YulIdentifier","src":"36624:5:55"}],"functionName":{"name":"mload","nativeSrc":"36618:5:55","nodeType":"YulIdentifier","src":"36618:5:55"},"nativeSrc":"36618:12:55","nodeType":"YulFunctionCall","src":"36618:12:55"},"variableNames":[{"name":"length","nativeSrc":"36608:6:55","nodeType":"YulIdentifier","src":"36608:6:55"}]}]},"name":"array_length_t_bytes_memory_ptr","nativeSrc":"36539:98:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"36580:5:55","nodeType":"YulTypedName","src":"36580:5:55","type":""}],"returnVariables":[{"name":"length","nativeSrc":"36590:6:55","nodeType":"YulTypedName","src":"36590:6:55","type":""}],"src":"36539:98:55"},{"body":{"nativeSrc":"36705:77:55","nodeType":"YulBlock","src":"36705:77:55","statements":[{"expression":{"arguments":[{"name":"dst","nativeSrc":"36722:3:55","nodeType":"YulIdentifier","src":"36722:3:55"},{"name":"src","nativeSrc":"36727:3:55","nodeType":"YulIdentifier","src":"36727:3:55"},{"name":"length","nativeSrc":"36732:6:55","nodeType":"YulIdentifier","src":"36732:6:55"}],"functionName":{"name":"mcopy","nativeSrc":"36716:5:55","nodeType":"YulIdentifier","src":"36716:5:55"},"nativeSrc":"36716:23:55","nodeType":"YulFunctionCall","src":"36716:23:55"},"nativeSrc":"36716:23:55","nodeType":"YulExpressionStatement","src":"36716:23:55"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"36759:3:55","nodeType":"YulIdentifier","src":"36759:3:55"},{"name":"length","nativeSrc":"36764:6:55","nodeType":"YulIdentifier","src":"36764:6:55"}],"functionName":{"name":"add","nativeSrc":"36755:3:55","nodeType":"YulIdentifier","src":"36755:3:55"},"nativeSrc":"36755:16:55","nodeType":"YulFunctionCall","src":"36755:16:55"},{"kind":"number","nativeSrc":"36773:1:55","nodeType":"YulLiteral","src":"36773:1:55","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"36748:6:55","nodeType":"YulIdentifier","src":"36748:6:55"},"nativeSrc":"36748:27:55","nodeType":"YulFunctionCall","src":"36748:27:55"},"nativeSrc":"36748:27:55","nodeType":"YulExpressionStatement","src":"36748:27:55"}]},"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"36643:139:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nativeSrc":"36687:3:55","nodeType":"YulTypedName","src":"36687:3:55","type":""},{"name":"dst","nativeSrc":"36692:3:55","nodeType":"YulTypedName","src":"36692:3:55","type":""},{"name":"length","nativeSrc":"36697:6:55","nodeType":"YulTypedName","src":"36697:6:55","type":""}],"src":"36643:139:55"},{"body":{"nativeSrc":"36896:278:55","nodeType":"YulBlock","src":"36896:278:55","statements":[{"nativeSrc":"36906:52:55","nodeType":"YulVariableDeclaration","src":"36906:52:55","value":{"arguments":[{"name":"value","nativeSrc":"36952:5:55","nodeType":"YulIdentifier","src":"36952:5:55"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nativeSrc":"36920:31:55","nodeType":"YulIdentifier","src":"36920:31:55"},"nativeSrc":"36920:38:55","nodeType":"YulFunctionCall","src":"36920:38:55"},"variables":[{"name":"length","nativeSrc":"36910:6:55","nodeType":"YulTypedName","src":"36910:6:55","type":""}]},{"nativeSrc":"36967:95:55","nodeType":"YulAssignment","src":"36967:95:55","value":{"arguments":[{"name":"pos","nativeSrc":"37050:3:55","nodeType":"YulIdentifier","src":"37050:3:55"},{"name":"length","nativeSrc":"37055:6:55","nodeType":"YulIdentifier","src":"37055:6:55"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"36974:75:55","nodeType":"YulIdentifier","src":"36974:75:55"},"nativeSrc":"36974:88:55","nodeType":"YulFunctionCall","src":"36974:88:55"},"variableNames":[{"name":"pos","nativeSrc":"36967:3:55","nodeType":"YulIdentifier","src":"36967:3:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"37110:5:55","nodeType":"YulIdentifier","src":"37110:5:55"},{"kind":"number","nativeSrc":"37117:4:55","nodeType":"YulLiteral","src":"37117:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"37106:3:55","nodeType":"YulIdentifier","src":"37106:3:55"},"nativeSrc":"37106:16:55","nodeType":"YulFunctionCall","src":"37106:16:55"},{"name":"pos","nativeSrc":"37124:3:55","nodeType":"YulIdentifier","src":"37124:3:55"},{"name":"length","nativeSrc":"37129:6:55","nodeType":"YulIdentifier","src":"37129:6:55"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"37071:34:55","nodeType":"YulIdentifier","src":"37071:34:55"},"nativeSrc":"37071:65:55","nodeType":"YulFunctionCall","src":"37071:65:55"},"nativeSrc":"37071:65:55","nodeType":"YulExpressionStatement","src":"37071:65:55"},{"nativeSrc":"37145:23:55","nodeType":"YulAssignment","src":"37145:23:55","value":{"arguments":[{"name":"pos","nativeSrc":"37156:3:55","nodeType":"YulIdentifier","src":"37156:3:55"},{"name":"length","nativeSrc":"37161:6:55","nodeType":"YulIdentifier","src":"37161:6:55"}],"functionName":{"name":"add","nativeSrc":"37152:3:55","nodeType":"YulIdentifier","src":"37152:3:55"},"nativeSrc":"37152:16:55","nodeType":"YulFunctionCall","src":"37152:16:55"},"variableNames":[{"name":"end","nativeSrc":"37145:3:55","nodeType":"YulIdentifier","src":"37145:3:55"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"36788:386:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"36877:5:55","nodeType":"YulTypedName","src":"36877:5:55","type":""},{"name":"pos","nativeSrc":"36884:3:55","nodeType":"YulTypedName","src":"36884:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"36892:3:55","nodeType":"YulTypedName","src":"36892:3:55","type":""}],"src":"36788:386:55"},{"body":{"nativeSrc":"37314:137:55","nodeType":"YulBlock","src":"37314:137:55","statements":[{"nativeSrc":"37325:100:55","nodeType":"YulAssignment","src":"37325:100:55","value":{"arguments":[{"name":"value0","nativeSrc":"37412:6:55","nodeType":"YulIdentifier","src":"37412:6:55"},{"name":"pos","nativeSrc":"37421:3:55","nodeType":"YulIdentifier","src":"37421:3:55"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"37332:79:55","nodeType":"YulIdentifier","src":"37332:79:55"},"nativeSrc":"37332:93:55","nodeType":"YulFunctionCall","src":"37332:93:55"},"variableNames":[{"name":"pos","nativeSrc":"37325:3:55","nodeType":"YulIdentifier","src":"37325:3:55"}]},{"nativeSrc":"37435:10:55","nodeType":"YulAssignment","src":"37435:10:55","value":{"name":"pos","nativeSrc":"37442:3:55","nodeType":"YulIdentifier","src":"37442:3:55"},"variableNames":[{"name":"end","nativeSrc":"37435:3:55","nodeType":"YulIdentifier","src":"37435:3:55"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"37180:271:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"37293:3:55","nodeType":"YulTypedName","src":"37293:3:55","type":""},{"name":"value0","nativeSrc":"37299:6:55","nodeType":"YulTypedName","src":"37299:6:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"37310:3:55","nodeType":"YulTypedName","src":"37310:3:55","type":""}],"src":"37180:271:55"},{"body":{"nativeSrc":"37563:119:55","nodeType":"YulBlock","src":"37563:119:55","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"37585:6:55","nodeType":"YulIdentifier","src":"37585:6:55"},{"kind":"number","nativeSrc":"37593:1:55","nodeType":"YulLiteral","src":"37593:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"37581:3:55","nodeType":"YulIdentifier","src":"37581:3:55"},"nativeSrc":"37581:14:55","nodeType":"YulFunctionCall","src":"37581:14:55"},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f","kind":"string","nativeSrc":"37597:34:55","nodeType":"YulLiteral","src":"37597:34:55","type":"","value":"Address: insufficient balance fo"}],"functionName":{"name":"mstore","nativeSrc":"37574:6:55","nodeType":"YulIdentifier","src":"37574:6:55"},"nativeSrc":"37574:58:55","nodeType":"YulFunctionCall","src":"37574:58:55"},"nativeSrc":"37574:58:55","nodeType":"YulExpressionStatement","src":"37574:58:55"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"37653:6:55","nodeType":"YulIdentifier","src":"37653:6:55"},{"kind":"number","nativeSrc":"37661:2:55","nodeType":"YulLiteral","src":"37661:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"37649:3:55","nodeType":"YulIdentifier","src":"37649:3:55"},"nativeSrc":"37649:15:55","nodeType":"YulFunctionCall","src":"37649:15:55"},{"hexValue":"722063616c6c","kind":"string","nativeSrc":"37666:8:55","nodeType":"YulLiteral","src":"37666:8:55","type":"","value":"r call"}],"functionName":{"name":"mstore","nativeSrc":"37642:6:55","nodeType":"YulIdentifier","src":"37642:6:55"},"nativeSrc":"37642:33:55","nodeType":"YulFunctionCall","src":"37642:33:55"},"nativeSrc":"37642:33:55","nodeType":"YulExpressionStatement","src":"37642:33:55"}]},"name":"store_literal_in_memory_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","nativeSrc":"37457:225:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"37555:6:55","nodeType":"YulTypedName","src":"37555:6:55","type":""}],"src":"37457:225:55"},{"body":{"nativeSrc":"37834:220:55","nodeType":"YulBlock","src":"37834:220:55","statements":[{"nativeSrc":"37844:74:55","nodeType":"YulAssignment","src":"37844:74:55","value":{"arguments":[{"name":"pos","nativeSrc":"37910:3:55","nodeType":"YulIdentifier","src":"37910:3:55"},{"kind":"number","nativeSrc":"37915:2:55","nodeType":"YulLiteral","src":"37915:2:55","type":"","value":"38"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"37851:58:55","nodeType":"YulIdentifier","src":"37851:58:55"},"nativeSrc":"37851:67:55","nodeType":"YulFunctionCall","src":"37851:67:55"},"variableNames":[{"name":"pos","nativeSrc":"37844:3:55","nodeType":"YulIdentifier","src":"37844:3:55"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"38016:3:55","nodeType":"YulIdentifier","src":"38016:3:55"}],"functionName":{"name":"store_literal_in_memory_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","nativeSrc":"37927:88:55","nodeType":"YulIdentifier","src":"37927:88:55"},"nativeSrc":"37927:93:55","nodeType":"YulFunctionCall","src":"37927:93:55"},"nativeSrc":"37927:93:55","nodeType":"YulExpressionStatement","src":"37927:93:55"},{"nativeSrc":"38029:19:55","nodeType":"YulAssignment","src":"38029:19:55","value":{"arguments":[{"name":"pos","nativeSrc":"38040:3:55","nodeType":"YulIdentifier","src":"38040:3:55"},{"kind":"number","nativeSrc":"38045:2:55","nodeType":"YulLiteral","src":"38045:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"38036:3:55","nodeType":"YulIdentifier","src":"38036:3:55"},"nativeSrc":"38036:12:55","nodeType":"YulFunctionCall","src":"38036:12:55"},"variableNames":[{"name":"end","nativeSrc":"38029:3:55","nodeType":"YulIdentifier","src":"38029:3:55"}]}]},"name":"abi_encode_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c_to_t_string_memory_ptr_fromStack","nativeSrc":"37688:366:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"37822:3:55","nodeType":"YulTypedName","src":"37822:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"37830:3:55","nodeType":"YulTypedName","src":"37830:3:55","type":""}],"src":"37688:366:55"},{"body":{"nativeSrc":"38231:248:55","nodeType":"YulBlock","src":"38231:248:55","statements":[{"nativeSrc":"38241:26:55","nodeType":"YulAssignment","src":"38241:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"38253:9:55","nodeType":"YulIdentifier","src":"38253:9:55"},{"kind":"number","nativeSrc":"38264:2:55","nodeType":"YulLiteral","src":"38264:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"38249:3:55","nodeType":"YulIdentifier","src":"38249:3:55"},"nativeSrc":"38249:18:55","nodeType":"YulFunctionCall","src":"38249:18:55"},"variableNames":[{"name":"tail","nativeSrc":"38241:4:55","nodeType":"YulIdentifier","src":"38241:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"38288:9:55","nodeType":"YulIdentifier","src":"38288:9:55"},{"kind":"number","nativeSrc":"38299:1:55","nodeType":"YulLiteral","src":"38299:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"38284:3:55","nodeType":"YulIdentifier","src":"38284:3:55"},"nativeSrc":"38284:17:55","nodeType":"YulFunctionCall","src":"38284:17:55"},{"arguments":[{"name":"tail","nativeSrc":"38307:4:55","nodeType":"YulIdentifier","src":"38307:4:55"},{"name":"headStart","nativeSrc":"38313:9:55","nodeType":"YulIdentifier","src":"38313:9:55"}],"functionName":{"name":"sub","nativeSrc":"38303:3:55","nodeType":"YulIdentifier","src":"38303:3:55"},"nativeSrc":"38303:20:55","nodeType":"YulFunctionCall","src":"38303:20:55"}],"functionName":{"name":"mstore","nativeSrc":"38277:6:55","nodeType":"YulIdentifier","src":"38277:6:55"},"nativeSrc":"38277:47:55","nodeType":"YulFunctionCall","src":"38277:47:55"},"nativeSrc":"38277:47:55","nodeType":"YulExpressionStatement","src":"38277:47:55"},{"nativeSrc":"38333:139:55","nodeType":"YulAssignment","src":"38333:139:55","value":{"arguments":[{"name":"tail","nativeSrc":"38467:4:55","nodeType":"YulIdentifier","src":"38467:4:55"}],"functionName":{"name":"abi_encode_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c_to_t_string_memory_ptr_fromStack","nativeSrc":"38341:124:55","nodeType":"YulIdentifier","src":"38341:124:55"},"nativeSrc":"38341:131:55","nodeType":"YulFunctionCall","src":"38341:131:55"},"variableNames":[{"name":"tail","nativeSrc":"38333:4:55","nodeType":"YulIdentifier","src":"38333:4:55"}]}]},"name":"abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"38060:419:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"38211:9:55","nodeType":"YulTypedName","src":"38211:9:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"38226:4:55","nodeType":"YulTypedName","src":"38226:4:55","type":""}],"src":"38060:419:55"},{"body":{"nativeSrc":"38591:73:55","nodeType":"YulBlock","src":"38591:73:55","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"38613:6:55","nodeType":"YulIdentifier","src":"38613:6:55"},{"kind":"number","nativeSrc":"38621:1:55","nodeType":"YulLiteral","src":"38621:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"38609:3:55","nodeType":"YulIdentifier","src":"38609:3:55"},"nativeSrc":"38609:14:55","nodeType":"YulFunctionCall","src":"38609:14:55"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nativeSrc":"38625:31:55","nodeType":"YulLiteral","src":"38625:31:55","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nativeSrc":"38602:6:55","nodeType":"YulIdentifier","src":"38602:6:55"},"nativeSrc":"38602:55:55","nodeType":"YulFunctionCall","src":"38602:55:55"},"nativeSrc":"38602:55:55","nodeType":"YulExpressionStatement","src":"38602:55:55"}]},"name":"store_literal_in_memory_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","nativeSrc":"38485:179:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"38583:6:55","nodeType":"YulTypedName","src":"38583:6:55","type":""}],"src":"38485:179:55"},{"body":{"nativeSrc":"38816:220:55","nodeType":"YulBlock","src":"38816:220:55","statements":[{"nativeSrc":"38826:74:55","nodeType":"YulAssignment","src":"38826:74:55","value":{"arguments":[{"name":"pos","nativeSrc":"38892:3:55","nodeType":"YulIdentifier","src":"38892:3:55"},{"kind":"number","nativeSrc":"38897:2:55","nodeType":"YulLiteral","src":"38897:2:55","type":"","value":"29"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"38833:58:55","nodeType":"YulIdentifier","src":"38833:58:55"},"nativeSrc":"38833:67:55","nodeType":"YulFunctionCall","src":"38833:67:55"},"variableNames":[{"name":"pos","nativeSrc":"38826:3:55","nodeType":"YulIdentifier","src":"38826:3:55"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"38998:3:55","nodeType":"YulIdentifier","src":"38998:3:55"}],"functionName":{"name":"store_literal_in_memory_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","nativeSrc":"38909:88:55","nodeType":"YulIdentifier","src":"38909:88:55"},"nativeSrc":"38909:93:55","nodeType":"YulFunctionCall","src":"38909:93:55"},"nativeSrc":"38909:93:55","nodeType":"YulExpressionStatement","src":"38909:93:55"},{"nativeSrc":"39011:19:55","nodeType":"YulAssignment","src":"39011:19:55","value":{"arguments":[{"name":"pos","nativeSrc":"39022:3:55","nodeType":"YulIdentifier","src":"39022:3:55"},{"kind":"number","nativeSrc":"39027:2:55","nodeType":"YulLiteral","src":"39027:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"39018:3:55","nodeType":"YulIdentifier","src":"39018:3:55"},"nativeSrc":"39018:12:55","nodeType":"YulFunctionCall","src":"39018:12:55"},"variableNames":[{"name":"end","nativeSrc":"39011:3:55","nodeType":"YulIdentifier","src":"39011:3:55"}]}]},"name":"abi_encode_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad_to_t_string_memory_ptr_fromStack","nativeSrc":"38670:366:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"38804:3:55","nodeType":"YulTypedName","src":"38804:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"38812:3:55","nodeType":"YulTypedName","src":"38812:3:55","type":""}],"src":"38670:366:55"},{"body":{"nativeSrc":"39213:248:55","nodeType":"YulBlock","src":"39213:248:55","statements":[{"nativeSrc":"39223:26:55","nodeType":"YulAssignment","src":"39223:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"39235:9:55","nodeType":"YulIdentifier","src":"39235:9:55"},{"kind":"number","nativeSrc":"39246:2:55","nodeType":"YulLiteral","src":"39246:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"39231:3:55","nodeType":"YulIdentifier","src":"39231:3:55"},"nativeSrc":"39231:18:55","nodeType":"YulFunctionCall","src":"39231:18:55"},"variableNames":[{"name":"tail","nativeSrc":"39223:4:55","nodeType":"YulIdentifier","src":"39223:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"39270:9:55","nodeType":"YulIdentifier","src":"39270:9:55"},{"kind":"number","nativeSrc":"39281:1:55","nodeType":"YulLiteral","src":"39281:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"39266:3:55","nodeType":"YulIdentifier","src":"39266:3:55"},"nativeSrc":"39266:17:55","nodeType":"YulFunctionCall","src":"39266:17:55"},{"arguments":[{"name":"tail","nativeSrc":"39289:4:55","nodeType":"YulIdentifier","src":"39289:4:55"},{"name":"headStart","nativeSrc":"39295:9:55","nodeType":"YulIdentifier","src":"39295:9:55"}],"functionName":{"name":"sub","nativeSrc":"39285:3:55","nodeType":"YulIdentifier","src":"39285:3:55"},"nativeSrc":"39285:20:55","nodeType":"YulFunctionCall","src":"39285:20:55"}],"functionName":{"name":"mstore","nativeSrc":"39259:6:55","nodeType":"YulIdentifier","src":"39259:6:55"},"nativeSrc":"39259:47:55","nodeType":"YulFunctionCall","src":"39259:47:55"},"nativeSrc":"39259:47:55","nodeType":"YulExpressionStatement","src":"39259:47:55"},{"nativeSrc":"39315:139:55","nodeType":"YulAssignment","src":"39315:139:55","value":{"arguments":[{"name":"tail","nativeSrc":"39449:4:55","nodeType":"YulIdentifier","src":"39449:4:55"}],"functionName":{"name":"abi_encode_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad_to_t_string_memory_ptr_fromStack","nativeSrc":"39323:124:55","nodeType":"YulIdentifier","src":"39323:124:55"},"nativeSrc":"39323:131:55","nodeType":"YulFunctionCall","src":"39323:131:55"},"variableNames":[{"name":"tail","nativeSrc":"39315:4:55","nodeType":"YulIdentifier","src":"39315:4:55"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"39042:419:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"39193:9:55","nodeType":"YulTypedName","src":"39193:9:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"39208:4:55","nodeType":"YulTypedName","src":"39208:4:55","type":""}],"src":"39042:419:55"},{"body":{"nativeSrc":"39526:40:55","nodeType":"YulBlock","src":"39526:40:55","statements":[{"nativeSrc":"39537:22:55","nodeType":"YulAssignment","src":"39537:22:55","value":{"arguments":[{"name":"value","nativeSrc":"39553:5:55","nodeType":"YulIdentifier","src":"39553:5:55"}],"functionName":{"name":"mload","nativeSrc":"39547:5:55","nodeType":"YulIdentifier","src":"39547:5:55"},"nativeSrc":"39547:12:55","nodeType":"YulFunctionCall","src":"39547:12:55"},"variableNames":[{"name":"length","nativeSrc":"39537:6:55","nodeType":"YulIdentifier","src":"39537:6:55"}]}]},"name":"array_length_t_string_memory_ptr","nativeSrc":"39467:99:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"39509:5:55","nodeType":"YulTypedName","src":"39509:5:55","type":""}],"returnVariables":[{"name":"length","nativeSrc":"39519:6:55","nodeType":"YulTypedName","src":"39519:6:55","type":""}],"src":"39467:99:55"},{"body":{"nativeSrc":"39664:285:55","nodeType":"YulBlock","src":"39664:285:55","statements":[{"nativeSrc":"39674:53:55","nodeType":"YulVariableDeclaration","src":"39674:53:55","value":{"arguments":[{"name":"value","nativeSrc":"39721:5:55","nodeType":"YulIdentifier","src":"39721:5:55"}],"functionName":{"name":"array_length_t_string_memory_ptr","nativeSrc":"39688:32:55","nodeType":"YulIdentifier","src":"39688:32:55"},"nativeSrc":"39688:39:55","nodeType":"YulFunctionCall","src":"39688:39:55"},"variables":[{"name":"length","nativeSrc":"39678:6:55","nodeType":"YulTypedName","src":"39678:6:55","type":""}]},{"nativeSrc":"39736:78:55","nodeType":"YulAssignment","src":"39736:78:55","value":{"arguments":[{"name":"pos","nativeSrc":"39802:3:55","nodeType":"YulIdentifier","src":"39802:3:55"},{"name":"length","nativeSrc":"39807:6:55","nodeType":"YulIdentifier","src":"39807:6:55"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"39743:58:55","nodeType":"YulIdentifier","src":"39743:58:55"},"nativeSrc":"39743:71:55","nodeType":"YulFunctionCall","src":"39743:71:55"},"variableNames":[{"name":"pos","nativeSrc":"39736:3:55","nodeType":"YulIdentifier","src":"39736:3:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"39862:5:55","nodeType":"YulIdentifier","src":"39862:5:55"},{"kind":"number","nativeSrc":"39869:4:55","nodeType":"YulLiteral","src":"39869:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"39858:3:55","nodeType":"YulIdentifier","src":"39858:3:55"},"nativeSrc":"39858:16:55","nodeType":"YulFunctionCall","src":"39858:16:55"},{"name":"pos","nativeSrc":"39876:3:55","nodeType":"YulIdentifier","src":"39876:3:55"},{"name":"length","nativeSrc":"39881:6:55","nodeType":"YulIdentifier","src":"39881:6:55"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"39823:34:55","nodeType":"YulIdentifier","src":"39823:34:55"},"nativeSrc":"39823:65:55","nodeType":"YulFunctionCall","src":"39823:65:55"},"nativeSrc":"39823:65:55","nodeType":"YulExpressionStatement","src":"39823:65:55"},{"nativeSrc":"39897:46:55","nodeType":"YulAssignment","src":"39897:46:55","value":{"arguments":[{"name":"pos","nativeSrc":"39908:3:55","nodeType":"YulIdentifier","src":"39908:3:55"},{"arguments":[{"name":"length","nativeSrc":"39935:6:55","nodeType":"YulIdentifier","src":"39935:6:55"}],"functionName":{"name":"round_up_to_mul_of_32","nativeSrc":"39913:21:55","nodeType":"YulIdentifier","src":"39913:21:55"},"nativeSrc":"39913:29:55","nodeType":"YulFunctionCall","src":"39913:29:55"}],"functionName":{"name":"add","nativeSrc":"39904:3:55","nodeType":"YulIdentifier","src":"39904:3:55"},"nativeSrc":"39904:39:55","nodeType":"YulFunctionCall","src":"39904:39:55"},"variableNames":[{"name":"end","nativeSrc":"39897:3:55","nodeType":"YulIdentifier","src":"39897:3:55"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nativeSrc":"39572:377:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"39645:5:55","nodeType":"YulTypedName","src":"39645:5:55","type":""},{"name":"pos","nativeSrc":"39652:3:55","nodeType":"YulTypedName","src":"39652:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"39660:3:55","nodeType":"YulTypedName","src":"39660:3:55","type":""}],"src":"39572:377:55"},{"body":{"nativeSrc":"40073:195:55","nodeType":"YulBlock","src":"40073:195:55","statements":[{"nativeSrc":"40083:26:55","nodeType":"YulAssignment","src":"40083:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"40095:9:55","nodeType":"YulIdentifier","src":"40095:9:55"},{"kind":"number","nativeSrc":"40106:2:55","nodeType":"YulLiteral","src":"40106:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"40091:3:55","nodeType":"YulIdentifier","src":"40091:3:55"},"nativeSrc":"40091:18:55","nodeType":"YulFunctionCall","src":"40091:18:55"},"variableNames":[{"name":"tail","nativeSrc":"40083:4:55","nodeType":"YulIdentifier","src":"40083:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"40130:9:55","nodeType":"YulIdentifier","src":"40130:9:55"},{"kind":"number","nativeSrc":"40141:1:55","nodeType":"YulLiteral","src":"40141:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"40126:3:55","nodeType":"YulIdentifier","src":"40126:3:55"},"nativeSrc":"40126:17:55","nodeType":"YulFunctionCall","src":"40126:17:55"},{"arguments":[{"name":"tail","nativeSrc":"40149:4:55","nodeType":"YulIdentifier","src":"40149:4:55"},{"name":"headStart","nativeSrc":"40155:9:55","nodeType":"YulIdentifier","src":"40155:9:55"}],"functionName":{"name":"sub","nativeSrc":"40145:3:55","nodeType":"YulIdentifier","src":"40145:3:55"},"nativeSrc":"40145:20:55","nodeType":"YulFunctionCall","src":"40145:20:55"}],"functionName":{"name":"mstore","nativeSrc":"40119:6:55","nodeType":"YulIdentifier","src":"40119:6:55"},"nativeSrc":"40119:47:55","nodeType":"YulFunctionCall","src":"40119:47:55"},"nativeSrc":"40119:47:55","nodeType":"YulExpressionStatement","src":"40119:47:55"},{"nativeSrc":"40175:86:55","nodeType":"YulAssignment","src":"40175:86:55","value":{"arguments":[{"name":"value0","nativeSrc":"40247:6:55","nodeType":"YulIdentifier","src":"40247:6:55"},{"name":"tail","nativeSrc":"40256:4:55","nodeType":"YulIdentifier","src":"40256:4:55"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nativeSrc":"40183:63:55","nodeType":"YulIdentifier","src":"40183:63:55"},"nativeSrc":"40183:78:55","nodeType":"YulFunctionCall","src":"40183:78:55"},"variableNames":[{"name":"tail","nativeSrc":"40175:4:55","nodeType":"YulIdentifier","src":"40175:4:55"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"39955:313:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"40045:9:55","nodeType":"YulTypedName","src":"40045:9:55","type":""},{"name":"value0","nativeSrc":"40057:6:55","nodeType":"YulTypedName","src":"40057:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"40068:4:55","nodeType":"YulTypedName","src":"40068:4:55","type":""}],"src":"39955:313:55"}]},"contents":"{\n\n    function cleanup_t_uint160(value) -> cleaned {\n        cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n    }\n\n    function identity(value) -> ret {\n        ret := value\n    }\n\n    function convert_t_uint160_to_t_uint160(value) -> converted {\n        converted := cleanup_t_uint160(identity(cleanup_t_uint160(value)))\n    }\n\n    function convert_t_uint160_to_t_address(value) -> converted {\n        converted := convert_t_uint160_to_t_uint160(value)\n    }\n\n    function convert_t_contract$_SwapHelper_$8322_to_t_address(value) -> converted {\n        converted := convert_t_uint160_to_t_address(value)\n    }\n\n    function abi_encode_t_contract$_SwapHelper_$8322_to_t_address_fromStack(value, pos) {\n        mstore(pos, convert_t_contract$_SwapHelper_$8322_to_t_address(value))\n    }\n\n    function abi_encode_tuple_t_contract$_SwapHelper_$8322__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n        tail := add(headStart, 32)\n\n        abi_encode_t_contract$_SwapHelper_$8322_to_t_address_fromStack(value0,  add(headStart, 0))\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_address(value) -> cleaned {\n        cleaned := cleanup_t_uint160(value)\n    }\n\n    function cleanup_t_contract$_IVToken_$5277(value) -> cleaned {\n        cleaned := cleanup_t_address(value)\n    }\n\n    function validator_revert_t_contract$_IVToken_$5277(value) {\n        if iszero(eq(value, cleanup_t_contract$_IVToken_$5277(value))) { revert(0, 0) }\n    }\n\n    function abi_decode_t_contract$_IVToken_$5277(offset, end) -> value {\n        value := calldataload(offset)\n        validator_revert_t_contract$_IVToken_$5277(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 revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n        revert(0, 0)\n    }\n\n    function revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() {\n        revert(0, 0)\n    }\n\n    function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n        revert(0, 0)\n    }\n\n    // bytes\n    function abi_decode_t_bytes_calldata_ptr(offset, end) -> arrayPos, length {\n        if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n        arrayPos := add(offset, 0x20)\n        if gt(add(arrayPos, mul(length, 0x01)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n    }\n\n    function abi_decode_tuple_t_contract$_IVToken_$5277t_contract$_IVToken_$5277t_uint256t_uint256t_uint256t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6 {\n        if slt(sub(dataEnd, headStart), 192) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_contract$_IVToken_$5277(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 32\n\n            value1 := abi_decode_t_contract$_IVToken_$5277(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            let offset := 96\n\n            value3 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 128\n\n            value4 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := calldataload(add(headStart, 160))\n            if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n            value5, value6 := abi_decode_t_bytes_calldata_ptr(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function convert_t_contract$_IVToken_$5277_to_t_address(value) -> converted {\n        converted := convert_t_uint160_to_t_address(value)\n    }\n\n    function abi_encode_t_contract$_IVToken_$5277_to_t_address_fromStack(value, pos) {\n        mstore(pos, convert_t_contract$_IVToken_$5277_to_t_address(value))\n    }\n\n    function abi_encode_tuple_t_contract$_IVToken_$5277__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n        tail := add(headStart, 32)\n\n        abi_encode_t_contract$_IVToken_$5277_to_t_address_fromStack(value0,  add(headStart, 0))\n\n    }\n\n    function abi_decode_tuple_t_contract$_IVToken_$5277t_uint256t_contract$_IVToken_$5277t_uint256t_uint256t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6 {\n        if slt(sub(dataEnd, headStart), 192) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_contract$_IVToken_$5277(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 32\n\n            value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 64\n\n            value2 := abi_decode_t_contract$_IVToken_$5277(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 96\n\n            value3 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 128\n\n            value4 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := calldataload(add(headStart, 160))\n            if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n            value5, value6 := abi_decode_t_bytes_calldata_ptr(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function abi_decode_tuple_t_contract$_IVToken_$5277t_uint256t_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_contract$_IVToken_$5277(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 32\n\n            value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 64\n\n            value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function convert_t_contract$_IComptroller_$5454_to_t_address(value) -> converted {\n        converted := convert_t_uint160_to_t_address(value)\n    }\n\n    function abi_encode_t_contract$_IComptroller_$5454_to_t_address_fromStack(value, pos) {\n        mstore(pos, convert_t_contract$_IComptroller_$5454_to_t_address(value))\n    }\n\n    function abi_encode_tuple_t_contract$_IComptroller_$5454__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n        tail := add(headStart, 32)\n\n        abi_encode_t_contract$_IComptroller_$5454_to_t_address_fromStack(value0,  add(headStart, 0))\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_contract$_IVToken_$5277t_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_contract$_IVToken_$5277(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 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 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    // contract IVToken[]\n    function abi_decode_t_array$_t_contract$_IVToken_$5277_$dyn_calldata_ptr(offset, end) -> arrayPos, length {\n        if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n        arrayPos := add(offset, 0x20)\n        if gt(add(arrayPos, mul(length, 0x20)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n    }\n\n    // uint256[]\n    function abi_decode_t_array$_t_uint256_$dyn_calldata_ptr(offset, end) -> arrayPos, length {\n        if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n        arrayPos := add(offset, 0x20)\n        if gt(add(arrayPos, mul(length, 0x20)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n    }\n\n    function abi_decode_tuple_t_array$_t_contract$_IVToken_$5277_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptrt_addresst_addresst_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7, value8, value9 {\n        if slt(sub(dataEnd, headStart), 192) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n        {\n\n            let offset := calldataload(add(headStart, 0))\n            if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n            value0, value1 := abi_decode_t_array$_t_contract$_IVToken_$5277_$dyn_calldata_ptr(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := calldataload(add(headStart, 32))\n            if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n            value2, value3 := abi_decode_t_array$_t_uint256_$dyn_calldata_ptr(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := calldataload(add(headStart, 64))\n            if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n            value4, value5 := abi_decode_t_array$_t_uint256_$dyn_calldata_ptr(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 96\n\n            value6 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 128\n\n            value7 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := calldataload(add(headStart, 160))\n            if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n            value8, value9 := abi_decode_t_bytes_calldata_ptr(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 array_length_t_array$_t_uint256_$dyn_memory_ptr(value) -> length {\n\n        length := mload(value)\n\n    }\n\n    function array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack(pos, length) -> updated_pos {\n        mstore(pos, length)\n        updated_pos := add(pos, 0x20)\n    }\n\n    function array_dataslot_t_array$_t_uint256_$dyn_memory_ptr(ptr) -> data {\n        data := ptr\n\n        data := add(ptr, 0x20)\n\n    }\n\n    function abi_encode_t_uint256_to_t_uint256(value, pos) {\n        mstore(pos, cleanup_t_uint256(value))\n    }\n\n    function abi_encodeUpdatedPos_t_uint256_to_t_uint256(value0, pos) -> updatedPos {\n        abi_encode_t_uint256_to_t_uint256(value0, pos)\n        updatedPos := add(pos, 0x20)\n    }\n\n    function array_nextElement_t_array$_t_uint256_$dyn_memory_ptr(ptr) -> next {\n        next := add(ptr, 0x20)\n    }\n\n    // uint256[] -> uint256[]\n    function abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value, pos)  -> end  {\n        let length := array_length_t_array$_t_uint256_$dyn_memory_ptr(value)\n        pos := array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack(pos, length)\n        let baseRef := array_dataslot_t_array$_t_uint256_$dyn_memory_ptr(value)\n        let srcPtr := baseRef\n        for { let i := 0 } lt(i, length) { i := add(i, 1) }\n        {\n            let elementValue0 := mload(srcPtr)\n            pos := abi_encodeUpdatedPos_t_uint256_to_t_uint256(elementValue0, pos)\n            srcPtr := array_nextElement_t_array$_t_uint256_$dyn_memory_ptr(srcPtr)\n        }\n        end := pos\n    }\n\n    function abi_encode_tuple_t_bool_t_array$_t_uint256_$dyn_memory_ptr__to_t_bool_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart , value1, value0) -> tail {\n        tail := add(headStart, 64)\n\n        abi_encode_t_bool_to_t_bool_fromStack(value0,  add(headStart, 0))\n\n        mstore(add(headStart, 32), sub(tail, headStart))\n        tail := abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value1,  tail)\n\n    }\n\n    function panic_error_0x21() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n\n    function panic_error_0x41() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n\n    function panic_error_0x32() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n\n    function cleanup_t_address_payable(value) -> cleaned {\n        cleaned := cleanup_t_uint160(value)\n    }\n\n    function abi_encode_t_address_payable_to_t_address_payable_fromStack(value, pos) {\n        mstore(pos, cleanup_t_address_payable(value))\n    }\n\n    function array_length_t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr(value) -> length {\n\n        length := mload(value)\n\n    }\n\n    function array_storeLengthForEncoding_t_array$_t_address_$dyn_memory_ptr_fromStack(pos, length) -> updated_pos {\n        mstore(pos, length)\n        updated_pos := add(pos, 0x20)\n    }\n\n    function array_dataslot_t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr(ptr) -> data {\n        data := ptr\n\n        data := add(ptr, 0x20)\n\n    }\n\n    function abi_encode_t_contract$_IVToken_$5277_to_t_address(value, pos) {\n        mstore(pos, convert_t_contract$_IVToken_$5277_to_t_address(value))\n    }\n\n    function abi_encodeUpdatedPos_t_contract$_IVToken_$5277_to_t_address(value0, pos) -> updatedPos {\n        abi_encode_t_contract$_IVToken_$5277_to_t_address(value0, pos)\n        updatedPos := add(pos, 0x20)\n    }\n\n    function array_nextElement_t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr(ptr) -> next {\n        next := add(ptr, 0x20)\n    }\n\n    // contract IVToken[] -> address[]\n    function abi_encode_t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr_fromStack(value, pos)  -> end  {\n        let length := array_length_t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr(value)\n        pos := array_storeLengthForEncoding_t_array$_t_address_$dyn_memory_ptr_fromStack(pos, length)\n        let baseRef := array_dataslot_t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr(value)\n        let srcPtr := baseRef\n        for { let i := 0 } lt(i, length) { i := add(i, 1) }\n        {\n            let elementValue0 := mload(srcPtr)\n            pos := abi_encodeUpdatedPos_t_contract$_IVToken_$5277_to_t_address(elementValue0, pos)\n            srcPtr := array_nextElement_t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr(srcPtr)\n        }\n        end := pos\n    }\n\n    function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n        mstore(pos, length)\n        updated_pos := add(pos, 0x20)\n    }\n\n    function copy_calldata_to_memory_with_cleanup(src, dst, length) {\n\n        calldatacopy(dst, src, length)\n        mstore(add(dst, length), 0)\n\n    }\n\n    function round_up_to_mul_of_32(value) -> result {\n        result := and(add(value, 31), not(31))\n    }\n\n    // bytes -> bytes\n    function abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack(start, length, pos) -> end {\n        pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n\n        copy_calldata_to_memory_with_cleanup(start, pos, length)\n        end := add(pos, round_up_to_mul_of_32(length))\n    }\n\n    function abi_encode_tuple_t_address_payable_t_address_payable_t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_calldata_ptr__to_t_address_payable_t_address_payable_t_array$_t_address_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart , value5, value4, value3, value2, value1, value0) -> tail {\n        tail := add(headStart, 160)\n\n        abi_encode_t_address_payable_to_t_address_payable_fromStack(value0,  add(headStart, 0))\n\n        abi_encode_t_address_payable_to_t_address_payable_fromStack(value1,  add(headStart, 32))\n\n        mstore(add(headStart, 64), sub(tail, headStart))\n        tail := abi_encode_t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr_fromStack(value2,  tail)\n\n        mstore(add(headStart, 96), sub(tail, headStart))\n        tail := abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value3,  tail)\n\n        mstore(add(headStart, 128), sub(tail, headStart))\n        tail := abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack(value4, value5,  tail)\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_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n        tail := add(headStart, 64)\n\n        abi_encode_t_uint256_to_t_uint256_fromStack(value0,  add(headStart, 0))\n\n        abi_encode_t_uint256_to_t_uint256_fromStack(value1,  add(headStart, 32))\n\n    }\n\n    function store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470(memPtr) {\n\n    }\n\n    function abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, 0)\n        store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470(pos)\n        end := add(pos, 0)\n    }\n\n    function abi_encode_tuple_t_address_payable_t_address_payable_t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_payable_t_address_payable_t_array$_t_address_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n        tail := add(headStart, 160)\n\n        abi_encode_t_address_payable_to_t_address_payable_fromStack(value0,  add(headStart, 0))\n\n        abi_encode_t_address_payable_to_t_address_payable_fromStack(value1,  add(headStart, 32))\n\n        mstore(add(headStart, 64), sub(tail, headStart))\n        tail := abi_encode_t_array$_t_contract$_IVToken_$5277_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr_fromStack(value2,  tail)\n\n        mstore(add(headStart, 96), sub(tail, headStart))\n        tail := abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value3,  tail)\n\n        mstore(add(headStart, 128), sub(tail, headStart))\n        tail := abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_fromStack( tail)\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 store_literal_in_memory_225559eb8402045bea7ff07c35d0ad8c0547830223ac1c21d44fb948d6896ebc(memPtr) {\n\n        mstore(add(memPtr, 0), \"Ownable2Step: caller is not the \")\n\n        mstore(add(memPtr, 32), \"new owner\")\n\n    }\n\n    function abi_encode_t_stringliteral_225559eb8402045bea7ff07c35d0ad8c0547830223ac1c21d44fb948d6896ebc_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 41)\n        store_literal_in_memory_225559eb8402045bea7ff07c35d0ad8c0547830223ac1c21d44fb948d6896ebc(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_225559eb8402045bea7ff07c35d0ad8c0547830223ac1c21d44fb948d6896ebc__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_225559eb8402045bea7ff07c35d0ad8c0547830223ac1c21d44fb948d6896ebc_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759(memPtr) {\n\n        mstore(add(memPtr, 0), \"Initializable: contract is alrea\")\n\n        mstore(add(memPtr, 32), \"dy initialized\")\n\n    }\n\n    function abi_encode_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 46)\n        store_literal_in_memory_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__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_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function cleanup_t_rational_1_by_1(value) -> cleaned {\n        cleaned := value\n    }\n\n    function cleanup_t_uint8(value) -> cleaned {\n        cleaned := and(value, 0xff)\n    }\n\n    function convert_t_rational_1_by_1_to_t_uint8(value) -> converted {\n        converted := cleanup_t_uint8(identity(cleanup_t_rational_1_by_1(value)))\n    }\n\n    function abi_encode_t_rational_1_by_1_to_t_uint8_fromStack(value, pos) {\n        mstore(pos, convert_t_rational_1_by_1_to_t_uint8(value))\n    }\n\n    function abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed(headStart , value0) -> tail {\n        tail := add(headStart, 32)\n\n        abi_encode_t_rational_1_by_1_to_t_uint8_fromStack(value0,  add(headStart, 0))\n\n    }\n\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n        tail := add(headStart, 32)\n\n        abi_encode_t_uint256_to_t_uint256_fromStack(value0,  add(headStart, 0))\n\n    }\n\n    function abi_decode_tuple_t_contract$_IVToken_$5277(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_contract$_IVToken_$5277(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function validator_revert_t_bool(value) {\n        if iszero(eq(value, cleanup_t_bool(value))) { revert(0, 0) }\n    }\n\n    function abi_decode_t_bool_fromMemory(offset, end) -> value {\n        value := mload(offset)\n        validator_revert_t_bool(value)\n    }\n\n    function abi_decode_t_uint256_fromMemory(offset, end) -> value {\n        value := mload(offset)\n        validator_revert_t_uint256(value)\n    }\n\n    function abi_decode_tuple_t_boolt_uint256t_bool_fromMemory(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_bool_fromMemory(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 32\n\n            value1 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 64\n\n            value2 := abi_decode_t_bool_fromMemory(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart , value1, value0) -> tail {\n        tail := add(headStart, 64)\n\n        abi_encode_t_address_to_t_address_fromStack(value0,  add(headStart, 0))\n\n        abi_encode_t_address_to_t_address_fromStack(value1,  add(headStart, 32))\n\n    }\n\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0 {\n        if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_bool_fromMemory(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0 {\n        if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function abi_encode_tuple_t_address_t_contract$_IVToken_$5277__to_t_address_t_address__fromStack_reversed(headStart , value1, value0) -> tail {\n        tail := add(headStart, 64)\n\n        abi_encode_t_address_to_t_address_fromStack(value0,  add(headStart, 0))\n\n        abi_encode_t_contract$_IVToken_$5277_to_t_address_fromStack(value1,  add(headStart, 32))\n\n    }\n\n    function abi_decode_tuple_t_uint256t_uint256t_uint256_fromMemory(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_uint256_fromMemory(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 32\n\n            value1 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 64\n\n            value2 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function abi_decode_t_address_fromMemory(offset, end) -> value {\n        value := mload(offset)\n        validator_revert_t_address(value)\n    }\n\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0 {\n        if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n        }\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_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b(memPtr) {\n\n        mstore(add(memPtr, 0), \"Initializable: contract is not i\")\n\n        mstore(add(memPtr, 32), \"nitializing\")\n\n    }\n\n    function abi_encode_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 43)\n        store_literal_in_memory_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__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_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619(memPtr) {\n\n        mstore(add(memPtr, 0), \"ReentrancyGuard: reentrant call\")\n\n    }\n\n    function abi_encode_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 31)\n        store_literal_in_memory_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619(pos)\n        end := add(pos, 32)\n    }\n\n    function abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__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_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function panic_error_0x11() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n\n    function checked_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 abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n        tail := add(headStart, 64)\n\n        abi_encode_t_address_to_t_address_fromStack(value0,  add(headStart, 0))\n\n        abi_encode_t_uint256_to_t_uint256_fromStack(value1,  add(headStart, 32))\n\n    }\n\n    function 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 checked_mul_t_uint256(x, y) -> product {\n        x := cleanup_t_uint256(x)\n        y := cleanup_t_uint256(y)\n        let product_raw := mul(x, y)\n        product := cleanup_t_uint256(product_raw)\n\n        // overflow, if x != 0 and y != product/x\n        if iszero(\n            or(\n                iszero(x),\n                eq(y, div(product, x))\n            )\n        ) { panic_error_0x11() }\n\n    }\n\n    function panic_error_0x12() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n\n    function checked_div_t_uint256(x, y) -> r {\n        x := cleanup_t_uint256(x)\n        y := cleanup_t_uint256(y)\n        if iszero(y) { panic_error_0x12() }\n\n        r := div(x, y)\n    }\n\n    function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n        tail := add(headStart, 96)\n\n        abi_encode_t_address_to_t_address_fromStack(value0,  add(headStart, 0))\n\n        abi_encode_t_address_to_t_address_fromStack(value1,  add(headStart, 32))\n\n        abi_encode_t_uint256_to_t_uint256_fromStack(value2,  add(headStart, 64))\n\n    }\n\n    function cleanup_t_rational_0_by_1(value) -> cleaned {\n        cleaned := value\n    }\n\n    function convert_t_rational_0_by_1_to_t_uint8(value) -> converted {\n        converted := cleanup_t_uint8(identity(cleanup_t_rational_0_by_1(value)))\n    }\n\n    function abi_encode_t_rational_0_by_1_to_t_uint8_fromStack(value, pos) {\n        mstore(pos, convert_t_rational_0_by_1_to_t_uint8(value))\n    }\n\n    function abi_encode_tuple_t_address_t_rational_0_by_1__to_t_address_t_uint8__fromStack_reversed(headStart , value1, value0) -> tail {\n        tail := add(headStart, 64)\n\n        abi_encode_t_address_to_t_address_fromStack(value0,  add(headStart, 0))\n\n        abi_encode_t_rational_0_by_1_to_t_uint8_fromStack(value1,  add(headStart, 32))\n\n    }\n\n    function array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n        updated_pos := pos\n    }\n\n    // bytes -> bytes\n    function abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(start, length, pos) -> end {\n        pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n\n        copy_calldata_to_memory_with_cleanup(start, pos, length)\n        end := add(pos, length)\n    }\n\n    function abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value1, value0) -> end {\n\n        pos := abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value0, value1,  pos)\n\n        end := pos\n    }\n\n    function store_literal_in_memory_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd(memPtr) {\n\n        mstore(add(memPtr, 0), \"SafeERC20: ERC20 operation did n\")\n\n        mstore(add(memPtr, 32), \"ot succeed\")\n\n    }\n\n    function abi_encode_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 42)\n        store_literal_in_memory_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd__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_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function array_length_t_bytes_memory_ptr(value) -> length {\n\n        length := mload(value)\n\n    }\n\n    function copy_memory_to_memory_with_cleanup(src, dst, length) {\n\n        mcopy(dst, src, length)\n        mstore(add(dst, length), 0)\n\n    }\n\n    function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n        let length := array_length_t_bytes_memory_ptr(value)\n        pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n        copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n        end := add(pos, length)\n    }\n\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value0) -> end {\n\n        pos := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value0,  pos)\n\n        end := pos\n    }\n\n    function store_literal_in_memory_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c(memPtr) {\n\n        mstore(add(memPtr, 0), \"Address: insufficient balance fo\")\n\n        mstore(add(memPtr, 32), \"r call\")\n\n    }\n\n    function abi_encode_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 38)\n        store_literal_in_memory_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__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_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad(memPtr) {\n\n        mstore(add(memPtr, 0), \"Address: call to non-contract\")\n\n    }\n\n    function abi_encode_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 29)\n        store_literal_in_memory_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad(pos)\n        end := add(pos, 32)\n    }\n\n    function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__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_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function array_length_t_string_memory_ptr(value) -> length {\n\n        length := mload(value)\n\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}\n","id":55,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"5792":[{"length":32,"start":408},{"length":32,"start":999},{"length":32,"start":1632},{"length":32,"start":2151},{"length":32,"start":2930},{"length":32,"start":3485},{"length":32,"start":3816},{"length":32,"start":4815},{"length":32,"start":5076},{"length":32,"start":5379},{"length":32,"start":5526},{"length":32,"start":5689},{"length":32,"start":7959},{"length":32,"start":9142}],"5796":[{"length":32,"start":249},{"length":32,"start":10701},{"length":32,"start":10852}],"5800":[{"length":32,"start":331},{"length":32,"start":4969}]},"linkReferences":{},"object":"608060405234801561000f575f5ffd5b50600436106100f0575f3560e01c806379ba509711610093578063c78befbe11610063578063c78befbe146101ff578063e30c397814610212578063f2fde38b14610223578063fc08f9f614610236575f5ffd5b806379ba5097146101c25780638129fc1c146101ca5780638da5cb5b146101d2578063c6cd25f6146101ec575f5ffd5b80633a8f8c43116100ce5780633a8f8c431461016d5780633c3a2c21146101805780635f82c67e14610193578063715018a6146101ba575f5ffd5b80630fc6a11c146100f4578063134248011461013157806333e1567f14610146575b5f5ffd5b61011b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516101289190612e2a565b60405180910390f35b61014461013f366004612eb5565b610257565b005b61011b7f000000000000000000000000000000000000000000000000000000000000000081565b61014461017b366004612f59565b6104d0565b61014461018e366004612f9f565b61073e565b61011b7f000000000000000000000000000000000000000000000000000000000000000081565b610144610935565b610144610948565b610144610989565b6033546001600160a01b03165b6040516101289190612ff4565b6101446101fa366004613002565b610a59565b61014461020d366004612f59565b610c3d565b6065546001600160a01b03166101df565b610144610231366004613050565b610e61565b6102496102443660046130b5565b610ed2565b60405161012892919061321b565b835f03610277576040516362ec8de760e01b815260040160405180910390fd5b856001600160a01b0316876001600160a01b0316036102a957604051637239c0db60e11b815260040160405180910390fd5b6102b2876112b6565b6102bb866112b6565b6102c36113bd565b6102cc87611467565b6102d586611467565b6102df33886114ec565b6102e833611635565b6102f38633876116f5565b335f805c610100600160a81b031916610100830217905d50866001805c6001600160a01b0319166001600160a01b03831617905d50848060035d50828060045d5060035f805c60ff19168217905d506040805160018082528183019092525f916020808301908036833701905050905086815f815181106103765761037661324f565b6001600160a01b0392909216602092830291909101909101526040805160018082528183019092525f9181602001602082028036833701905050905085815f815181106103c5576103c561324f565b60209081029190910101526040516315513b6760e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635544ed9c906104269033903090879087908b908b906004016132dd565b5f604051808303815f87803b15801561043d575f5ffd5b505af115801561044f573d5f5f3e3d5ffd5b5050505061045c33611635565b876001600160a01b0316896001600160a01b0316336001600160a01b03167f4bdf2f6f97b9e53fbb880300a2b1e8f12110f6cbcc3279602053bcf6f5e051038a8a6040516104ab929190613333565b60405180910390a46104bc89611773565b6104c588611773565b505050505050505050565b835f036104f0576040516362ec8de760e01b815260040160405180910390fd5b846001600160a01b0316876001600160a01b03160361052257604051637239c0db60e11b815260040160405180910390fd5b61052b876112b6565b610534856112b6565b61053c6113bd565b61054587611467565b61054e85611467565b61055833886114ec565b61056133611635565b61056c8733886116f5565b335f805c610100600160a81b031916610100830217905d50866001805c6001600160a01b0319166001600160a01b03831617905d50858060025d50828060045d5060025f805c60ff19168217905d506040805160018082528183019092525f916020808301908036833701905050905085815f815181106105ef576105ef61324f565b6001600160a01b0392909216602092830291909101909101526040805160018082528183019092525f9181602001602082028036833701905050905085815f8151811061063e5761063e61324f565b60209081029190910101526040516315513b6760e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635544ed9c9061069f9033903090879087908b908b906004016132dd565b5f604051808303815f87803b1580156106b6575f5ffd5b505af11580156106c8573d5f5f3e3d5ffd5b505050506106d533611635565b866001600160a01b0316896001600160a01b0316336001600160a01b03167f2535d675850d7c542dc54c7aa081f27a11d1b0df3f3db67275ce0a9d056274348b8a604051610724929190613333565b60405180910390a461073589611773565b6104c587611773565b805f0361075e576040516362ec8de760e01b815260040160405180910390fd5b610767836112b6565b61076f6113bd565b61077883611467565b61078233846114ec565b61078b33611635565b6107968333846116f5565b335f805c610100600160a81b031916610100830217905d5060015f805c60ff19168217905d50818060025d506040805160018082528183019092525f916020808301908036833701905050905083815f815181106107f6576107f661324f565b6001600160a01b0392909216602092830291909101909101526040805160018082528183019092525f9181602001602082028036833701905050905082815f815181106108455761084561324f565b60209081029190910101526040516315513b6760e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635544ed9c906108a290339030908790879060040161334e565b5f604051808303815f87803b1580156108b9575f5ffd5b505af11580156108cb573d5f5f3e3d5ffd5b505050506108d833611635565b846001600160a01b0316336001600160a01b03167f49cef9d2c3f3f5785b1ad7facb0837a43e60a785a0141101e658f5565664cd89868660405161091d929190613333565b60405180910390a361092e85611773565b5050505050565b61093d6118b9565b6109465f6118e3565b565b60655433906001600160a01b0316811461097d5760405162461bcd60e51b8152600401610974906133f2565b60405180910390fd5b610986816118e3565b50565b5f54610100900460ff16158080156109a757505f54600160ff909116105b806109c05750303b1580156109c057505f5460ff166001145b6109dc5760405162461bcd60e51b81526004016109749061344c565b5f805460ff1916600117905580156109fd575f805461ff0019166101001790555b610a056118fc565b610a0d61192a565b8015610986575f805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890610a4e9060019061346f565b60405180910390a150565b805f03610a79576040516362ec8de760e01b815260040160405180910390fd5b610a82826112b6565b610a8a6113bd565b335f805c610100600160a81b031916610100830217905d50816001805c6001600160a01b0319166001600160a01b03831617905d5060055f805c60ff19168217905d506040805160018082528183019092525f916020808301908036833701905050905082815f81518110610b0157610b0161324f565b6001600160a01b0392909216602092830291909101909101526040805160018082528183019092525f9181602001602082028036833701905050905082815f81518110610b5057610b5061324f565b60209081029190910101526040516315513b6760e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635544ed9c90610bad90339030908790879060040161334e565b5f604051808303815f87803b158015610bc4575f5ffd5b505af1158015610bd6573d5f5f3e3d5ffd5b50505050610be333611635565b836001600160a01b0316336001600160a01b03167f9858e3a66fd738b1f0f73208c9090ca5a20ee504df594271e464d4bb4cda0e6f85604051610c26919061347d565b60405180910390a3610c3784611773565b50505050565b835f03610c5d576040516362ec8de760e01b815260040160405180910390fd5b846001600160a01b0316876001600160a01b031603610c8f57604051637239c0db60e11b815260040160405180910390fd5b610c98876112b6565b610ca1856112b6565b610ca96113bd565b335f805c610100600160a81b031916610100830217905d50866001805c6001600160a01b0319166001600160a01b03831617905d50858060025d50828060045d5060045f805c60ff19168217905d506040805160018082528183019092525f916020808301908036833701905050905085815f81518110610d2c57610d2c61324f565b6001600160a01b0392909216602092830291909101909101526040805160018082528183019092525f9181602001602082028036833701905050905085815f81518110610d7b57610d7b61324f565b60209081029190910101526040516315513b6760e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635544ed9c90610ddc9033903090879087908b908b906004016132dd565b5f604051808303815f87803b158015610df3575f5ffd5b505af1158015610e05573d5f5f3e3d5ffd5b50505050610e1233611635565b866001600160a01b0316896001600160a01b0316336001600160a01b03167fc40371cee960c145e7af5e62a37dfd2f97089c030c2427ad853ae214e815ebed8b8a604051610724929190613333565b610e696118b9565b606580546001600160a01b0383166001600160a01b03199091168117909155610e9a6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f6060610edd611958565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f26576040516341c8302160e11b815260040160405180910390fd5b6001600160a01b0386163014610f4f576040516304db910d60e01b815260040160405180910390fd5b6101005f5c046001600160a01b0390811690861614610f8157604051632a057c4360e01b815260040160405180910390fd5b60018b141580610f92575060018914155b80610f9e575060018714155b15610fbc57604051634f7d8fbd60e11b815260040160405180910390fd5b6040805160018082528183019092529060208083019080368337019050509050600160ff5f5c166005811115610ff457610ff461323b565b0361107e5761105b858d8d5f81811061100f5761100f61324f565b9050602002016020810190611024919061348b565b8c8c5f8181106110365761103661324f565b905060200201358b8b5f81811061104f5761104f61324f565b90506020020135611981565b815f8151811061106d5761106d61324f565b602002602001018181525050611299565b600260ff5f5c1660058111156110965761109661323b565b036110ff5761105b858d8d5f8181106110b1576110b161324f565b90506020020160208101906110c6919061348b565b8c8c5f8181106110d8576110d861324f565b905060200201358b8b5f8181106110f1576110f161324f565b905060200201358888611ab3565b600360ff5f5c1660058111156111175761111761323b565b036111805761105b858d8d5f8181106111325761113261324f565b9050602002016020810190611147919061348b565b8c8c5f8181106111595761115961324f565b905060200201358b8b5f8181106111725761117261324f565b905060200201358888611c6e565b600460ff5f5c1660058111156111985761119861323b565b036112015761105b858d8d5f8181106111b3576111b361324f565b90506020020160208101906111c8919061348b565b8c8c5f8181106111da576111da61324f565b905060200201358b8b5f8181106111f3576111f361324f565b905060200201358888611d63565b600560ff5f5c1660058111156112195761121961323b565b036112805761105b858d8d5f8181106112345761123461324f565b9050602002016020810190611249919061348b565b8c8c5f81811061125b5761125b61324f565b905060200201358b8b5f8181106112745761127461324f565b9050602002013561221b565b604051639c3c956760e01b815260040160405180910390fd5b600191506112a76001609755565b9a509a98505050505050505050565b604051638e8f294b60e01b81525f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638e8f294b90611304908590600401612ff4565b606060405180830381865afa15801561131f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061134391906134c7565b50509050806113675781604051635a9a1eb960e11b81526004016109749190612ff4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036113b95760405163baeccefd60e01b815260040160405180910390fd5b5050565b604051630217306760e31b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906310b983389061140b9033903090600401613509565b602060405180830381865afa158015611426573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061144a9190613524565b610946576040516337248ad960e01b815260040160405180910390fd5b5f816001600160a01b031663a6afed956040518163ffffffff1660e01b81526004016020604051808303815f875af11580156114a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114c99190613542565b905080156113b957806040516315fc6cbf60e21b8152600401610974919061347d565b60405163929fe9a160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063929fe9a19061153a9085908590600401613560565b602060405180830381865afa158015611555573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115799190613524565b6113b957604051636ac2e1e360e11b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d585c3c6906115cd9086908690600401613509565b6020604051808303815f875af11580156115e9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061160d9190613542565b905080156116305780604051631957d10560e31b8152600401610974919061347d565b505050565b5f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663528a174c846040518263ffffffff1660e01b81526004016116839190612ff4565b606060405180830381865afa15801561169e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116c2919061357b565b92505091505f821415806116d557505f81115b1561163057816040516347749fcb60e01b8152600401610974919061347d565b8015611630575f836001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611738573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061175c91906135c8565b9050610c376001600160a01b03821684308561265e565b5f816001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117b0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117d491906135c8565b90505f816001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016118039190612ff4565b602060405180830381865afa15801561181e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118429190613542565b90508015611630576001600160a01b036101005f5c0481169061186890841682846126b6565b826001600160a01b0316816001600160a01b03167fe8f38899ee6a4204a1a5ae0757b409b58be63978bc756134d464cfbaadc28931846040516118ab919061347d565b60405180910390a350505050565b6033546001600160a01b031633146109465760405162461bcd60e51b81526004016109749061361a565b606580546001600160a01b0319169055610986816126d5565b5f54610100900460ff166119225760405162461bcd60e51b815260040161097490613671565b610946612726565b5f54610100900460ff166119505760405162461bcd60e51b815260040161097490613671565b610946612755565b60026097540361197a5760405162461bcd60e51b8152600401610974906136b4565b6002609755565b5f5f846001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119bf573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119e391906135c8565b90505f6119f260025c866136d8565b9050611a086001600160a01b038316878361277b565b6040516323323e0360e01b81525f906001600160a01b038816906323323e0390611a38908b9086906004016136eb565b6020604051808303815f875af1158015611a54573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a789190613542565b90508015611a9b5780604051631f32531d60e21b8152600401610974919061347d565b611aa788888588612802565b98975050505050505050565b5f5f866001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611af1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b1591906135c8565b60408051636f307dc360e01b815290519192506001600160a01b0360015c16916004805c925f928592636f307dc3928082019260209290918290030181865afa158015611b64573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b8891906135c8565b90505f611b99858b84868c8c6129bd565b90505f611ba860025c836136d8565b9050611bbe6001600160a01b038416868361277b565b5f856001600160a01b03166323323e038f846040518363ffffffff1660e01b8152600401611bed9291906136eb565b6020604051808303815f875af1158015611c09573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c2d9190613542565b90508015611c505780604051631f32531d60e21b8152600401610974919061347d565b611c5c8e8e898e612802565b9e9d5050505050505050505050505050565b5f5f866001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cac573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cd091906135c8565b60408051636f307dc360e01b815290519192506001600160a01b0360015c16916004805c925f928592636f307dc3928082019260209290918290030181865afa158015611d1f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d4391906135c8565b90505f611d528a60035c6136d8565b90505f611ba8868385878d8d6129bd565b5f5f866001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611da1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dc591906135c8565b90505f876001600160a01b03166317bfdfbc8a6040518263ffffffff1660e01b8152600401611df49190612ff4565b6020604051808303815f875af1158015611e10573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e349190613542565b90505f818811611e445787611e46565b815b9050611e5c6001600160a01b0384168a8361277b565b6040516304c11f0360e31b81525f906001600160a01b038b1690632608f81890611e8c908e9086906004016136eb565b6020604051808303815f875af1158015611ea8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ecc9190613542565b90508015611eef578060405163014e9bb360e01b8152600401610974919061347d565b505060408051629df3ab60e31b815290516001600160a01b0360015c8116935060025c925f927f0000000000000000000000000000000000000000000000000000000000000000909216916304ef9d58916004808201926020929091908290030181865afa158015611f63573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f879190613542565b90505f5f8211611f975782611fed565b611fa982670de0b6b3a76400006136f9565b6001611fbd84670de0b6b3a76400006136f9565b611fcf670de0b6b3a76400008761370c565b611fd991906136d8565b611fe391906136f9565b611fed919061373f565b90505f846001600160a01b031663df3a516e8e846040518363ffffffff1660e01b815260040161201e9291906136eb565b6020604051808303815f875af115801561203a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061205e9190613542565b905080156120815780604051636083d26960e01b8152600401610974919061347d565b5050505f826001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120c1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120e591906135c8565b905061216181826001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016121179190612ff4565b602060405180830381865afa158015612132573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121569190613542565b8660045c8b8b6129bd565b5061216c888a6136d8565b945084846001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161219b9190612ff4565b602060405180830381865afa1580156121b6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121da9190613542565b10156121f957604051630f1b15df60e21b815260040160405180910390fd5b61220d6001600160a01b0385168b8761277b565b505050509695505050505050565b5f5f846001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612259573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061227d91906135c8565b90505f856001600160a01b03166317bfdfbc886040518263ffffffff1660e01b81526004016122ac9190612ff4565b6020604051808303815f875af11580156122c8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122ec9190613542565b90505f8186116122fc57856122fe565b815b90506123146001600160a01b038416888361277b565b6040516304c11f0360e31b81525f906001600160a01b03891690632608f81890612344908c9086906004016136eb565b6020604051808303815f875af1158015612360573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123849190613542565b905080156123a7578060405163014e9bb360e01b8152600401610974919061347d565b6123b186886136d8565b94505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304ef9d586040518163ffffffff1660e01b8152600401602060405180830381865afa158015612410573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124349190613542565b90505f5f8211612444578661249a565b61245682670de0b6b3a76400006136f9565b600161246a84670de0b6b3a76400006136f9565b61247c670de0b6b3a76400008b61370c565b61248691906136d8565b61249091906136f9565b61249a919061373f565b90505f8a6001600160a01b0316633af9e6698d6040518263ffffffff1660e01b81526004016124c99190612ff4565b6020604051808303815f875af11580156124e5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125099190613542565b905080821115612517578091505b604051636f9d28b760e11b81526001600160a01b038c169063df3a516e90612545908f9086906004016136eb565b6020604051808303815f875af1158015612561573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125859190613542565b935083156125a85783604051636083d26960e01b8152600401610974919061347d565b6040516370a0823160e01b815288906001600160a01b038916906370a08231906125d6903090600401612ff4565b602060405180830381865afa1580156125f1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126159190613542565b101561263457604051630f1b15df60e21b815260040160405180910390fd5b6126486001600160a01b0388168c8a61277b565b50505050505050949350505050565b6001609755565b610c37846323b872dd60e01b85858560405160240161267f93929190613752565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612ba5565b6116308363a9059cbb60e01b848460405160240161267f9291906136eb565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff1661274c5760405162461bcd60e51b815260040161097490613671565b610946336118e3565b5f54610100900460ff166126575760405162461bcd60e51b815260040161097490613671565b5f63095ea7b360e01b83836040516024016127979291906136eb565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915290506127d58482612c35565b610c37576127f88463095ea7b360e01b855f60405160240161267f92919061377a565b610c378482612ba5565b6040516370a0823160e01b815281905f906001600160a01b038516906370a0823190612832908890600401612ff4565b602060405180830381865afa15801561284d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128719190613542565b90505f856001600160a01b031663856e5bb388856040518363ffffffff1660e01b81526004016128a29291906136eb565b6020604051808303815f875af11580156128be573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128e29190613542565b9050801561290557806040516343f10e9d60e11b8152600401610974919061347d565b6040516370a0823160e01b81525f906001600160a01b038716906370a0823190612933908a90600401612ff4565b602060405180830381865afa15801561294e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129729190613542565b90508361297f82856136f9565b101561299e57604051630f1b15df60e21b815260040160405180910390fd5b6129b26001600160a01b038716888661277b565b505050949350505050565b5f6129f26001600160a01b0388167f0000000000000000000000000000000000000000000000000000000000000000886126b6565b6040516370a0823160e01b81525f906001600160a01b038716906370a0823190612a20903090600401612ff4565b602060405180830381865afa158015612a3b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a5f9190613542565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168585604051612a9c9291906137a7565b5f604051808303815f865af19150503d805f8114612ad5576040519150601f19603f3d011682016040523d82523d5f602084013e612ada565b606091505b5050905080612afc5760405163428c0cc760e01b815260040160405180910390fd5b6040516370a0823160e01b81525f906001600160a01b038916906370a0823190612b2a903090600401612ff4565b602060405180830381865afa158015612b45573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b699190613542565b9050612b7583826136f9565b935086841015612b9857604051638199f5f360e01b815260040160405180910390fd5b5050509695505050505050565b5f612bf9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612cd89092919063ffffffff16565b905080515f1480612c19575080806020019051810190612c199190613524565b6116305760405162461bcd60e51b8152600401610974906137f9565b5f5f5f846001600160a01b031684604051612c509190613835565b5f604051808303815f865af19150503d805f8114612c89576040519150601f19603f3d011682016040523d82523d5f602084013e612c8e565b606091505b5091509150818015612cb8575080511580612cb8575080806020019051810190612cb89190613524565b8015612ccd57506001600160a01b0385163b15155b925050505b92915050565b6060612ce684845f85612cf0565b90505b9392505050565b606082471015612d125760405162461bcd60e51b815260040161097490613882565b5f5f866001600160a01b03168587604051612d2d9190613835565b5f6040518083038185875af1925050503d805f8114612d67576040519150601f19603f3d011682016040523d82523d5f602084013e612d6c565b606091505b5091509150612d7d87838387612d8a565b925050505b949350505050565b60608315612dc85782515f03612dc1576001600160a01b0385163b612dc15760405162461bcd60e51b8152600401610974906138c5565b5081612d82565b612d828383815115612ddd5781518083602001fd5b8060405162461bcd60e51b81526004016109749190613902565b5f6001600160a01b038216612cd2565b5f612cd282612df7565b5f612cd282612e07565b612e2481612e11565b82525050565b60208101612cd28284612e1b565b612e4181612e07565b8114610986575f5ffd5b8035612cd281612e38565b80612e41565b8035612cd281612e56565b5f5f83601f840112612e7a57612e7a5f5ffd5b50813567ffffffffffffffff811115612e9457612e945f5ffd5b602083019150836001820283011115612eae57612eae5f5ffd5b9250929050565b5f5f5f5f5f5f5f60c0888a031215612ece57612ece5f5ffd5b5f612ed98a8a612e4b565b9750506020612eea8a828b01612e4b565b9650506040612efb8a828b01612e5c565b9550506060612f0c8a828b01612e5c565b9450506080612f1d8a828b01612e5c565b93505060a088013567ffffffffffffffff811115612f3c57612f3c5f5ffd5b612f488a828b01612e67565b925092505092959891949750929550565b5f5f5f5f5f5f5f60c0888a031215612f7257612f725f5ffd5b5f612f7d8a8a612e4b565b9750506020612f8e8a828b01612e5c565b9650506040612efb8a828b01612e4b565b5f5f5f60608486031215612fb457612fb45f5ffd5b5f612fbf8686612e4b565b9350506020612fd086828701612e5c565b9250506040612fe186828701612e5c565b9150509250925092565b612e2481612df7565b60208101612cd28284612feb565b5f5f60408385031215613016576130165f5ffd5b5f6130218585612e4b565b925050602061303285828601612e5c565b9150509250929050565b612e4181612df7565b8035612cd28161303c565b5f60208284031215613063576130635f5ffd5b5f612d828484613045565b5f5f83601f840112613081576130815f5ffd5b50813567ffffffffffffffff81111561309b5761309b5f5ffd5b602083019150836020820283011115612eae57612eae5f5ffd5b5f5f5f5f5f5f5f5f5f5f60c08b8d0312156130d1576130d15f5ffd5b8a3567ffffffffffffffff8111156130ea576130ea5f5ffd5b6130f68d828e0161306e565b9a509a505060208b013567ffffffffffffffff811115613117576131175f5ffd5b6131238d828e0161306e565b985098505060408b013567ffffffffffffffff811115613144576131445f5ffd5b6131508d828e0161306e565b965096505060606131638d828e01613045565b94505060806131748d828e01613045565b93505060a08b013567ffffffffffffffff811115613193576131935f5ffd5b61319f8d828e01612e67565b92509250509295989b9194979a5092959850565b801515612e24565b80612e24565b5f6131cc83836131bb565b505060200190565b5f6131dd825190565b8084526020938401938301805f5b838110156132105781516131ff88826131c1565b9750602083019250506001016131eb565b509495945050505050565b6040810161322982856131b3565b8181036020830152612ce681846131d4565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f6131cc8383612e1b565b5f613277825190565b8084526020938401938301805f5b838110156132105781516132998882613263565b975060208301925050600101613285565b82818337505f910152565b8183525f6020840193506132ca8385846132aa565b601f19601f8401165b9093019392505050565b60a081016132eb8289612feb565b6132f86020830188612feb565b818103604083015261330a818761326e565b9050818103606083015261331e81866131d4565b90508181036080830152611aa78184866132b5565b6040810161334182856131bb565b612ce960208301846131bb565b60a0810161335c8287612feb565b6133696020830186612feb565b818103604083015261337b818561326e565b9050818103606083015261338f81846131d4565b82810360808401525f81529050602081019695505050505050565b602981525f602082017f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865208152683732bb9037bbb732b960b91b602082015291505b5060400190565b60208082528101612cd2816133aa565b602e81525f602082017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b602082015291506133eb565b60208082528101612cd281613402565b5f60ff8216612cd2565b612e248161345c565b60208101612cd28284613466565b60208101612cd282846131bb565b5f6020828403121561349e5761349e5f5ffd5b5f612d828484612e4b565b801515612e41565b8051612cd2816134a9565b8051612cd281612e56565b5f5f5f606084860312156134dc576134dc5f5ffd5b5f6134e786866134b1565b93505060206134f8868287016134bc565b9250506040612fe1868287016134b1565b604081016135178285612feb565b612ce96020830184612feb565b5f60208284031215613537576135375f5ffd5b5f612d8284846134b1565b5f60208284031215613555576135555f5ffd5b5f612d8284846134bc565b6040810161356e8285612feb565b612ce96020830184612e1b565b5f5f5f60608486031215613590576135905f5ffd5b5f61359b86866134bc565b93505060206135ac868287016134bc565b9250506040612fe1868287016134bc565b8051612cd28161303c565b5f602082840312156135db576135db5f5ffd5b5f612d8284846135bd565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657291019081525f5b5060200190565b60208082528101612cd2816135e6565b602b81525f602082017f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206981526a6e697469616c697a696e6760a81b602082015291506133eb565b60208082528101612cd28161362a565b601f81525f602082017f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081529150613613565b60208082528101612cd281613681565b634e487b7160e01b5f52601160045260245ffd5b80820180821115612cd257612cd26136c4565b604081016133418285612feb565b81810381811115612cd257612cd26136c4565b818102808215838204851417613724576137246136c4565b5092915050565b634e487b7160e01b5f52601260045260245ffd5b5f8261374d5761374d61372b565b500490565b606081016137608286612feb565b61376d6020830185612feb565b612d8260408301846131bb565b604081016137888285612feb565b612ce96020830184613466565b5f6137a18385846132aa565b50500190565b5f612d82828486613795565b602a81525f602082017f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b602082015291506133eb565b60208082528101612cd2816137b3565b8281835e505f910152565b5f61381d825190565b61382b818560208601613809565b9290920192915050565b5f612ce98284613814565b602681525f602082017f416464726573733a20696e73756666696369656e742062616c616e636520666f8152651c8818d85b1b60d21b602082015291506133eb565b60208082528101612cd281613840565b601d81525f602082017f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081529150613613565b60208082528101612cd281613892565b5f6138de825190565b8084526020840193506138f5818560208601613809565b601f19601f8201166132d3565b60208082528101612ce981846138d556fea2646970667358221220512b2315be067daf0697f0324e6327b49545d26765779854a32706075dbfa2de64736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF0 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x79BA5097 GT PUSH2 0x93 JUMPI DUP1 PUSH4 0xC78BEFBE GT PUSH2 0x63 JUMPI DUP1 PUSH4 0xC78BEFBE EQ PUSH2 0x1FF JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH2 0x212 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x223 JUMPI DUP1 PUSH4 0xFC08F9F6 EQ PUSH2 0x236 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x79BA5097 EQ PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x8129FC1C EQ PUSH2 0x1CA JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0xC6CD25F6 EQ PUSH2 0x1EC JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x3A8F8C43 GT PUSH2 0xCE JUMPI DUP1 PUSH4 0x3A8F8C43 EQ PUSH2 0x16D JUMPI DUP1 PUSH4 0x3C3A2C21 EQ PUSH2 0x180 JUMPI DUP1 PUSH4 0x5F82C67E EQ PUSH2 0x193 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x1BA JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xFC6A11C EQ PUSH2 0xF4 JUMPI DUP1 PUSH4 0x13424801 EQ PUSH2 0x131 JUMPI DUP1 PUSH4 0x33E1567F EQ PUSH2 0x146 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x11B PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x128 SWAP2 SWAP1 PUSH2 0x2E2A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x144 PUSH2 0x13F CALLDATASIZE PUSH1 0x4 PUSH2 0x2EB5 JUMP JUMPDEST PUSH2 0x257 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11B PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x144 PUSH2 0x17B CALLDATASIZE PUSH1 0x4 PUSH2 0x2F59 JUMP JUMPDEST PUSH2 0x4D0 JUMP JUMPDEST PUSH2 0x144 PUSH2 0x18E CALLDATASIZE PUSH1 0x4 PUSH2 0x2F9F JUMP JUMPDEST PUSH2 0x73E JUMP JUMPDEST PUSH2 0x11B PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x144 PUSH2 0x935 JUMP JUMPDEST PUSH2 0x144 PUSH2 0x948 JUMP JUMPDEST PUSH2 0x144 PUSH2 0x989 JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x128 SWAP2 SWAP1 PUSH2 0x2FF4 JUMP JUMPDEST PUSH2 0x144 PUSH2 0x1FA CALLDATASIZE PUSH1 0x4 PUSH2 0x3002 JUMP JUMPDEST PUSH2 0xA59 JUMP JUMPDEST PUSH2 0x144 PUSH2 0x20D CALLDATASIZE PUSH1 0x4 PUSH2 0x2F59 JUMP JUMPDEST PUSH2 0xC3D JUMP JUMPDEST PUSH1 0x65 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1DF JUMP JUMPDEST PUSH2 0x144 PUSH2 0x231 CALLDATASIZE PUSH1 0x4 PUSH2 0x3050 JUMP JUMPDEST PUSH2 0xE61 JUMP JUMPDEST PUSH2 0x249 PUSH2 0x244 CALLDATASIZE PUSH1 0x4 PUSH2 0x30B5 JUMP JUMPDEST PUSH2 0xED2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x128 SWAP3 SWAP2 SWAP1 PUSH2 0x321B JUMP JUMPDEST DUP4 PUSH0 SUB PUSH2 0x277 JUMPI PUSH1 0x40 MLOAD PUSH4 0x62EC8DE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x2A9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7239C0DB PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2B2 DUP8 PUSH2 0x12B6 JUMP JUMPDEST PUSH2 0x2BB DUP7 PUSH2 0x12B6 JUMP JUMPDEST PUSH2 0x2C3 PUSH2 0x13BD JUMP JUMPDEST PUSH2 0x2CC DUP8 PUSH2 0x1467 JUMP JUMPDEST PUSH2 0x2D5 DUP7 PUSH2 0x1467 JUMP JUMPDEST PUSH2 0x2DF CALLER DUP9 PUSH2 0x14EC JUMP JUMPDEST PUSH2 0x2E8 CALLER PUSH2 0x1635 JUMP JUMPDEST PUSH2 0x2F3 DUP7 CALLER DUP8 PUSH2 0x16F5 JUMP JUMPDEST CALLER PUSH0 DUP1 TLOAD PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND PUSH2 0x100 DUP4 MUL OR SWAP1 TSTORE POP DUP7 PUSH1 0x1 DUP1 TLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND OR SWAP1 TSTORE POP DUP5 DUP1 PUSH1 0x3 TSTORE POP DUP3 DUP1 PUSH1 0x4 TSTORE POP PUSH1 0x3 PUSH0 DUP1 TLOAD PUSH1 0xFF NOT AND DUP3 OR SWAP1 TSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH0 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP7 DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x376 JUMPI PUSH2 0x376 PUSH2 0x324F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH0 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP6 DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x3C5 JUMPI PUSH2 0x3C5 PUSH2 0x324F JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x40 MLOAD PUSH4 0x15513B67 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x5544ED9C SWAP1 PUSH2 0x426 SWAP1 CALLER SWAP1 ADDRESS SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP12 SWAP1 DUP12 SWAP1 PUSH1 0x4 ADD PUSH2 0x32DD JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x43D JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x44F JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH2 0x45C CALLER PUSH2 0x1635 JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4BDF2F6F97B9E53FBB880300A2B1E8F12110F6CBCC3279602053BCF6F5E05103 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH2 0x4AB SWAP3 SWAP2 SWAP1 PUSH2 0x3333 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x4BC DUP10 PUSH2 0x1773 JUMP JUMPDEST PUSH2 0x4C5 DUP9 PUSH2 0x1773 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP4 PUSH0 SUB PUSH2 0x4F0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x62EC8DE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x522 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7239C0DB PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x52B DUP8 PUSH2 0x12B6 JUMP JUMPDEST PUSH2 0x534 DUP6 PUSH2 0x12B6 JUMP JUMPDEST PUSH2 0x53C PUSH2 0x13BD JUMP JUMPDEST PUSH2 0x545 DUP8 PUSH2 0x1467 JUMP JUMPDEST PUSH2 0x54E DUP6 PUSH2 0x1467 JUMP JUMPDEST PUSH2 0x558 CALLER DUP9 PUSH2 0x14EC JUMP JUMPDEST PUSH2 0x561 CALLER PUSH2 0x1635 JUMP JUMPDEST PUSH2 0x56C DUP8 CALLER DUP9 PUSH2 0x16F5 JUMP JUMPDEST CALLER PUSH0 DUP1 TLOAD PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND PUSH2 0x100 DUP4 MUL OR SWAP1 TSTORE POP DUP7 PUSH1 0x1 DUP1 TLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND OR SWAP1 TSTORE POP DUP6 DUP1 PUSH1 0x2 TSTORE POP DUP3 DUP1 PUSH1 0x4 TSTORE POP PUSH1 0x2 PUSH0 DUP1 TLOAD PUSH1 0xFF NOT AND DUP3 OR SWAP1 TSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH0 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP6 DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x5EF JUMPI PUSH2 0x5EF PUSH2 0x324F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH0 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP6 DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x63E JUMPI PUSH2 0x63E PUSH2 0x324F JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x40 MLOAD PUSH4 0x15513B67 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x5544ED9C SWAP1 PUSH2 0x69F SWAP1 CALLER SWAP1 ADDRESS SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP12 SWAP1 DUP12 SWAP1 PUSH1 0x4 ADD PUSH2 0x32DD JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6B6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6C8 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH2 0x6D5 CALLER PUSH2 0x1635 JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2535D675850D7C542DC54C7AA081F27A11D1B0DF3F3DB67275CE0A9D05627434 DUP12 DUP11 PUSH1 0x40 MLOAD PUSH2 0x724 SWAP3 SWAP2 SWAP1 PUSH2 0x3333 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x735 DUP10 PUSH2 0x1773 JUMP JUMPDEST PUSH2 0x4C5 DUP8 PUSH2 0x1773 JUMP JUMPDEST DUP1 PUSH0 SUB PUSH2 0x75E JUMPI PUSH1 0x40 MLOAD PUSH4 0x62EC8DE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x767 DUP4 PUSH2 0x12B6 JUMP JUMPDEST PUSH2 0x76F PUSH2 0x13BD JUMP JUMPDEST PUSH2 0x778 DUP4 PUSH2 0x1467 JUMP JUMPDEST PUSH2 0x782 CALLER DUP5 PUSH2 0x14EC JUMP JUMPDEST PUSH2 0x78B CALLER PUSH2 0x1635 JUMP JUMPDEST PUSH2 0x796 DUP4 CALLER DUP5 PUSH2 0x16F5 JUMP JUMPDEST CALLER PUSH0 DUP1 TLOAD PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND PUSH2 0x100 DUP4 MUL OR SWAP1 TSTORE POP PUSH1 0x1 PUSH0 DUP1 TLOAD PUSH1 0xFF NOT AND DUP3 OR SWAP1 TSTORE POP DUP2 DUP1 PUSH1 0x2 TSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH0 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x7F6 JUMPI PUSH2 0x7F6 PUSH2 0x324F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH0 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x845 JUMPI PUSH2 0x845 PUSH2 0x324F JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x40 MLOAD PUSH4 0x15513B67 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x5544ED9C SWAP1 PUSH2 0x8A2 SWAP1 CALLER SWAP1 ADDRESS SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x334E JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8B9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8CB JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH2 0x8D8 CALLER PUSH2 0x1635 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x49CEF9D2C3F3F5785B1AD7FACB0837A43E60A785A0141101E658F5565664CD89 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x91D SWAP3 SWAP2 SWAP1 PUSH2 0x3333 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x92E DUP6 PUSH2 0x1773 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x93D PUSH2 0x18B9 JUMP JUMPDEST PUSH2 0x946 PUSH0 PUSH2 0x18E3 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x65 SLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 EQ PUSH2 0x97D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP1 PUSH2 0x33F2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x986 DUP2 PUSH2 0x18E3 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x9A7 JUMPI POP PUSH0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x9C0 JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9C0 JUMPI POP PUSH0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x9DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP1 PUSH2 0x344C JUMP JUMPDEST PUSH0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x9FD JUMPI PUSH0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH2 0xA05 PUSH2 0x18FC JUMP JUMPDEST PUSH2 0xA0D PUSH2 0x192A JUMP JUMPDEST DUP1 ISZERO PUSH2 0x986 JUMPI PUSH0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH2 0xA4E SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x346F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST DUP1 PUSH0 SUB PUSH2 0xA79 JUMPI PUSH1 0x40 MLOAD PUSH4 0x62EC8DE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xA82 DUP3 PUSH2 0x12B6 JUMP JUMPDEST PUSH2 0xA8A PUSH2 0x13BD JUMP JUMPDEST CALLER PUSH0 DUP1 TLOAD PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND PUSH2 0x100 DUP4 MUL OR SWAP1 TSTORE POP DUP2 PUSH1 0x1 DUP1 TLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND OR SWAP1 TSTORE POP PUSH1 0x5 PUSH0 DUP1 TLOAD PUSH1 0xFF NOT AND DUP3 OR SWAP1 TSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH0 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xB01 JUMPI PUSH2 0xB01 PUSH2 0x324F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH0 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xB50 JUMPI PUSH2 0xB50 PUSH2 0x324F JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x40 MLOAD PUSH4 0x15513B67 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x5544ED9C SWAP1 PUSH2 0xBAD SWAP1 CALLER SWAP1 ADDRESS SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x334E JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBC4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBD6 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH2 0xBE3 CALLER PUSH2 0x1635 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x9858E3A66FD738B1F0F73208C9090CA5A20EE504DF594271E464D4BB4CDA0E6F DUP6 PUSH1 0x40 MLOAD PUSH2 0xC26 SWAP2 SWAP1 PUSH2 0x347D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0xC37 DUP5 PUSH2 0x1773 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST DUP4 PUSH0 SUB PUSH2 0xC5D JUMPI PUSH1 0x40 MLOAD PUSH4 0x62EC8DE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0xC8F JUMPI PUSH1 0x40 MLOAD PUSH4 0x7239C0DB PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xC98 DUP8 PUSH2 0x12B6 JUMP JUMPDEST PUSH2 0xCA1 DUP6 PUSH2 0x12B6 JUMP JUMPDEST PUSH2 0xCA9 PUSH2 0x13BD JUMP JUMPDEST CALLER PUSH0 DUP1 TLOAD PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND PUSH2 0x100 DUP4 MUL OR SWAP1 TSTORE POP DUP7 PUSH1 0x1 DUP1 TLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND OR SWAP1 TSTORE POP DUP6 DUP1 PUSH1 0x2 TSTORE POP DUP3 DUP1 PUSH1 0x4 TSTORE POP PUSH1 0x4 PUSH0 DUP1 TLOAD PUSH1 0xFF NOT AND DUP3 OR SWAP1 TSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH0 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP6 DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xD2C JUMPI PUSH2 0xD2C PUSH2 0x324F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH0 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP6 DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xD7B JUMPI PUSH2 0xD7B PUSH2 0x324F JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x40 MLOAD PUSH4 0x15513B67 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x5544ED9C SWAP1 PUSH2 0xDDC SWAP1 CALLER SWAP1 ADDRESS SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP12 SWAP1 DUP12 SWAP1 PUSH1 0x4 ADD PUSH2 0x32DD JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDF3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE05 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH2 0xE12 CALLER PUSH2 0x1635 JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC40371CEE960C145E7AF5E62A37DFD2F97089C030C2427AD853AE214E815EBED DUP12 DUP11 PUSH1 0x40 MLOAD PUSH2 0x724 SWAP3 SWAP2 SWAP1 PUSH2 0x3333 JUMP JUMPDEST PUSH2 0xE69 PUSH2 0x18B9 JUMP JUMPDEST PUSH1 0x65 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH2 0xE9A PUSH1 0x33 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x38D16B8CAC22D99FC7C124B9CD0DE2D3FA1FAEF420BFE791D8C362D765E22700 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP JUMP JUMPDEST PUSH0 PUSH1 0x60 PUSH2 0xEDD PUSH2 0x1958 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0xF26 JUMPI PUSH1 0x40 MLOAD PUSH4 0x41C83021 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND ADDRESS EQ PUSH2 0xF4F JUMPI PUSH1 0x40 MLOAD PUSH4 0x4DB910D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x100 PUSH0 TLOAD DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP1 DUP7 AND EQ PUSH2 0xF81 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A057C43 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP12 EQ ISZERO DUP1 PUSH2 0xF92 JUMPI POP PUSH1 0x1 DUP10 EQ ISZERO JUMPDEST DUP1 PUSH2 0xF9E JUMPI POP PUSH1 0x1 DUP8 EQ ISZERO JUMPDEST ISZERO PUSH2 0xFBC JUMPI PUSH1 0x40 MLOAD PUSH4 0x4F7D8FBD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0x1 PUSH1 0xFF PUSH0 TLOAD AND PUSH1 0x5 DUP2 GT ISZERO PUSH2 0xFF4 JUMPI PUSH2 0xFF4 PUSH2 0x323B JUMP JUMPDEST SUB PUSH2 0x107E JUMPI PUSH2 0x105B DUP6 DUP14 DUP14 PUSH0 DUP2 DUP2 LT PUSH2 0x100F JUMPI PUSH2 0x100F PUSH2 0x324F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1024 SWAP2 SWAP1 PUSH2 0x348B JUMP JUMPDEST DUP13 DUP13 PUSH0 DUP2 DUP2 LT PUSH2 0x1036 JUMPI PUSH2 0x1036 PUSH2 0x324F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP12 DUP12 PUSH0 DUP2 DUP2 LT PUSH2 0x104F JUMPI PUSH2 0x104F PUSH2 0x324F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x1981 JUMP JUMPDEST DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x106D JUMPI PUSH2 0x106D PUSH2 0x324F JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x1299 JUMP JUMPDEST PUSH1 0x2 PUSH1 0xFF PUSH0 TLOAD AND PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1096 JUMPI PUSH2 0x1096 PUSH2 0x323B JUMP JUMPDEST SUB PUSH2 0x10FF JUMPI PUSH2 0x105B DUP6 DUP14 DUP14 PUSH0 DUP2 DUP2 LT PUSH2 0x10B1 JUMPI PUSH2 0x10B1 PUSH2 0x324F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x10C6 SWAP2 SWAP1 PUSH2 0x348B JUMP JUMPDEST DUP13 DUP13 PUSH0 DUP2 DUP2 LT PUSH2 0x10D8 JUMPI PUSH2 0x10D8 PUSH2 0x324F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP12 DUP12 PUSH0 DUP2 DUP2 LT PUSH2 0x10F1 JUMPI PUSH2 0x10F1 PUSH2 0x324F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 DUP9 PUSH2 0x1AB3 JUMP JUMPDEST PUSH1 0x3 PUSH1 0xFF PUSH0 TLOAD AND PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1117 JUMPI PUSH2 0x1117 PUSH2 0x323B JUMP JUMPDEST SUB PUSH2 0x1180 JUMPI PUSH2 0x105B DUP6 DUP14 DUP14 PUSH0 DUP2 DUP2 LT PUSH2 0x1132 JUMPI PUSH2 0x1132 PUSH2 0x324F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1147 SWAP2 SWAP1 PUSH2 0x348B JUMP JUMPDEST DUP13 DUP13 PUSH0 DUP2 DUP2 LT PUSH2 0x1159 JUMPI PUSH2 0x1159 PUSH2 0x324F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP12 DUP12 PUSH0 DUP2 DUP2 LT PUSH2 0x1172 JUMPI PUSH2 0x1172 PUSH2 0x324F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 DUP9 PUSH2 0x1C6E JUMP JUMPDEST PUSH1 0x4 PUSH1 0xFF PUSH0 TLOAD AND PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1198 JUMPI PUSH2 0x1198 PUSH2 0x323B JUMP JUMPDEST SUB PUSH2 0x1201 JUMPI PUSH2 0x105B DUP6 DUP14 DUP14 PUSH0 DUP2 DUP2 LT PUSH2 0x11B3 JUMPI PUSH2 0x11B3 PUSH2 0x324F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x11C8 SWAP2 SWAP1 PUSH2 0x348B JUMP JUMPDEST DUP13 DUP13 PUSH0 DUP2 DUP2 LT PUSH2 0x11DA JUMPI PUSH2 0x11DA PUSH2 0x324F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP12 DUP12 PUSH0 DUP2 DUP2 LT PUSH2 0x11F3 JUMPI PUSH2 0x11F3 PUSH2 0x324F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 DUP9 PUSH2 0x1D63 JUMP JUMPDEST PUSH1 0x5 PUSH1 0xFF PUSH0 TLOAD AND PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1219 JUMPI PUSH2 0x1219 PUSH2 0x323B JUMP JUMPDEST SUB PUSH2 0x1280 JUMPI PUSH2 0x105B DUP6 DUP14 DUP14 PUSH0 DUP2 DUP2 LT PUSH2 0x1234 JUMPI PUSH2 0x1234 PUSH2 0x324F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1249 SWAP2 SWAP1 PUSH2 0x348B JUMP JUMPDEST DUP13 DUP13 PUSH0 DUP2 DUP2 LT PUSH2 0x125B JUMPI PUSH2 0x125B PUSH2 0x324F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP12 DUP12 PUSH0 DUP2 DUP2 LT PUSH2 0x1274 JUMPI PUSH2 0x1274 PUSH2 0x324F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x221B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x9C3C9567 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SWAP2 POP PUSH2 0x12A7 PUSH1 0x1 PUSH1 0x97 SSTORE JUMP JUMPDEST SWAP11 POP SWAP11 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x8E8F294B PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x8E8F294B SWAP1 PUSH2 0x1304 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x2FF4 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x131F JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1343 SWAP2 SWAP1 PUSH2 0x34C7 JUMP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x1367 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x5A9A1EB9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP2 SWAP1 PUSH2 0x2FF4 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x13B9 JUMPI PUSH1 0x40 MLOAD PUSH4 0xBAECCEFD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2173067 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x10B98338 SWAP1 PUSH2 0x140B SWAP1 CALLER SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x3509 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1426 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x144A SWAP2 SWAP1 PUSH2 0x3524 JUMP JUMPDEST PUSH2 0x946 JUMPI PUSH1 0x40 MLOAD PUSH4 0x37248AD9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA6AFED95 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x14A5 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x14C9 SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x13B9 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x15FC6CBF PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP2 SWAP1 PUSH2 0x347D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x929FE9A1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x929FE9A1 SWAP1 PUSH2 0x153A SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x3560 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1555 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1579 SWAP2 SWAP1 PUSH2 0x3524 JUMP JUMPDEST PUSH2 0x13B9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6AC2E1E3 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xD585C3C6 SWAP1 PUSH2 0x15CD SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x3509 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x15E9 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x160D SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1630 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x1957D105 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP2 SWAP1 PUSH2 0x347D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x528A174C DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1683 SWAP2 SWAP1 PUSH2 0x2FF4 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x169E JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x16C2 SWAP2 SWAP1 PUSH2 0x357B JUMP JUMPDEST SWAP3 POP POP SWAP2 POP PUSH0 DUP3 EQ ISZERO DUP1 PUSH2 0x16D5 JUMPI POP PUSH0 DUP2 GT JUMPDEST ISZERO PUSH2 0x1630 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x47749FCB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP2 SWAP1 PUSH2 0x347D JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1630 JUMPI PUSH0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1738 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x175C SWAP2 SWAP1 PUSH2 0x35C8 JUMP JUMPDEST SWAP1 POP PUSH2 0xC37 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP5 ADDRESS DUP6 PUSH2 0x265E JUMP JUMPDEST PUSH0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17B0 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x17D4 SWAP2 SWAP1 PUSH2 0x35C8 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1803 SWAP2 SWAP1 PUSH2 0x2FF4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x181E JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1842 SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1630 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x100 PUSH0 TLOAD DIV DUP2 AND SWAP1 PUSH2 0x1868 SWAP1 DUP5 AND DUP3 DUP5 PUSH2 0x26B6 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xE8F38899EE6A4204A1A5AE0757B409B58BE63978BC756134D464CFBAADC28931 DUP5 PUSH1 0x40 MLOAD PUSH2 0x18AB SWAP2 SWAP1 PUSH2 0x347D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x946 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP1 PUSH2 0x361A JUMP JUMPDEST PUSH1 0x65 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH2 0x986 DUP2 PUSH2 0x26D5 JUMP JUMPDEST PUSH0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1922 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP1 PUSH2 0x3671 JUMP JUMPDEST PUSH2 0x946 PUSH2 0x2726 JUMP JUMPDEST PUSH0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1950 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP1 PUSH2 0x3671 JUMP JUMPDEST PUSH2 0x946 PUSH2 0x2755 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x97 SLOAD SUB PUSH2 0x197A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP1 PUSH2 0x36B4 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x97 SSTORE JUMP JUMPDEST PUSH0 PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19BF JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x19E3 SWAP2 SWAP1 PUSH2 0x35C8 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x19F2 PUSH1 0x2 TLOAD DUP7 PUSH2 0x36D8 JUMP JUMPDEST SWAP1 POP PUSH2 0x1A08 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP8 DUP4 PUSH2 0x277B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23323E03 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0x23323E03 SWAP1 PUSH2 0x1A38 SWAP1 DUP12 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x36EB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1A54 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A78 SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1A9B JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x1F32531D PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP2 SWAP1 PUSH2 0x347D JUMP JUMPDEST PUSH2 0x1AA7 DUP9 DUP9 DUP6 DUP9 PUSH2 0x2802 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1AF1 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1B15 SWAP2 SWAP1 PUSH2 0x35C8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x6F307DC3 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x1 TLOAD AND SWAP2 PUSH1 0x4 DUP1 TLOAD SWAP3 PUSH0 SWAP3 DUP6 SWAP3 PUSH4 0x6F307DC3 SWAP3 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B64 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1B88 SWAP2 SWAP1 PUSH2 0x35C8 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x1B99 DUP6 DUP12 DUP5 DUP7 DUP13 DUP13 PUSH2 0x29BD JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x1BA8 PUSH1 0x2 TLOAD DUP4 PUSH2 0x36D8 JUMP JUMPDEST SWAP1 POP PUSH2 0x1BBE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP7 DUP4 PUSH2 0x277B JUMP JUMPDEST PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23323E03 DUP16 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1BED SWAP3 SWAP2 SWAP1 PUSH2 0x36EB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C09 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1C2D SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1C50 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x1F32531D PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP2 SWAP1 PUSH2 0x347D JUMP JUMPDEST PUSH2 0x1C5C DUP15 DUP15 DUP10 DUP15 PUSH2 0x2802 JUMP JUMPDEST SWAP15 SWAP14 POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CAC JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1CD0 SWAP2 SWAP1 PUSH2 0x35C8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x6F307DC3 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x1 TLOAD AND SWAP2 PUSH1 0x4 DUP1 TLOAD SWAP3 PUSH0 SWAP3 DUP6 SWAP3 PUSH4 0x6F307DC3 SWAP3 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D1F JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1D43 SWAP2 SWAP1 PUSH2 0x35C8 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x1D52 DUP11 PUSH1 0x3 TLOAD PUSH2 0x36D8 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x1BA8 DUP7 DUP4 DUP6 DUP8 DUP14 DUP14 PUSH2 0x29BD JUMP JUMPDEST PUSH0 PUSH0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DA1 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1DC5 SWAP2 SWAP1 PUSH2 0x35C8 JUMP JUMPDEST SWAP1 POP PUSH0 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x17BFDFBC DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1DF4 SWAP2 SWAP1 PUSH2 0x2FF4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1E10 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1E34 SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 DUP9 GT PUSH2 0x1E44 JUMPI DUP8 PUSH2 0x1E46 JUMP JUMPDEST DUP2 JUMPDEST SWAP1 POP PUSH2 0x1E5C PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP11 DUP4 PUSH2 0x277B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x4C11F03 PUSH1 0xE3 SHL DUP2 MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP1 PUSH4 0x2608F818 SWAP1 PUSH2 0x1E8C SWAP1 DUP15 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x36EB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1EA8 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1ECC SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x1EEF JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x14E9BB3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP2 SWAP1 PUSH2 0x347D JUMP JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH3 0x9DF3AB PUSH1 0xE3 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x1 TLOAD DUP2 AND SWAP4 POP PUSH1 0x2 TLOAD SWAP3 PUSH0 SWAP3 PUSH32 0x0 SWAP1 SWAP3 AND SWAP2 PUSH4 0x4EF9D58 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F63 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F87 SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH0 DUP3 GT PUSH2 0x1F97 JUMPI DUP3 PUSH2 0x1FED JUMP JUMPDEST PUSH2 0x1FA9 DUP3 PUSH8 0xDE0B6B3A7640000 PUSH2 0x36F9 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x1FBD DUP5 PUSH8 0xDE0B6B3A7640000 PUSH2 0x36F9 JUMP JUMPDEST PUSH2 0x1FCF PUSH8 0xDE0B6B3A7640000 DUP8 PUSH2 0x370C JUMP JUMPDEST PUSH2 0x1FD9 SWAP2 SWAP1 PUSH2 0x36D8 JUMP JUMPDEST PUSH2 0x1FE3 SWAP2 SWAP1 PUSH2 0x36F9 JUMP JUMPDEST PUSH2 0x1FED SWAP2 SWAP1 PUSH2 0x373F JUMP JUMPDEST SWAP1 POP PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDF3A516E DUP15 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x201E SWAP3 SWAP2 SWAP1 PUSH2 0x36EB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x203A JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x205E SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2081 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x6083D269 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP2 SWAP1 PUSH2 0x347D JUMP JUMPDEST POP POP POP PUSH0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x20C1 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x20E5 SWAP2 SWAP1 PUSH2 0x35C8 JUMP JUMPDEST SWAP1 POP PUSH2 0x2161 DUP2 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2117 SWAP2 SWAP1 PUSH2 0x2FF4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2132 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2156 SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST DUP7 PUSH1 0x4 TLOAD DUP12 DUP12 PUSH2 0x29BD JUMP JUMPDEST POP PUSH2 0x216C DUP9 DUP11 PUSH2 0x36D8 JUMP JUMPDEST SWAP5 POP DUP5 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x219B SWAP2 SWAP1 PUSH2 0x2FF4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x21B6 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x21DA SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST LT ISZERO PUSH2 0x21F9 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF1B15DF PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x220D PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP12 DUP8 PUSH2 0x277B JUMP JUMPDEST POP POP POP POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2259 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x227D SWAP2 SWAP1 PUSH2 0x35C8 JUMP JUMPDEST SWAP1 POP PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x17BFDFBC DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x22AC SWAP2 SWAP1 PUSH2 0x2FF4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x22C8 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x22EC SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 DUP7 GT PUSH2 0x22FC JUMPI DUP6 PUSH2 0x22FE JUMP JUMPDEST DUP2 JUMPDEST SWAP1 POP PUSH2 0x2314 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP9 DUP4 PUSH2 0x277B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x4C11F03 PUSH1 0xE3 SHL DUP2 MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH4 0x2608F818 SWAP1 PUSH2 0x2344 SWAP1 DUP13 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x36EB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2360 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2384 SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x23A7 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x14E9BB3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP2 SWAP1 PUSH2 0x347D JUMP JUMPDEST PUSH2 0x23B1 DUP7 DUP9 PUSH2 0x36D8 JUMP JUMPDEST SWAP5 POP PUSH0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4EF9D58 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2410 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2434 SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH0 DUP3 GT PUSH2 0x2444 JUMPI DUP7 PUSH2 0x249A JUMP JUMPDEST PUSH2 0x2456 DUP3 PUSH8 0xDE0B6B3A7640000 PUSH2 0x36F9 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x246A DUP5 PUSH8 0xDE0B6B3A7640000 PUSH2 0x36F9 JUMP JUMPDEST PUSH2 0x247C PUSH8 0xDE0B6B3A7640000 DUP12 PUSH2 0x370C JUMP JUMPDEST PUSH2 0x2486 SWAP2 SWAP1 PUSH2 0x36D8 JUMP JUMPDEST PUSH2 0x2490 SWAP2 SWAP1 PUSH2 0x36F9 JUMP JUMPDEST PUSH2 0x249A SWAP2 SWAP1 PUSH2 0x373F JUMP JUMPDEST SWAP1 POP PUSH0 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3AF9E669 DUP14 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24C9 SWAP2 SWAP1 PUSH2 0x2FF4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x24E5 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2509 SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x2517 JUMPI DUP1 SWAP2 POP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x6F9D28B7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND SWAP1 PUSH4 0xDF3A516E SWAP1 PUSH2 0x2545 SWAP1 DUP16 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x36EB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2561 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2585 SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST SWAP4 POP DUP4 ISZERO PUSH2 0x25A8 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x6083D269 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP2 SWAP1 PUSH2 0x347D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE DUP9 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x25D6 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2FF4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x25F1 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2615 SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST LT ISZERO PUSH2 0x2634 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF1B15DF PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2648 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP13 DUP11 PUSH2 0x277B JUMP JUMPDEST POP POP POP POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x97 SSTORE JUMP JUMPDEST PUSH2 0xC37 DUP5 PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x267F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3752 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x2BA5 JUMP JUMPDEST PUSH2 0x1630 DUP4 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x267F SWAP3 SWAP2 SWAP1 PUSH2 0x36EB JUMP JUMPDEST PUSH1 0x33 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x274C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP1 PUSH2 0x3671 JUMP JUMPDEST PUSH2 0x946 CALLER PUSH2 0x18E3 JUMP JUMPDEST PUSH0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2657 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP1 PUSH2 0x3671 JUMP JUMPDEST PUSH0 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2797 SWAP3 SWAP2 SWAP1 PUSH2 0x36EB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE SWAP1 POP PUSH2 0x27D5 DUP5 DUP3 PUSH2 0x2C35 JUMP JUMPDEST PUSH2 0xC37 JUMPI PUSH2 0x27F8 DUP5 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP6 PUSH0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x267F SWAP3 SWAP2 SWAP1 PUSH2 0x377A JUMP JUMPDEST PUSH2 0xC37 DUP5 DUP3 PUSH2 0x2BA5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE DUP2 SWAP1 PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x2832 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x2FF4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x284D JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2871 SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST SWAP1 POP PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x856E5BB3 DUP9 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x28A2 SWAP3 SWAP2 SWAP1 PUSH2 0x36EB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x28BE JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x28E2 SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2905 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x43F10E9D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP2 SWAP1 PUSH2 0x347D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x2933 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x2FF4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x294E JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2972 SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST SWAP1 POP DUP4 PUSH2 0x297F DUP3 DUP6 PUSH2 0x36F9 JUMP JUMPDEST LT ISZERO PUSH2 0x299E JUMPI PUSH1 0x40 MLOAD PUSH4 0xF1B15DF PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x29B2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP9 DUP7 PUSH2 0x277B JUMP JUMPDEST POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x29F2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH32 0x0 DUP9 PUSH2 0x26B6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x2A20 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2FF4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A3B JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2A5F SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x2A9C SWAP3 SWAP2 SWAP1 PUSH2 0x37A7 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x2AD5 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2ADA JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x2AFC JUMPI PUSH1 0x40 MLOAD PUSH4 0x428C0CC7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x2B2A SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x2FF4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B45 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2B69 SWAP2 SWAP1 PUSH2 0x3542 JUMP JUMPDEST SWAP1 POP PUSH2 0x2B75 DUP4 DUP3 PUSH2 0x36F9 JUMP JUMPDEST SWAP4 POP DUP7 DUP5 LT ISZERO PUSH2 0x2B98 JUMPI PUSH1 0x40 MLOAD PUSH4 0x8199F5F3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x2BF9 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2CD8 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH0 EQ DUP1 PUSH2 0x2C19 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2C19 SWAP2 SWAP1 PUSH2 0x3524 JUMP JUMPDEST PUSH2 0x1630 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP1 PUSH2 0x37F9 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x2C50 SWAP2 SWAP1 PUSH2 0x3835 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x2C89 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2C8E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x2CB8 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x2CB8 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2CB8 SWAP2 SWAP1 PUSH2 0x3524 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2CCD JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE ISZERO ISZERO JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x2CE6 DUP5 DUP5 PUSH0 DUP6 PUSH2 0x2CF0 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x2D12 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP1 PUSH2 0x3882 JUMP JUMPDEST PUSH0 PUSH0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x2D2D SWAP2 SWAP1 PUSH2 0x3835 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x2D67 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2D6C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x2D7D DUP8 DUP4 DUP4 DUP8 PUSH2 0x2D8A JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x2DC8 JUMPI DUP3 MLOAD PUSH0 SUB PUSH2 0x2DC1 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0x2DC1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP1 PUSH2 0x38C5 JUMP JUMPDEST POP DUP2 PUSH2 0x2D82 JUMP JUMPDEST PUSH2 0x2D82 DUP4 DUP4 DUP2 MLOAD ISZERO PUSH2 0x2DDD JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x974 SWAP2 SWAP1 PUSH2 0x3902 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2CD2 JUMP JUMPDEST PUSH0 PUSH2 0x2CD2 DUP3 PUSH2 0x2DF7 JUMP JUMPDEST PUSH0 PUSH2 0x2CD2 DUP3 PUSH2 0x2E07 JUMP JUMPDEST PUSH2 0x2E24 DUP2 PUSH2 0x2E11 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x2CD2 DUP3 DUP5 PUSH2 0x2E1B JUMP JUMPDEST PUSH2 0x2E41 DUP2 PUSH2 0x2E07 JUMP JUMPDEST DUP2 EQ PUSH2 0x986 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x2CD2 DUP2 PUSH2 0x2E38 JUMP JUMPDEST DUP1 PUSH2 0x2E41 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x2CD2 DUP2 PUSH2 0x2E56 JUMP JUMPDEST PUSH0 PUSH0 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2E7A JUMPI PUSH2 0x2E7A PUSH0 PUSH0 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2E94 JUMPI PUSH2 0x2E94 PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x2EAE JUMPI PUSH2 0x2EAE PUSH0 PUSH0 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xC0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x2ECE JUMPI PUSH2 0x2ECE PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x2ED9 DUP11 DUP11 PUSH2 0x2E4B JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 PUSH2 0x2EEA DUP11 DUP3 DUP12 ADD PUSH2 0x2E4B JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 PUSH2 0x2EFB DUP11 DUP3 DUP12 ADD PUSH2 0x2E5C JUMP JUMPDEST SWAP6 POP POP PUSH1 0x60 PUSH2 0x2F0C DUP11 DUP3 DUP12 ADD PUSH2 0x2E5C JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 PUSH2 0x2F1D DUP11 DUP3 DUP12 ADD PUSH2 0x2E5C JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2F3C JUMPI PUSH2 0x2F3C PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2F48 DUP11 DUP3 DUP12 ADD PUSH2 0x2E67 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xC0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x2F72 JUMPI PUSH2 0x2F72 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x2F7D DUP11 DUP11 PUSH2 0x2E4B JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 PUSH2 0x2F8E DUP11 DUP3 DUP12 ADD PUSH2 0x2E5C JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 PUSH2 0x2EFB DUP11 DUP3 DUP12 ADD PUSH2 0x2E4B JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2FB4 JUMPI PUSH2 0x2FB4 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x2FBF DUP7 DUP7 PUSH2 0x2E4B JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x2FD0 DUP7 DUP3 DUP8 ADD PUSH2 0x2E5C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x2FE1 DUP7 DUP3 DUP8 ADD PUSH2 0x2E5C JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x2E24 DUP2 PUSH2 0x2DF7 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x2CD2 DUP3 DUP5 PUSH2 0x2FEB JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3016 JUMPI PUSH2 0x3016 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x3021 DUP6 DUP6 PUSH2 0x2E4B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3032 DUP6 DUP3 DUP7 ADD PUSH2 0x2E5C JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x2E41 DUP2 PUSH2 0x2DF7 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x2CD2 DUP2 PUSH2 0x303C JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3063 JUMPI PUSH2 0x3063 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x2D82 DUP5 DUP5 PUSH2 0x3045 JUMP JUMPDEST PUSH0 PUSH0 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x3081 JUMPI PUSH2 0x3081 PUSH0 PUSH0 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x309B JUMPI PUSH2 0x309B PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x2EAE JUMPI PUSH2 0x2EAE PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xC0 DUP12 DUP14 SUB SLT ISZERO PUSH2 0x30D1 JUMPI PUSH2 0x30D1 PUSH0 PUSH0 REVERT JUMPDEST DUP11 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x30EA JUMPI PUSH2 0x30EA PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x30F6 DUP14 DUP3 DUP15 ADD PUSH2 0x306E JUMP JUMPDEST SWAP11 POP SWAP11 POP POP PUSH1 0x20 DUP12 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3117 JUMPI PUSH2 0x3117 PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x3123 DUP14 DUP3 DUP15 ADD PUSH2 0x306E JUMP JUMPDEST SWAP9 POP SWAP9 POP POP PUSH1 0x40 DUP12 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3144 JUMPI PUSH2 0x3144 PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x3150 DUP14 DUP3 DUP15 ADD PUSH2 0x306E JUMP JUMPDEST SWAP7 POP SWAP7 POP POP PUSH1 0x60 PUSH2 0x3163 DUP14 DUP3 DUP15 ADD PUSH2 0x3045 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 PUSH2 0x3174 DUP14 DUP3 DUP15 ADD PUSH2 0x3045 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 DUP12 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3193 JUMPI PUSH2 0x3193 PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x319F DUP14 DUP3 DUP15 ADD PUSH2 0x2E67 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP2 SWAP5 SWAP8 SWAP11 POP SWAP3 SWAP6 SWAP9 POP JUMP JUMPDEST DUP1 ISZERO ISZERO PUSH2 0x2E24 JUMP JUMPDEST DUP1 PUSH2 0x2E24 JUMP JUMPDEST PUSH0 PUSH2 0x31CC DUP4 DUP4 PUSH2 0x31BB JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x31DD DUP3 MLOAD SWAP1 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 DUP4 ADD DUP1 PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3210 JUMPI DUP2 MLOAD PUSH2 0x31FF DUP9 DUP3 PUSH2 0x31C1 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP4 ADD SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x31EB JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3229 DUP3 DUP6 PUSH2 0x31B3 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x2CE6 DUP2 DUP5 PUSH2 0x31D4 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x31CC DUP4 DUP4 PUSH2 0x2E1B JUMP JUMPDEST PUSH0 PUSH2 0x3277 DUP3 MLOAD SWAP1 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 DUP4 ADD DUP1 PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3210 JUMPI DUP2 MLOAD PUSH2 0x3299 DUP9 DUP3 PUSH2 0x3263 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP4 ADD SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x3285 JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH0 SWAP2 ADD MSTORE JUMP JUMPDEST DUP2 DUP4 MSTORE PUSH0 PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH2 0x32CA DUP4 DUP6 DUP5 PUSH2 0x32AA JUMP JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x32EB DUP3 DUP10 PUSH2 0x2FEB JUMP JUMPDEST PUSH2 0x32F8 PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x2FEB JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x330A DUP2 DUP8 PUSH2 0x326E JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x331E DUP2 DUP7 PUSH2 0x31D4 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x1AA7 DUP2 DUP5 DUP7 PUSH2 0x32B5 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3341 DUP3 DUP6 PUSH2 0x31BB JUMP JUMPDEST PUSH2 0x2CE9 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x31BB JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x335C DUP3 DUP8 PUSH2 0x2FEB JUMP JUMPDEST PUSH2 0x3369 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x2FEB JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x337B DUP2 DUP6 PUSH2 0x326E JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x338F DUP2 DUP5 PUSH2 0x31D4 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH0 DUP2 MSTORE SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x29 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x4F776E61626C6532537465703A2063616C6C6572206973206E6F742074686520 DUP2 MSTORE PUSH9 0x3732BB9037BBB732B9 PUSH1 0xB9 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP2 POP JUMPDEST POP PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2CD2 DUP2 PUSH2 0x33AA JUMP JUMPDEST PUSH1 0x2E DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 DUP2 MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP2 POP PUSH2 0x33EB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2CD2 DUP2 PUSH2 0x3402 JUMP JUMPDEST PUSH0 PUSH1 0xFF DUP3 AND PUSH2 0x2CD2 JUMP JUMPDEST PUSH2 0x2E24 DUP2 PUSH2 0x345C JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x2CD2 DUP3 DUP5 PUSH2 0x3466 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x2CD2 DUP3 DUP5 PUSH2 0x31BB JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x349E JUMPI PUSH2 0x349E PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x2D82 DUP5 DUP5 PUSH2 0x2E4B JUMP JUMPDEST DUP1 ISZERO ISZERO PUSH2 0x2E41 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x2CD2 DUP2 PUSH2 0x34A9 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x2CD2 DUP2 PUSH2 0x2E56 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x34DC JUMPI PUSH2 0x34DC PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x34E7 DUP7 DUP7 PUSH2 0x34B1 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x34F8 DUP7 DUP3 DUP8 ADD PUSH2 0x34BC JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x2FE1 DUP7 DUP3 DUP8 ADD PUSH2 0x34B1 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3517 DUP3 DUP6 PUSH2 0x2FEB JUMP JUMPDEST PUSH2 0x2CE9 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2FEB JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3537 JUMPI PUSH2 0x3537 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x2D82 DUP5 DUP5 PUSH2 0x34B1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3555 JUMPI PUSH2 0x3555 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x2D82 DUP5 DUP5 PUSH2 0x34BC JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x356E DUP3 DUP6 PUSH2 0x2FEB JUMP JUMPDEST PUSH2 0x2CE9 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2E1B JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3590 JUMPI PUSH2 0x3590 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x359B DUP7 DUP7 PUSH2 0x34BC JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x35AC DUP7 DUP3 DUP8 ADD PUSH2 0x34BC JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x2FE1 DUP7 DUP3 DUP8 ADD PUSH2 0x34BC JUMP JUMPDEST DUP1 MLOAD PUSH2 0x2CD2 DUP2 PUSH2 0x303C JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x35DB JUMPI PUSH2 0x35DB PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x2D82 DUP5 DUP5 PUSH2 0x35BD JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 SWAP2 ADD SWAP1 DUP2 MSTORE PUSH0 JUMPDEST POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2CD2 DUP2 PUSH2 0x35E6 JUMP JUMPDEST PUSH1 0x2B DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x496E697469616C697A61626C653A20636F6E7472616374206973206E6F742069 DUP2 MSTORE PUSH11 0x6E697469616C697A696E67 PUSH1 0xA8 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP2 POP PUSH2 0x33EB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2CD2 DUP2 PUSH2 0x362A JUMP JUMPDEST PUSH1 0x1F DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 DUP2 MSTORE SWAP2 POP PUSH2 0x3613 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2CD2 DUP2 PUSH2 0x3681 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x2CD2 JUMPI PUSH2 0x2CD2 PUSH2 0x36C4 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3341 DUP3 DUP6 PUSH2 0x2FEB JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x2CD2 JUMPI PUSH2 0x2CD2 PUSH2 0x36C4 JUMP JUMPDEST DUP2 DUP2 MUL DUP1 DUP3 ISZERO DUP4 DUP3 DIV DUP6 EQ OR PUSH2 0x3724 JUMPI PUSH2 0x3724 PUSH2 0x36C4 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH2 0x374D JUMPI PUSH2 0x374D PUSH2 0x372B JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x3760 DUP3 DUP7 PUSH2 0x2FEB JUMP JUMPDEST PUSH2 0x376D PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2FEB JUMP JUMPDEST PUSH2 0x2D82 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x31BB JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x3788 DUP3 DUP6 PUSH2 0x2FEB JUMP JUMPDEST PUSH2 0x2CE9 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3466 JUMP JUMPDEST PUSH0 PUSH2 0x37A1 DUP4 DUP6 DUP5 PUSH2 0x32AA JUMP JUMPDEST POP POP ADD SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x2D82 DUP3 DUP5 DUP7 PUSH2 0x3795 JUMP JUMPDEST PUSH1 0x2A DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E DUP2 MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP2 POP PUSH2 0x33EB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2CD2 DUP2 PUSH2 0x37B3 JUMP JUMPDEST DUP3 DUP2 DUP4 MCOPY POP PUSH0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH0 PUSH2 0x381D DUP3 MLOAD SWAP1 JUMP JUMPDEST PUSH2 0x382B DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x3809 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x2CE9 DUP3 DUP5 PUSH2 0x3814 JUMP JUMPDEST PUSH1 0x26 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F DUP2 MSTORE PUSH6 0x1C8818D85B1B PUSH1 0xD2 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP2 POP PUSH2 0x33EB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2CD2 DUP2 PUSH2 0x3840 JUMP JUMPDEST PUSH1 0x1D DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 DUP2 MSTORE SWAP2 POP PUSH2 0x3613 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2CD2 DUP2 PUSH2 0x3892 JUMP JUMPDEST PUSH0 PUSH2 0x38DE DUP3 MLOAD SWAP1 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH2 0x38F5 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x3809 JUMP JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND PUSH2 0x32D3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x2CE9 DUP2 DUP5 PUSH2 0x38D5 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MLOAD 0x2B 0x23 ISZERO 0xBE MOD PUSH30 0xAF0697F0324E6327B49545D26765779854A32706075DBFA2DE64736F6C63 NUMBER STOP ADDMOD SHR STOP CALLER ","sourceMap":"825:36975:39:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1522:38;;;;;;;;;;;;:::i;:::-;;;;;;;;7109:1866;;;;;;:::i;:::-;;:::i;:::-;;1647:29;;;;;5198:1858;;;;;;:::i;:::-;;:::i;3716:1429::-;;;;;;:::i;:::-;;:::i;1380:41::-;;;;;2085:101:2;;;:::i;2031:212:1:-;;;:::i;3548:115:39:-;;;:::i;1462:85:2:-;1534:6;;-1:-1:-1;;;;;1534:6:2;1462:85;;;;;;;:::i;10686:1038:39:-;;;;;;:::i;:::-;;:::i;9028:1605::-;;;;;;:::i;:::-;;:::i;1144:99:1:-;1223:13;;-1:-1:-1;;;;;1223:13:1;1144:99;;1436:178;;;;;;:::i;:::-;;:::i;12922:2099:39:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;7109:1866::-;7394:26;7424:1;7394:31;7390:65;;7434:21;;-1:-1:-1;;;7434:21:39;;;;;;;;;;;7390:65;7490:15;-1:-1:-1;;;;;7469:36:39;:17;-1:-1:-1;;;;;7469:36:39;;7465:67;;7514:18;;-1:-1:-1;;;7514:18:39;;;;;;;;;;;7465:67;7542:40;7564:17;7542:21;:40::i;:::-;7592:38;7614:15;7592:21;:38::i;:::-;7641:21;:19;:21::i;:::-;7673:34;7689:17;7673:15;:34::i;:::-;7717:32;7733:15;7717;:32::i;:::-;7760:54;7784:10;7796:17;7760:23;:54::i;:::-;7824:29;7842:10;7824:17;:29::i;:::-;7864:77;7892:15;7909:10;7921:19;7864:27;:77::i;:::-;7973:10;7952:18;:31;;-1:-1:-1;;;;;;7952:31:39;;;;;;;-1:-1:-1;8012:17:39;7993:16;:36;;-1:-1:-1;;;;;;7993:36:39;-1:-1:-1;;;;;7993:36:39;;;;;-1:-1:-1;8060:19:39;;8039:18;:40;-1:-1:-1;8113:22:39;;8089:21;:46;-1:-1:-1;8161:26:39;8145:13;:42;;-1:-1:-1;;8145:42:39;;;;;-1:-1:-1;8233:16:39;;;8247:1;8233:16;;;;;;;;;8198:32;;8233:16;;;;;;;;;;;-1:-1:-1;8233:16:39;8198:51;;8280:15;8259;8275:1;8259:18;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8259:36:39;;;;:18;;;;;;;;;;;:36;8341:16;;;8355:1;8341:16;;;;;;;;;8305:33;;8341:16;;;;;;;;;;;;-1:-1:-1;8341:16:39;8305:52;;8389:26;8367:16;8384:1;8367:19;;;;;;;;:::i;:::-;;;;;;;;;;:48;8426:189;;-1:-1:-1;;;8426:189:39;;-1:-1:-1;;;;;8426:11:39;:28;;;;:189;;8476:10;;8517:4;;8537:15;;8566:16;;8596:9;;;;8426:189;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8626:29;8644:10;8626:17;:29::i;:::-;8765:15;-1:-1:-1;;;;;8671:192:39;8734:17;-1:-1:-1;;;;;8671:192:39;8710:10;-1:-1:-1;;;;;8671:192:39;;8794:19;8827:26;8671:192;;;;;;;:::i;:::-;;;;;;;;8874:43;8899:17;8874:24;:43::i;:::-;8927:41;8952:15;8927:24;:41::i;:::-;7380:1595;;7109:1866;;;;;;;:::o;5198:1858::-;5475:26;5505:1;5475:31;5471:65;;5515:21;;-1:-1:-1;;;5515:21:39;;;;;;;;;;;5471:65;5571:15;-1:-1:-1;;;;;5550:36:39;:17;-1:-1:-1;;;;;5550:36:39;;5546:67;;5595:18;;-1:-1:-1;;;5595:18:39;;;;;;;;;;;5546:67;5623:40;5645:17;5623:21;:40::i;:::-;5673:38;5695:15;5673:21;:38::i;:::-;5722:21;:19;:21::i;:::-;5754:34;5770:17;5754:15;:34::i;:::-;5798:32;5814:15;5798;:32::i;:::-;5841:54;5865:10;5877:17;5841:23;:54::i;:::-;5905:29;5923:10;5905:17;:29::i;:::-;5945:81;5973:17;5992:10;6004:21;5945:27;:81::i;:::-;6058:10;6037:18;:31;;-1:-1:-1;;;;;;6037:31:39;;;;;;;-1:-1:-1;6097:17:39;6078:16;:36;;-1:-1:-1;;;;;;6078:36:39;-1:-1:-1;;;;;6078:36:39;;;;;-1:-1:-1;6143:21:39;;6124:16;:40;-1:-1:-1;6198:22:39;;6174:21;:46;-1:-1:-1;6246:30:39;6230:13;:46;;-1:-1:-1;;6230:46:39;;;;;-1:-1:-1;6322:16:39;;;6336:1;6322:16;;;;;;;;;6287:32;;6322:16;;;;;;;;;;;-1:-1:-1;6322:16:39;6287:51;;6369:15;6348;6364:1;6348:18;;;;;;;;:::i;:::-;-1:-1:-1;;;;;6348:36:39;;;;:18;;;;;;;;;;;:36;6430:16;;;6444:1;6430:16;;;;;;;;;6394:33;;6430:16;;;;;;;;;;;;-1:-1:-1;6430:16:39;6394:52;;6478:26;6456:16;6473:1;6456:19;;;;;;;;:::i;:::-;;;;;;;;;;:48;6515:189;;-1:-1:-1;;;6515:189:39;;-1:-1:-1;;;;;6515:11:39;:28;;;;:189;;6565:10;;6606:4;;6626:15;;6655:16;;6685:9;;;;6515:189;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6715:29;6733:10;6715:17;:29::i;:::-;6879:15;-1:-1:-1;;;;;6760:184:39;6813:17;-1:-1:-1;;;;;6760:184:39;6789:10;-1:-1:-1;;;;;6760:184:39;;6844:21;6908:26;6760:184;;;;;;;:::i;:::-;;;;;;;;6955:43;6980:17;6955:24;:43::i;:::-;7008:41;7033:15;7008:24;:41::i;3716:1429::-;3899:28;3931:1;3899:33;3895:67;;3941:21;;-1:-1:-1;;;3941:21:39;;;;;;;;;;;3895:67;3972:40;3994:17;3972:21;:40::i;:::-;4023:21;:19;:21::i;:::-;4055:34;4071:17;4055:15;:34::i;:::-;4100:54;4124:10;4136:17;4100:23;:54::i;:::-;4164:29;4182:10;4164:17;:29::i;:::-;4204:81;4232:17;4251:10;4263:21;4204:27;:81::i;:::-;4317:10;4296:18;:31;;-1:-1:-1;;;;;;4296:31:39;;;;;;;-1:-1:-1;4353:32:39;4337:13;:48;;-1:-1:-1;;4337:48:39;;;;;-1:-1:-1;4414:21:39;;4395:16;:40;-1:-1:-1;4481:16:39;;;4495:1;4481:16;;;;;;;;;4446:32;;4481:16;;;;;;;;;;;-1:-1:-1;4481:16:39;4446:51;;4528:17;4507:15;4523:1;4507:18;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4507:38:39;;;;:18;;;;;;;;;;;:38;4591:16;;;4605:1;4591:16;;;;;;;;;4555:33;;4591:16;;;;;;;;;;;;-1:-1:-1;4591:16:39;4555:52;;4639:28;4617:16;4634:1;4617:19;;;;;;;;:::i;:::-;;;;;;;;;;:50;4678:182;;-1:-1:-1;;;4678:182:39;;-1:-1:-1;;;;;4678:11:39;:28;;;;:182;;4728:10;;4769:4;;4789:15;;4818:16;;4678:182;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4871:29;4889:10;4871:17;:29::i;:::-;4980:17;-1:-1:-1;;;;;4916:168:39;4956:10;-1:-1:-1;;;;;4916:168:39;;5011:21;5046:28;4916:168;;;;;;;:::i;:::-;;;;;;;;5095:43;5120:17;5095:24;:43::i;:::-;3885:1260;;3716:1429;;;:::o;2085:101:2:-;1355:13;:11;:13::i;:::-;2149:30:::1;2176:1;2149:18;:30::i;:::-;2085:101::o:0;2031:212:1:-;1223:13;;965:10:9;;-1:-1:-1;;;;;1223:13:1;2130:24;;2122:78;;;;-1:-1:-1;;;2122:78:1;;;;;;;:::i;:::-;;;;;;;;;2210:26;2229:6;2210:18;:26::i;:::-;2073:170;2031:212::o;3548:115:39:-;3279:19:3;3302:13;;;;;;3301:14;;3347:34;;;;-1:-1:-1;3365:12:3;;3380:1;3365:12;;;;:16;3347:34;3346:108;;;-1:-1:-1;3426:4:3;1713:19:8;:23;;;3387:66:3;;-1:-1:-1;3436:12:3;;;;;:17;3387:66;3325:201;;;;-1:-1:-1;;;3325:201:3;;;;;;;:::i;:::-;3536:12;:16;;-1:-1:-1;;3536:16:3;3551:1;3536:16;;;3562:65;;;;3596:13;:20;;-1:-1:-1;;3596:20:3;;;;;3562:65;3601:21:39::1;:19;:21::i;:::-;3632:24;:22;:24::i;:::-;3651:14:3::0;3647:99;;;3697:5;3681:21;;-1:-1:-1;;3681:21:3;;;3721:14;;;;;;3681:13;;3721:14;:::i;:::-;;;;;;;;3269:483;3548:115:39:o;10686:1038::-;10807:28;10839:1;10807:33;10803:67;;10849:21;;-1:-1:-1;;;10849:21:39;;;;;;;;;;;10803:67;10880:40;10902:17;10880:21;:40::i;:::-;10930:21;:19;:21::i;:::-;10983:10;10962:18;:31;;-1:-1:-1;;;;;;10962:31:39;;;;;;;-1:-1:-1;11022:17:39;11003:16;:36;;-1:-1:-1;;;;;;11003:36:39;-1:-1:-1;;;;;11003:36:39;;;;;-1:-1:-1;11065:31:39;11049:13;:47;;-1:-1:-1;;11049:47:39;;;;;-1:-1:-1;11142:16:39;;;11156:1;11142:16;;;;;;;;;11107:32;;11142:16;;;;;;;;;;;-1:-1:-1;11142:16:39;11107:51;;11189:17;11168:15;11184:1;11168:18;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11168:38:39;;;;:18;;;;;;;;;;;:38;11252:16;;;11266:1;11252:16;;;;;;;;;11216:33;;11252:16;;;;;;;;;;;;-1:-1:-1;11252:16:39;11216:52;;11300:28;11278:16;11295:1;11278:19;;;;;;;;:::i;:::-;;;;;;;;;;:50;11339:182;;-1:-1:-1;;;11339:182:39;;-1:-1:-1;;;;;11339:11:39;:28;;;;:182;;11389:10;;11430:4;;11450:15;;11479:16;;11339:182;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11532:29;11550:10;11532:17;:29::i;:::-;11615:17;-1:-1:-1;;;;;11577:86:39;11603:10;-1:-1:-1;;;;;11577:86:39;;11634:28;11577:86;;;;;;:::i;:::-;;;;;;;;11674:43;11699:17;11674:24;:43::i;:::-;10793:931;;10686:1038;;:::o;9028:1605::-;9315:26;9345:1;9315:31;9311:65;;9355:21;;-1:-1:-1;;;9355:21:39;;;;;;;;;;;9311:65;9411:15;-1:-1:-1;;;;;9390:36:39;:17;-1:-1:-1;;;;;9390:36:39;;9386:67;;9435:18;;-1:-1:-1;;;9435:18:39;;;;;;;;;;;9386:67;9463:40;9485:17;9463:21;:40::i;:::-;9513:38;9535:15;9513:21;:38::i;:::-;9562:21;:19;:21::i;:::-;9615:10;9594:18;:31;;-1:-1:-1;;;;;;9594:31:39;;;;;;;-1:-1:-1;9654:17:39;9635:16;:36;;-1:-1:-1;;;;;;9635:36:39;-1:-1:-1;;;;;9635:36:39;;;;;-1:-1:-1;9700:32:39;;9681:16;:51;-1:-1:-1;9766:22:39;;9742:21;:46;-1:-1:-1;9814:29:39;9798:13;:45;;-1:-1:-1;;9798:45:39;;;;;-1:-1:-1;9889:16:39;;;9903:1;9889:16;;;;;;;;;9854:32;;9889:16;;;;;;;;;;;-1:-1:-1;9889:16:39;9854:51;;9936:15;9915;9931:1;9915:18;;;;;;;;:::i;:::-;-1:-1:-1;;;;;9915:36:39;;;;:18;;;;;;;;;;;:36;9997:16;;;10011:1;9997:16;;;;;;;;;9961:33;;9997:16;;;;;;;;;;;;-1:-1:-1;9997:16:39;9961:52;;10045:26;10023:16;10040:1;10023:19;;;;;;;;:::i;:::-;;;;;;;;;;:48;10082:189;;-1:-1:-1;;;10082:189:39;;-1:-1:-1;;;;;10082:11:39;:28;;;;:189;;10132:10;;10173:4;;10193:15;;10222:16;;10252:9;;;;10082:189;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10282:29;10300:10;10282:17;:29::i;:::-;10456:15;-1:-1:-1;;;;;10327:194:39;10379:17;-1:-1:-1;;;;;10327:194:39;10355:10;-1:-1:-1;;;;;10327:194:39;;10410:32;10485:26;10327:194;;;;;;;:::i;1436:178:1:-;1355:13:2;:11;:13::i;:::-;1525::1::1;:24:::0;;-1:-1:-1;;;;;1525:24:1;::::1;-1:-1:-1::0;;;;;;1525:24:1;;::::1;::::0;::::1;::::0;;;1589:7:::1;1534:6:2::0;;-1:-1:-1;;;;;1534:6:2;;1462:85;1589:7:1::1;-1:-1:-1::0;;;;;1564:43:1::1;;;;;;;;;;;1436:178:::0;:::o;12922:2099:39:-;13186:12;13200:29;2526:21:4;:19;:21::i;:::-;13330:10:39::1;-1:-1:-1::0;;;;;13352:11:39::1;13330:34;;13326:94;;13387:22;;-1:-1:-1::0;;;13387:22:39::1;;;;;;;;;;;13326:94;-1:-1:-1::0;;;;;13525:26:39;::::1;13546:4;13525:26;13521:83;;13574:19;;-1:-1:-1::0;;;13574:19:39::1;;;;;;;;;;;13521:83;13718:18;;;;-1:-1:-1::0;;;;;13718:18:39;;::::1;13706:30:::0;;::::1;;13702:86;;13759:18;;-1:-1:-1::0;;;13759:18:39::1;;;;;;;;;;;13702:86;13885:1;13867:19:::0;::::1;;::::0;:42:::1;;-1:-1:-1::0;13908:1:39::1;13890:19:::0;::::1;;13867:42;:66;;;-1:-1:-1::0;13932:1:39::1;13913:20:::0;::::1;;13867:66;13863:136;;;13956:32;;-1:-1:-1::0;;;13956:32:39::1;;;;;;;;;;;13863:136;14024:16;::::0;;14038:1:::1;14024:16:::0;;;;;::::1;::::0;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;;14009:31:39;-1:-1:-1;14071:32:39::1;14054:13;;;;:49;::::0;::::1;;;;;;:::i;:::-;::::0;14050:927:::1;;14137:70;14161:8;14171:7;;14179:1;14171:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;14183:7;;14191:1;14183:10;;;;;;;:::i;:::-;;;;;;;14195:8;;14204:1;14195:11;;;;;;;:::i;:::-;;;;;;;14137:23;:70::i;:::-;14119:12;14132:1;14119:15;;;;;;;;:::i;:::-;;;;;;:88;;;::::0;::::1;14050:927;;;14245:30;14228:13;;;;:47;::::0;::::1;;;;;;:::i;:::-;::::0;14224:753:::1;;14309:76;14332:8;14342:7;;14350:1;14342:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;14354:7;;14362:1;14354:10;;;;;;;:::i;:::-;;;;;;;14366:8;;14375:1;14366:11;;;;;;;:::i;:::-;;;;;;;14379:5;;14309:22;:76::i;14224:753::-;14423:26;14406:13;;;;:43;::::0;::::1;;;;;;:::i;:::-;::::0;14402:575:::1;;14483:72;14502:8;14512:7;;14520:1;14512:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;14524:7;;14532:1;14524:10;;;;;;;:::i;:::-;;;;;;;14536:8;;14545:1;14536:11;;;;;;;:::i;:::-;;;;;;;14549:5;;14483:18;:72::i;14402:575::-;14593:29;14576:13;;;;:46;::::0;::::1;;;;;;:::i;:::-;::::0;14572:405:::1;;14656:75;14678:8;14688:7;;14696:1;14688:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;14700:7;;14708:1;14700:10;;;;;;;:::i;:::-;;;;;;;14712:8;;14721:1;14712:11;;;;;;;:::i;:::-;;;;;;;14725:5;;14656:21;:75::i;14572:405::-;14769:31;14752:13;;;;:48;::::0;::::1;;;;;;:::i;:::-;::::0;14748:229:::1;;14834:69;14857:8;14867:7;;14875:1;14867:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;14879:7;;14887:1;14879:10;;;;;;;:::i;:::-;;;;;;;14891:8;;14900:1;14891:11;;;;;;;:::i;:::-;;;;;;;14834:22;:69::i;14748:229::-;14941:25;;-1:-1:-1::0;;;14941:25:39::1;;;;;;;;;;;14748:229;14995:4;14987:27;;2568:20:4::0;1808:1;3074:7;:22;2894:209;2568:20;12922:2099:39;;;;;;;;;;;;;:::o;37531:267::-;37630:36;;-1:-1:-1;;;37630:36:39;;37603:19;;-1:-1:-1;;;;;37630:11:39;:19;;;;:36;;37658:6;;37630:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37602:64;;;;37681:14;37676:60;;37728:6;37704:32;;-1:-1:-1;;;37704:32:39;;;;;;;;:::i;37676:60::-;37760:4;-1:-1:-1;;;;;37750:14:39;:6;-1:-1:-1;;;;;37750:14:39;;37746:45;;37773:18;;-1:-1:-1;;;37773:18:39;;;;;;;;;;;37746:45;37592:206;37531:267;:::o;36095:179::-;36155:56;;-1:-1:-1;;;36155:56:39;;-1:-1:-1;;;;;36155:11:39;:29;;;;:56;;36185:10;;36205:4;;36155:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36150:118;;36234:23;;-1:-1:-1;;;36234:23:39;;;;;;;;;;;34996:166;35056:11;35070:6;-1:-1:-1;;;;;35070:21:39;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35056:37;-1:-1:-1;35107:14:39;;35103:52;;35151:3;35130:25;;-1:-1:-1;;;35130:25:39;;;;;;;;:::i;35604:290::-;35691:41;;-1:-1:-1;;;35691:41:39;;-1:-1:-1;;;;;35691:11:39;:27;;;;:41;;35719:4;;35725:6;;35691:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35686:202;;35762:52;;-1:-1:-1;;;35762:52:39;;35748:11;;-1:-1:-1;;;;;35762:11:39;:29;;;;:52;;35792:4;;35806:6;;35762:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35748:66;-1:-1:-1;35832:14:39;;35828:49;;35873:3;35855:22;;-1:-1:-1;;;35855:22:39;;;;;;;;:::i;35828:49::-;35734:154;35604:290;;:::o;36792:229::-;36858:11;36873:17;36894:11;-1:-1:-1;;;;;36894:29:39;;36924:4;36894:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36857:72;;;;;1161:1;36943:3;:14;;:31;;;;36973:1;36961:9;:13;36943:31;36939:75;;;37010:3;36983:31;;-1:-1:-1;;;36983:31:39;;;;;;;;:::i;31782:278::-;31888:10;;31884:170;;31914:23;31958:6;-1:-1:-1;;;;;31958:17:39;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31914:64;-1:-1:-1;31992:51:39;-1:-1:-1;;;;;31992:22:39;;32015:4;32029;32036:6;31992:22;:51::i;32455:508::-;32524:23;32568:6;-1:-1:-1;;;;;32568:17:39;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32524:64;;32599:18;32620:5;-1:-1:-1;;;;;32620:15:39;;32644:4;32620:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32599:51;-1:-1:-1;32664:14:39;;32660:297;;-1:-1:-1;;;;;32780:18:39;32750:27;32780:18;;;;;32812:51;;:18;;32780;32852:10;32812:18;:51::i;:::-;32927:5;-1:-1:-1;;;;;32882:64:39;32898:19;-1:-1:-1;;;;;32882:64:39;;32935:10;32882:64;;;;;;:::i;:::-;;;;;;;;32680:277;32514:449;;32455:508;:::o;1620:130:2:-;1534:6;;-1:-1:-1;;;;;1534:6:2;965:10:9;1683:23:2;1675:68;;;;-1:-1:-1;;;1675:68:2;;;;;;;:::i;1798:153:1:-;1887:13;1880:20;;-1:-1:-1;;;;;;1880:20:1;;;1910:34;1935:8;1910:24;:34::i;889:100::-;5374:13:3;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:3;;;;;;;:::i;:::-;956:26:1::1;:24;:26::i;1889:111:4:-:0;5374:13:3;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:3;;;;;;;:::i;:::-;1959:34:4::1;:32;:34::i;2601:287::-:0;1851:1;2733:7;;:19;2725:63;;;;-1:-1:-1;;;2725:63:4;;;;;;;:::i;:::-;1851:1;2863:7;:18;2601:287::o;16201:771:39:-;16391:28;16431:33;16485:6;-1:-1:-1;;;;;16485:17:39;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16431:74;-1:-1:-1;16516:35:39;16554:46;16584:16;;16554:27;:46;:::i;:::-;16516:84;-1:-1:-1;16610:74:39;-1:-1:-1;;;;;16610:28:39;;16647:6;16516:84;16610:28;:74::i;:::-;16709:56;;-1:-1:-1;;;16709:56:39;;16695:11;;-1:-1:-1;;;;;16709:17:39;;;;;:56;;16727:8;;16737:27;;16709:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16695:70;-1:-1:-1;16779:14:39;;16775:73;;16833:3;16816:21;;-1:-1:-1;;;16816:21:39;;;;;;;;:::i;16775:73::-;16881:84;16909:8;16919:6;16927:15;16944:20;16881:27;:84::i;:::-;16858:107;16201:771;-1:-1:-1;;;;;;;;16201:771:39:o;18280:1335::-;18501:28;18541:31;18593:12;-1:-1:-1;;;;;18593:23:39;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18890:30;;;-1:-1:-1;;;18890:30:39;;;;18541:78;;-1:-1:-1;;;;;;18745:16:39;;;;18804:21;;;;18717:25;;18745:16;;18890:28;;:30;;;;;;;;;;;;;18745:16;18890:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18836:85;;18931:34;18968:173;18994:13;19021:19;19054:15;19083:22;19119:12;;18968;:173::i;:::-;18931:210;-1:-1:-1;19152:30:39;19185:45;19214:16;;18931:210;19185:45;:::i;:::-;19152:78;-1:-1:-1;19240:80:39;-1:-1:-1;;;;;19240:28:39;;19277:17;19152:78;19240:28;:80::i;:::-;19331:11;19345:17;-1:-1:-1;;;;;19345:28:39;;19374:8;19384:22;19345:62;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19331:76;-1:-1:-1;19421:14:39;;19417:73;;19475:3;19458:21;;-1:-1:-1;;;19458:21:39;;;;;;;;:::i;19417:73::-;19523:85;19551:8;19561:12;19575:13;19590:17;19523:27;:85::i;:::-;19500:108;18280:1335;-1:-1:-1;;;;;;;;;;;;;;18280:1335:39:o;20951:1345::-;21168:28;21208:31;21260:12;-1:-1:-1;;;;;21260:23:39;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21557:30;;;-1:-1:-1;;;21557:30:39;;;;21208:78;;-1:-1:-1;;;;;;21412:16:39;;;;21471:21;;;;21384:25;;21412:16;;21557:28;;:30;;;;;;;;;;;;;21412:16;21557:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21503:85;-1:-1:-1;21599:33:39;21635:40;21656:19;21635:18;;:40;:::i;:::-;21599:76;;21686:34;21723:179;21749:13;21776:25;21815:15;21844:22;21880:12;;21723;:179::i;24084:2286::-;24324:28;24364:31;24416:12;-1:-1:-1;;;;;24416:23:39;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24364:78;;24467:31;24501:12;-1:-1:-1;;;;;24501:33:39;;24535:8;24501:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24467:77;;24558:19;24622:23;24580:39;:65;:165;;24706:39;24580:165;;;24664:23;24580:165;24558:187;-1:-1:-1;24760:62:39;-1:-1:-1;;;;;24760:26:39;;24795:12;24558:187;24760:26;:62::i;:::-;24850:53;;-1:-1:-1;;;24850:53:39;;24836:11;;-1:-1:-1;;;;;24850:30:39;;;;;:53;;24881:8;;24891:11;;24850:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24836:67;-1:-1:-1;24922:14:39;;24918:82;;24981:3;24963:22;;-1:-1:-1;;;24963:22:39;;;;;;;;:::i;24918:82::-;-1:-1:-1;;25263:29:39;;;-1:-1:-1;;;25263:29:39;;;;-1:-1:-1;;;;;25135:16:39;;;;;-1:-1:-1;25196:16:39;;;25107:25;;25263:11;:27;;;;;;:29;;;;;;;;;;;;;;;:27;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25237:55;;25306:20;25347:1;25329:15;:19;:216;;25521:24;25329:216;;;25471:30;25486:15;1272:4;25471:30;:::i;:::-;25445:1;25411:30;25426:15;1272:4;25411:30;:::i;:::-;25368:39;1272:4;25368:24;:39;:::i;:::-;:74;;;;:::i;:::-;:78;;;;:::i;:::-;25367:135;;;;:::i;:::-;25306:239;;25560:11;25574:17;-1:-1:-1;;;;;25574:40:39;;25615:8;25625:12;25574:64;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25560:78;-1:-1:-1;25656:14:39;;25652:83;;25716:3;25697:23;;-1:-1:-1;;;25697:23:39;;;;;;;;:::i;25652:83::-;25223:522;;;25755:33;25809:17;-1:-1:-1;;;;;25809:28:39;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25755:85;;25851:193;25877:15;25906;-1:-1:-1;;;;;25906:25:39;;25940:4;25906:40;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25960:13;25987:21;;26022:12;;25851;:193::i;:::-;-1:-1:-1;26078:59:39;26120:17;26078:39;:59;:::i;:::-;26055:82;;26193:20;26152:13;-1:-1:-1;;;;;26152:23:39;;26184:4;26152:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:61;26148:134;;;26236:35;;-1:-1:-1;;;26236:35:39;;;;;;;;;;;26148:134;26292:71;-1:-1:-1;;;;;26292:26:39;;26327:12;26342:20;26292:26;:71::i;:::-;24354:2016;;;;24084:2286;;;;;;;;:::o;27895:1723::-;28084:28;28124:33;28178:6;-1:-1:-1;;;;;28178:17:39;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28124:74;;28209:29;28241:6;-1:-1:-1;;;;;28241:27:39;;28269:8;28241:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28209:69;;28288:19;28340:21;28310:27;:51;:129;;28412:27;28310:129;;;28376:21;28310:129;28288:151;-1:-1:-1;28450:58:39;-1:-1:-1;;;;;28450:28:39;;28487:6;28288:151;28450:28;:58::i;:::-;28532:47;;-1:-1:-1;;;28532:47:39;;28518:11;;-1:-1:-1;;;;;28532:24:39;;;;;:47;;28557:8;;28567:11;;28532:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28518:61;-1:-1:-1;28594:14:39;;28590:74;;28649:3;28631:22;;-1:-1:-1;;;28631:22:39;;;;;;;;:::i;28590:74::-;28697:50;28727:20;28697:27;:50;:::i;:::-;28674:73;;28758:23;28784:11;-1:-1:-1;;;;;28784:27:39;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28758:55;;28823:20;28864:1;28846:15;:19;:196;;29022:20;28846:196;;;28976:30;28991:15;1272:4;28976:30;:::i;:::-;28954:1;28920:30;28935:15;1272:4;28920:30;:::i;:::-;28881:35;1272:4;28881:20;:35;:::i;:::-;:70;;;;:::i;:::-;:74;;;;:::i;:::-;28880:127;;;;:::i;:::-;28823:219;;29053:29;29085:6;-1:-1:-1;;;;;29085:26:39;;29112:8;29085:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29053:68;;29150:21;29135:12;:36;29131:103;;;29202:21;29187:36;;29131:103;29250:53;;-1:-1:-1;;;29250:53:39;;-1:-1:-1;;;;;29250:29:39;;;;;:53;;29280:8;;29290:12;;29250:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29244:59;-1:-1:-1;29317:14:39;;29313:75;;29373:3;29354:23;;-1:-1:-1;;;29354:23:39;;;;;;;;:::i;29313:75::-;29402:40;;-1:-1:-1;;;29402:40:39;;29445:20;;-1:-1:-1;;;;;29402:25:39;;;;;:40;;29436:4;;29402:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:63;29398:136;;;29488:35;;-1:-1:-1;;;29488:35:39;;;;;;;;;;;29398:136;29544:67;-1:-1:-1;;;;;29544:28:39;;29581:6;29590:20;29544:28;:67::i;:::-;28114:1504;;;;;;;27895:1723;;;;;;:::o;2894:209:4:-;1808:1;3074:7;:22;2894:209::o;1421:214:7:-;1532:96;1552:5;1582:27;;;1611:4;1617:2;1621:5;1559:68;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1559:68:7;;;;;;;;;;;;;;-1:-1:-1;;;;;1559:68:7;-1:-1:-1;;;;;;1559:68:7;;;;;;;;;;1532:19;:96::i;996:186::-;1089:86;1109:5;1139:23;;;1164:2;1168:5;1116:58;;;;;;;;;:::i;2687:187:2:-;2779:6;;;-1:-1:-1;;;;;2795:17:2;;;-1:-1:-1;;;;;;2795:17:2;;;;;;;2827:40;;2779:6;;;2795:17;2779:6;;2827:40;;2760:16;;2827:40;2750:124;2687:187;:::o;1125:111::-;5374:13:3;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:3;;;;;;;:::i;:::-;1197:32:2::1;965:10:9::0;1197:18:2::1;:32::i;2006:109:4:-:0;5374:13:3;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:3;;;;;;;:::i;3889:421:7:-;3987:25;4038:22;;;4062:7;4071:5;4015:62;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;4015:62:7;;;;;;;;;;;;;;-1:-1:-1;;;;;4015:62:7;-1:-1:-1;;;;;;4015:62:7;;;;;;;;;;;-1:-1:-1;4093:44:7;4117:5;4015:62;4093:23;:44::i;:::-;4088:216;;4153:86;4173:5;4203:22;;;4227:7;4236:1;4180:58;;;;;;;;;:::i;4153:86::-;4253:40;4273:5;4280:12;4253:19;:40::i;33791:869:39:-;34111:46;;-1:-1:-1;;;34111:46:39;;34047:17;;33984:28;;-1:-1:-1;;;;;34111:23:39;;;;;:46;;34143:12;;34111:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34075:82;;34167:11;34181:12;-1:-1:-1;;;;;34181:25:39;;34207:8;34217:20;34181:57;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34167:71;-1:-1:-1;34252:14:39;;34248:75;;34308:3;34289:23;;-1:-1:-1;;;34289:23:39;;;;;;;;:::i;34248:75::-;34367:46;;-1:-1:-1;;;34367:46:39;;34332:32;;-1:-1:-1;;;;;34367:23:39;;;;;:46;;34399:12;;34367:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34332:81;-1:-1:-1;34483:20:39;34428:52;34332:81;34428:25;:52;:::i;:::-;:75;34424:148;;;34526:35;;-1:-1:-1;;;34526:35:39;;;;;;;;;;;34424:148;34582:71;-1:-1:-1;;;;;34582:26:39;;34617:12;34632:20;34582:26;:71::i;:::-;34014:646;;;33791:869;;;;;;:::o;30434:761::-;30637:17;30666:51;-1:-1:-1;;;;;30666:20:39;;30695:10;30708:8;30666:20;:51::i;:::-;30760:33;;-1:-1:-1;;;30760:33:39;;30728:29;;-1:-1:-1;;;;;30760:18:39;;;;;:33;;30787:4;;30760:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30728:65;;30805:12;30831:10;-1:-1:-1;;;;;30823:24:39;30848:5;;30823:31;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30804:50;;;30869:7;30864:67;;30899:21;;-1:-1:-1;;;30899:21:39;;;;;;;;;;;30864:67;30972:33;;-1:-1:-1;;;30972:33:39;;30941:28;;-1:-1:-1;;;;;30972:18:39;;;;;:33;;30999:4;;30972:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30941:64;-1:-1:-1;31028:44:39;31051:21;30941:64;31028:44;:::i;:::-;31016:56;;31098:12;31086:9;:24;31082:80;;;31133:18;;-1:-1:-1;;;31133:18:39;;;;;;;;;;;31082:80;31172:16;;;30434:761;;;;;;;;:::o;5328:653:7:-;5758:23;5784:69;5812:4;5784:69;;;;;;;;;;;;;;;;;5792:5;-1:-1:-1;;;;;5784:27:7;;;:69;;;;;:::i;:::-;5758:95;;5871:10;:17;5892:1;5871:22;:56;;;;5908:10;5897:30;;;;;;;;;;;;:::i;:::-;5863:111;;;;-1:-1:-1;;;5863:111:7;;;;;;;:::i;6482:616::-;6576:4;6878:12;6892:23;6927:5;-1:-1:-1;;;;;6919:19:7;6939:4;6919:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6877:67;;;;6973:7;:69;;;;-1:-1:-1;6985:17:7;;:22;;:56;;;7022:10;7011:30;;;;;;;;;;;;:::i;:::-;6973:118;;;;-1:-1:-1;;;;;;1713:19:8;;;:23;;7046:45:7;6954:137;;;;6482:616;;;;;:::o;4119:223:8:-;4252:12;4283:52;4305:6;4313:4;4319:1;4322:12;4283:21;:52::i;:::-;4276:59;;4119:223;;;;;;:::o;5176:446::-;5341:12;5398:5;5373:21;:30;;5365:81;;;;-1:-1:-1;;;5365:81:8;;;;;;;:::i;:::-;5457:12;5471:23;5498:6;-1:-1:-1;;;;;5498:11:8;5517:5;5524:4;5498:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5456:73;;;;5546:69;5573:6;5581:7;5590:10;5602:12;5546:26;:69::i;:::-;5539:76;;;;5176:446;;;;;;;:::o;7682:628::-;7862:12;7890:7;7886:418;;;7917:10;:17;7938:1;7917:22;7913:286;;-1:-1:-1;;;;;1713:19:8;;;8124:60;;;;-1:-1:-1;;;8124:60:8;;;;;;;:::i;:::-;-1:-1:-1;8219:10:8;8212:17;;7886:418;8260:33;8268:10;8280:12;8991:17;;:21;8987:379;;9219:10;9213:17;9275:15;9262:10;9258:2;9254:19;9247:44;8987:379;9342:12;9335:20;;-1:-1:-1;;;9335:20:8;;;;;;;;:::i;205:142:55:-;255:9;-1:-1:-1;;;;;73:54:55;;288:53;7:126;353;403:9;436:37;467:5;436:37;:::i;485:145::-;554:9;587:37;618:5;587:37;:::i;636:169::-;742:56;792:5;742:56;:::i;:::-;737:3;730:69;636:169;;:::o;811:260::-;961:2;946:18;;974:90;950:9;1037:6;974:90;:::i;1624:154::-;1713:40;1747:5;1713:40;:::i;:::-;1706:5;1703:51;1693:79;;1768:1;1765;1758:12;1784:171;1871:20;;1900:49;1871:20;1900:49;:::i;2044:122::-;2135:5;2117:24;139:60;2172:139;2243:20;;2272:33;2243:20;2272:33;:::i;2699:552::-;2756:8;2766:6;2816:3;2809:4;2801:6;2797:17;2793:27;2783:122;;2824:79;2426:1;2423;2416:12;2824:79;-1:-1:-1;2924:20:55;;2967:18;2956:30;;2953:117;;;2989:79;2549:1;2546;2539:12;2989:79;3103:4;3095:6;3091:17;3079:29;;3157:3;3149:4;3141:6;3137:17;3127:8;3123:32;3120:41;3117:128;;;3164:79;2672:1;2669;2662:12;3164:79;2699:552;;;;;:::o;3257:1319::-;3404:6;3412;3420;3428;3436;3444;3452;3501:3;3489:9;3480:7;3476:23;3472:33;3469:120;;;3508:79;1267:1;1264;1257:12;3508:79;3628:1;3653:69;3714:7;3694:9;3653:69;:::i;:::-;3643:79;;3599:133;3771:2;3797:69;3858:7;3849:6;3838:9;3834:22;3797:69;:::i;:::-;3787:79;;3742:134;3915:2;3941:53;3986:7;3977:6;3966:9;3962:22;3941:53;:::i;:::-;3931:63;;3886:118;4043:2;4069:53;4114:7;4105:6;4094:9;4090:22;4069:53;:::i;:::-;4059:63;;4014:118;4171:3;4198:53;4243:7;4234:6;4223:9;4219:22;4198:53;:::i;:::-;4188:63;;4142:119;4328:3;4317:9;4313:19;4300:33;4360:18;4352:6;4349:30;4346:117;;;4382:79;1390:1;1387;1380:12;4382:79;4495:64;4551:7;4542:6;4531:9;4527:22;4495:64;:::i;:::-;4477:82;;;;4271:298;3257:1319;;;;;;;;;;:::o;5159:::-;5306:6;5314;5322;5330;5338;5346;5354;5403:3;5391:9;5382:7;5378:23;5374:33;5371:120;;;5410:79;1267:1;1264;1257:12;5410:79;5530:1;5555:69;5616:7;5596:9;5555:69;:::i;:::-;5545:79;;5501:133;5673:2;5699:53;5744:7;5735:6;5724:9;5720:22;5699:53;:::i;:::-;5689:63;;5644:118;5801:2;5827:69;5888:7;5879:6;5868:9;5864:22;5827:69;:::i;6484:651::-;6577:6;6585;6593;6642:2;6630:9;6621:7;6617:23;6613:32;6610:119;;;6648:79;1267:1;1264;1257:12;6648:79;6768:1;6793:69;6854:7;6834:9;6793:69;:::i;:::-;6783:79;;6739:133;6911:2;6937:53;6982:7;6973:6;6962:9;6958:22;6937:53;:::i;:::-;6927:63;;6882:118;7039:2;7065:53;7110:7;7101:6;7090:9;7086:22;7065:53;:::i;:::-;7055:63;;7010:118;6484:651;;;;;:::o;7743:118::-;7830:24;7848:5;7830:24;:::i;7867:222::-;7998:2;7983:18;;8011:71;7987:9;8055:6;8011:71;:::i;8095:506::-;8179:6;8187;8236:2;8224:9;8215:7;8211:23;8207:32;8204:119;;;8242:79;1267:1;1264;1257:12;8242:79;8362:1;8387:69;8448:7;8428:9;8387:69;:::i;:::-;8377:79;;8333:133;8505:2;8531:53;8576:7;8567:6;8556:9;8552:22;8531:53;:::i;:::-;8521:63;;8476:118;8095:506;;;;;:::o;8607:122::-;8680:24;8698:5;8680:24;:::i;8735:139::-;8806:20;;8835:33;8806:20;8835:33;:::i;8880:329::-;8939:6;8988:2;8976:9;8967:7;8963:23;8959:32;8956:119;;;8994:79;1267:1;1264;1257:12;8994:79;9114:1;9139:53;9184:7;9164:9;9139:53;:::i;9241:584::-;9330:8;9340:6;9390:3;9383:4;9375:6;9371:17;9367:27;9357:122;;9398:79;2426:1;2423;2416:12;9398:79;-1:-1:-1;9498:20:55;;9541:18;9530:30;;9527:117;;;9563:79;2549:1;2546;2539:12;9563:79;9677:4;9669:6;9665:17;9653:29;;9731:3;9723:4;9715:6;9711:17;9701:8;9697:32;9694:41;9691:128;;;9738:79;2672:1;2669;2662:12;10422:1977;10634:6;10642;10650;10658;10666;10674;10682;10690;10698;10706;10755:3;10743:9;10734:7;10730:23;10726:33;10723:120;;;10762:79;1267:1;1264;1257:12;10762:79;10882:31;;10940:18;10929:30;;10926:117;;;10962:79;1390:1;1387;1380:12;10962:79;11075:96;11163:7;11154:6;11143:9;11139:22;11075:96;:::i;:::-;11057:114;;;;10853:328;11248:2;11237:9;11233:18;11220:32;11279:18;11271:6;11268:30;11265:117;;;11301:79;1390:1;1387;1380:12;11301:79;11414:80;11486:7;11477:6;11466:9;11462:22;11414:80;:::i;:::-;11396:98;;;;11191:313;11571:2;11560:9;11556:18;11543:32;11602:18;11594:6;11591:30;11588:117;;;11624:79;1390:1;1387;1380:12;11624:79;11737:80;11809:7;11800:6;11789:9;11785:22;11737:80;:::i;:::-;11719:98;;;;11514:313;11866:2;11892:53;11937:7;11928:6;11917:9;11913:22;11892:53;:::i;:::-;11882:63;;11837:118;11994:3;12021:53;12066:7;12057:6;12046:9;12042:22;12021:53;:::i;:::-;12011:63;;11965:119;12151:3;12140:9;12136:19;12123:33;12183:18;12175:6;12172:30;12169:117;;;12205:79;1390:1;1387;1380:12;12205:79;12318:64;12374:7;12365:6;12354:9;12350:22;12318:64;:::i;:::-;12300:82;;;;12094:298;10422:1977;;;;;;;;;;;;;:::o;12501:109::-;12475:13;;12468:21;12582;12405:90;13064:108;13159:5;13141:24;139:60;13178:179;13247:10;13268:46;13310:3;13302:6;13268:46;:::i;:::-;-1:-1:-1;;13346:4:55;13337:14;;13178:179::o;13512:732::-;13631:3;13660:54;13708:5;12711:12;;12616:114;13660:54;12857:19;;;12909:4;12900:14;;;;13037;;;13950:1;13935:284;13960:6;13957:1;13954:13;13935:284;;;14036:6;14030:13;14063:63;14122:3;14107:13;14063:63;:::i;:::-;14056:70;-1:-1:-1;13465:4:55;13456:14;;14139:70;-1:-1:-1;;13982:1:55;13975:9;13935:284;;;-1:-1:-1;14235:3:55;;13512:732;-1:-1:-1;;;;;13512:732:55:o;14250:471::-;14453:2;14438:18;;14466:65;14442:9;14504:6;14466:65;:::i;:::-;14578:9;14572:4;14568:20;14563:2;14552:9;14548:18;14541:48;14606:108;14709:4;14700:6;14606:108;:::i;14727:180::-;-1:-1:-1;;;14772:1:55;14765:88;14872:4;14869:1;14862:15;14896:4;14893:1;14886:15;15099:180;-1:-1:-1;;;15144:1:55;15137:88;15244:4;15241:1;15234:15;15268:4;15265:1;15258:15;16182:211;16267:10;16288:62;16346:3;16338:6;16288:62;:::i;16573:812::-;16708:3;16737:70;16801:5;12711:12;;12616:114;16737:70;12857:19;;;12909:4;12900:14;;;;13037;;;17059:1;17044:316;17069:6;17066:1;17063:13;17044:316;;;17145:6;17139:13;17172:79;17247:3;17232:13;17172:79;:::i;:::-;17165:86;-1:-1:-1;13465:4:55;13456:14;;17264:86;-1:-1:-1;;17091:1:55;17084:9;17044:316;;17565:148;17663:6;17658:3;17653;17640:30;-1:-1:-1;17704:1:55;17686:16;;17679:27;17565:148::o;17849:314::-;12857:19;;;17945:3;12909:4;12900:14;;17959:77;;18046:56;18095:6;18090:3;18083:5;18046:56;:::i;:::-;-1:-1:-1;;17811:2:55;17791:14;;17787:28;18127:29;18118:39;;;;17849:314;-1:-1:-1;;;17849:314:55:o;18169:1169::-;18588:3;18573:19;;18602:87;18577:9;18662:6;18602:87;:::i;:::-;18699:88;18783:2;18772:9;18768:18;18759:6;18699:88;:::i;:::-;18834:9;18828:4;18824:20;18819:2;18808:9;18804:18;18797:48;18862:124;18981:4;18972:6;18862:124;:::i;:::-;18854:132;;19033:9;19027:4;19023:20;19018:2;19007:9;19003:18;18996:48;19061:108;19164:4;19155:6;19061:108;:::i;:::-;19053:116;;19217:9;19211:4;19207:20;19201:3;19190:9;19186:19;19179:49;19245:86;19326:4;19317:6;19309;19245:86;:::i;19468:332::-;19627:2;19612:18;;19640:71;19616:9;19684:6;19640:71;:::i;:::-;19721:72;19789:2;19778:9;19774:18;19765:6;19721:72;:::i;20294:1257::-;20757:3;20742:19;;20771:87;20746:9;20831:6;20771:87;:::i;:::-;20868:88;20952:2;20941:9;20937:18;20928:6;20868:88;:::i;:::-;21003:9;20997:4;20993:20;20988:2;20977:9;20973:18;20966:48;21031:124;21150:4;21141:6;21031:124;:::i;:::-;21023:132;;21202:9;21196:4;21192:20;21187:2;21176:9;21172:18;21165:48;21230:108;21333:4;21324:6;21230:108;:::i;:::-;21376:20;;;21370:3;21355:19;;21348:49;20067:3;12857:19;;21222:116;-1:-1:-1;12909:4:55;12900:14;;21406:138;20294:1257;-1:-1:-1;;;;;;20294:1257:55:o;21966:366::-;22193:2;12857:19;;22108:3;12909:4;12900:14;;21872:34;21849:58;;-1:-1:-1;;;21936:2:55;21924:15;;21917:36;22122:74;-1:-1:-1;22205:93:55;-1:-1:-1;22323:2:55;22314:12;;21966:366::o;22338:419::-;22542:2;22555:47;;;22527:18;;22619:131;22527:18;22619:131;:::i;23002:366::-;23229:2;12857:19;;23144:3;12909:4;12900:14;;22903:34;22880:58;;-1:-1:-1;;;22967:2:55;22955:15;;22948:41;23158:74;-1:-1:-1;23241:93:55;22763:233;23374:419;23578:2;23591:47;;;23563:18;;23655:131;23563:18;23655:131;:::i;23982:154::-;24038:9;23965:4;23954:16;;24071:59;23890:86;24142:143;24235:43;24272:5;24235:43;:::i;24291:234::-;24428:2;24413:18;;24441:77;24417:9;24491:6;24441:77;:::i;24531:222::-;24662:2;24647:18;;24675:71;24651:9;24719:6;24675:71;:::i;24759:361::-;24834:6;24883:2;24871:9;24862:7;24858:23;24854:32;24851:119;;;24889:79;1267:1;1264;1257:12;24889:79;25009:1;25034:69;25095:7;25075:9;25034:69;:::i;25126:116::-;12475:13;;12468:21;25196;12405:90;25248:137;25327:13;;25349:30;25327:13;25349:30;:::i;25391:143::-;25473:13;;25495:33;25473:13;25495:33;:::i;25540:651::-;25622:6;25630;25638;25687:2;25675:9;25666:7;25662:23;25658:32;25655:119;;;25693:79;1267:1;1264;1257:12;25693:79;25813:1;25838:61;25891:7;25871:9;25838:61;:::i;:::-;25828:71;;25784:125;25948:2;25974:64;26030:7;26021:6;26010:9;26006:22;25974:64;:::i;:::-;25964:74;;25919:129;26087:2;26113:61;26166:7;26157:6;26146:9;26142:22;26113:61;:::i;26197:332::-;26356:2;26341:18;;26369:71;26345:9;26413:6;26369:71;:::i;:::-;26450:72;26518:2;26507:9;26503:18;26494:6;26450:72;:::i;26535:345::-;26602:6;26651:2;26639:9;26630:7;26626:23;26622:32;26619:119;;;26657:79;1267:1;1264;1257:12;26657:79;26777:1;26802:61;26855:7;26835:9;26802:61;:::i;26886:351::-;26956:6;27005:2;26993:9;26984:7;26980:23;26976:32;26973:119;;;27011:79;1267:1;1264;1257:12;27011:79;27131:1;27156:64;27212:7;27192:9;27156:64;:::i;27243:364::-;27418:2;27403:18;;27431:71;27407:9;27475:6;27431:71;:::i;:::-;27512:88;27596:2;27585:9;27581:18;27572:6;27512:88;:::i;27613:663::-;27701:6;27709;27717;27766:2;27754:9;27745:7;27741:23;27737:32;27734:119;;;27772:79;1267:1;1264;1257:12;27772:79;27892:1;27917:64;27973:7;27953:9;27917:64;:::i;:::-;27907:74;;27863:128;28030:2;28056:64;28112:7;28103:6;28092:9;28088:22;28056:64;:::i;:::-;28046:74;;28001:129;28169:2;28195:64;28251:7;28242:6;28231:9;28227:22;28195:64;:::i;28282:143::-;28364:13;;28386:33;28364:13;28386:33;:::i;28431:351::-;28501:6;28550:2;28538:9;28529:7;28525:23;28521:32;28518:119;;;28556:79;1267:1;1264;1257:12;28556:79;28676:1;28701:64;28757:7;28737:9;28701:64;:::i;28976:366::-;29203:2;12857:19;;;28928:34;12900:14;;28905:58;;;29118:3;29215:93;-1:-1:-1;29333:2:55;29324:12;;28976:366::o;29348:419::-;29552:2;29565:47;;;29537:18;;29629:131;29537:18;29629:131;:::i;30009:366::-;30236:2;12857:19;;30151:3;12909:4;12900:14;;29913:34;29890:58;;-1:-1:-1;;;29977:2:55;29965:15;;29958:38;30165:74;-1:-1:-1;30248:93:55;29773:230;30381:419;30585:2;30598:47;;;30570:18;;30662:131;30570:18;30662:131;:::i;30993:366::-;31220:2;12857:19;;31135:3;12909:4;12900:14;;30946:33;30923:57;;31149:74;-1:-1:-1;31232:93:55;30806:181;31365:419;31569:2;31582:47;;;31554:18;;31646:131;31554:18;31646:131;:::i;31790:180::-;-1:-1:-1;;;31835:1:55;31828:88;31935:4;31932:1;31925:15;31959:4;31956:1;31949:15;31976:191;32105:9;;;32127:10;;;32124:36;;;32140:18;;:::i;32173:332::-;32332:2;32317:18;;32345:71;32321:9;32389:6;32345:71;:::i;32511:194::-;32642:9;;;32664:11;;;32661:37;;;32678:18;;:::i;32711:410::-;32856:9;;;;33018;;33051:15;;;33045:22;;32998:83;32975:139;;33094:18;;:::i;:::-;32759:362;32711:410;;;;:::o;33127:180::-;-1:-1:-1;;;33172:1:55;33165:88;33272:4;33269:1;33262:15;33296:4;33293:1;33286:15;33313:185;33353:1;33443;33433:35;;33448:18;;:::i;:::-;-1:-1:-1;33483:9:55;;33313:185::o;33504:442::-;33691:2;33676:18;;33704:71;33680:9;33748:6;33704:71;:::i;:::-;33785:72;33853:2;33842:9;33838:18;33829:6;33785:72;:::i;:::-;33867;33935:2;33924:9;33920:18;33911:6;33867:72;:::i;34352:344::-;34517:2;34502:18;;34530:71;34506:9;34574:6;34530:71;:::i;:::-;34611:78;34685:2;34674:9;34670:18;34661:6;34611:78;:::i;34877:327::-;34991:3;35110:56;35159:6;35154:3;35147:5;35110:56;:::i;:::-;-1:-1:-1;;35182:16:55;;34877:327::o;35210:291::-;35350:3;35372:103;35471:3;35462:6;35454;35372:103;:::i;35742:366::-;35969:2;12857:19;;35884:3;12909:4;12900:14;;35647:34;35624:58;;-1:-1:-1;;;35711:2:55;35699:15;;35692:37;35898:74;-1:-1:-1;35981:93:55;35507:229;36114:419;36318:2;36331:47;;;36303:18;;36395:131;36303:18;36395:131;:::i;36643:139::-;36732:6;36727:3;36722;36716:23;-1:-1:-1;36773:1:55;36755:16;;36748:27;36643:139::o;36788:386::-;36892:3;36920:38;36952:5;12711:12;;12616:114;36920:38;37071:65;37129:6;37124:3;37117:4;37110:5;37106:16;37071:65;:::i;:::-;37152:16;;;;;36788:386;-1:-1:-1;;36788:386:55:o;37180:271::-;37310:3;37332:93;37421:3;37412:6;37332:93;:::i;37688:366::-;37915:2;12857:19;;37830:3;12909:4;12900:14;;37597:34;37574:58;;-1:-1:-1;;;37661:2:55;37649:15;;37642:33;37844:74;-1:-1:-1;37927:93:55;37457:225;38060:419;38264:2;38277:47;;;38249:18;;38341:131;38249:18;38341:131;:::i;38670:366::-;38897:2;12857:19;;38812:3;12909:4;12900:14;;38625:31;38602:55;;38826:74;-1:-1:-1;38909:93:55;38485:179;39042:419;39246:2;39259:47;;;39231:18;;39323:131;39231:18;39323:131;:::i;39572:377::-;39660:3;39688:39;39721:5;12711:12;;12616:114;39688:39;12857:19;;;12909:4;12900:14;;39736:78;;39823:65;39881:6;39876:3;39869:4;39862:5;39858:16;39823:65;:::i;:::-;-1:-1:-1;;17811:2:55;17791:14;;17787:28;39913:29;17719:102;39955:313;40106:2;40119:47;;;40091:18;;40183:78;40091:18;40247:6;40183:78;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"2933000","executionCost":"infinite","totalCost":"infinite"},"external":{"COMPTROLLER()":"infinite","acceptOwnership()":"infinite","enterLeverage(address,uint256,address,uint256,uint256,bytes)":"infinite","enterLeverageFromBorrow(address,address,uint256,uint256,uint256,bytes)":"infinite","enterSingleAssetLeverage(address,uint256,uint256)":"infinite","executeOperation(address[],uint256[],uint256[],address,address,bytes)":"infinite","exitLeverage(address,uint256,address,uint256,uint256,bytes)":"infinite","exitSingleAssetLeverage(address,uint256)":"infinite","initialize()":"infinite","owner()":"infinite","pendingOwner()":"infinite","renounceOwnership()":"infinite","swapHelper()":"infinite","transferOwnership(address)":"infinite","vBNB()":"infinite"},"internal":{"_accrueInterest(contract IVToken)":"infinite","_borrowAndRepayFlashLoanFee(address,contract IVToken,contract IERC20Upgradeable,uint256)":"infinite","_checkAccountSafe(address)":"infinite","_checkMarketSupported(contract IVToken)":"infinite","_checkUserDelegated()":"infinite","_handleEnterBorrow(address,contract IVToken,uint256,uint256,bytes calldata)":"infinite","_handleEnterCollateral(address,contract IVToken,uint256,uint256,bytes calldata)":"infinite","_handleEnterSingleAsset(address,contract IVToken,uint256,uint256)":"infinite","_handleExitCollateral(address,contract IVToken,uint256,uint256,bytes calldata)":"infinite","_handleExitSingleAsset(address,contract IVToken,uint256,uint256)":"infinite","_performSwap(contract IERC20Upgradeable,uint256,contract IERC20Upgradeable,uint256,bytes calldata)":"infinite","_transferDustToInitiator(contract IVToken)":"infinite","_transferSeedAmountFromUser(contract IVToken,address,uint256)":"infinite","_validateAndEnterMarket(address,contract IVToken)":"infinite"}},"methodIdentifiers":{"COMPTROLLER()":"5f82c67e","acceptOwnership()":"79ba5097","enterLeverage(address,uint256,address,uint256,uint256,bytes)":"3a8f8c43","enterLeverageFromBorrow(address,address,uint256,uint256,uint256,bytes)":"13424801","enterSingleAssetLeverage(address,uint256,uint256)":"3c3a2c21","executeOperation(address[],uint256[],uint256[],address,address,bytes)":"fc08f9f6","exitLeverage(address,uint256,address,uint256,uint256,bytes)":"c78befbe","exitSingleAssetLeverage(address,uint256)":"c6cd25f6","initialize()":"8129fc1c","owner()":"8da5cb5b","pendingOwner()":"e30c3978","renounceOwnership()":"715018a6","swapHelper()":"0fc6a11c","transferOwnership(address)":"f2fde38b","vBNB()":"33e1567f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IComptroller\",\"name\":\"_comptroller\",\"type\":\"address\"},{\"internalType\":\"contract SwapHelper\",\"name\":\"_swapHelper\",\"type\":\"address\"},{\"internalType\":\"contract IVToken\",\"name\":\"_vBNB\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"errorCode\",\"type\":\"uint256\"}],\"name\":\"AccrueInterestFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"errorCode\",\"type\":\"uint256\"}],\"name\":\"BorrowBehalfFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"err\",\"type\":\"uint256\"}],\"name\":\"EnterMarketFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FlashLoanAssetOrAmountMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IdenticalMarkets\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InitiatorMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientFundsToRepayFlashloan\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidExecuteOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"market\",\"type\":\"address\"}],\"name\":\"MarketNotListed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"errorCode\",\"type\":\"uint256\"}],\"name\":\"MintBehalfFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAnApprovedDelegate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnBehalfMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"errorCode\",\"type\":\"uint256\"}],\"name\":\"OperationCausesLiquidation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"errorCode\",\"type\":\"uint256\"}],\"name\":\"RedeemBehalfFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"errorCode\",\"type\":\"uint256\"}],\"name\":\"RepayBehalfFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SlippageExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenSwapCallFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnauthorizedExecutor\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VBNBNotSupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroFlashLoanAmount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"DustTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IVToken\",\"name\":\"collateralMarket\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"collateralAmountSeed\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"contract IVToken\",\"name\":\"borrowedMarket\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowedAmountToFlashLoan\",\"type\":\"uint256\"}],\"name\":\"LeverageEntered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IVToken\",\"name\":\"collateralMarket\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IVToken\",\"name\":\"borrowedMarket\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowedAmountSeed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowedAmountToFlashLoan\",\"type\":\"uint256\"}],\"name\":\"LeverageEnteredFromBorrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IVToken\",\"name\":\"collateralMarket\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"collateralAmountToRedeemForSwap\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"contract IVToken\",\"name\":\"borrowedMarket\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowedAmountToFlashLoan\",\"type\":\"uint256\"}],\"name\":\"LeverageExited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IVToken\",\"name\":\"collateralMarket\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"collateralAmountSeed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"collateralAmountToFlashLoan\",\"type\":\"uint256\"}],\"name\":\"SingleAssetLeverageEntered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IVToken\",\"name\":\"collateralMarket\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"collateralAmountToFlashLoan\",\"type\":\"uint256\"}],\"name\":\"SingleAssetLeverageExited\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"COMPTROLLER\",\"outputs\":[{\"internalType\":\"contract IComptroller\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IVToken\",\"name\":\"_collateralMarket\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_collateralAmountSeed\",\"type\":\"uint256\"},{\"internalType\":\"contract IVToken\",\"name\":\"_borrowedMarket\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_borrowedAmountToFlashLoan\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minAmountOutAfterSwap\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_swapData\",\"type\":\"bytes\"}],\"name\":\"enterLeverage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IVToken\",\"name\":\"_collateralMarket\",\"type\":\"address\"},{\"internalType\":\"contract IVToken\",\"name\":\"_borrowedMarket\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_borrowedAmountSeed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_borrowedAmountToFlashLoan\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minAmountOutAfterSwap\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_swapData\",\"type\":\"bytes\"}],\"name\":\"enterLeverageFromBorrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IVToken\",\"name\":\"_collateralMarket\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_collateralAmountSeed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_collateralAmountToFlashLoan\",\"type\":\"uint256\"}],\"name\":\"enterSingleAssetLeverage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IVToken[]\",\"name\":\"vTokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"premiums\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"onBehalf\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"param\",\"type\":\"bytes\"}],\"name\":\"executeOperation\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"uint256[]\",\"name\":\"repayAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IVToken\",\"name\":\"_collateralMarket\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_collateralAmountToRedeemForSwap\",\"type\":\"uint256\"},{\"internalType\":\"contract IVToken\",\"name\":\"_borrowedMarket\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_borrowedAmountToFlashLoan\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minAmountOutAfterSwap\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_swapData\",\"type\":\"bytes\"}],\"name\":\"exitLeverage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IVToken\",\"name\":\"_collateralMarket\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_collateralAmountToFlashLoan\",\"type\":\"uint256\"}],\"name\":\"exitSingleAssetLeverage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"swapHelper\",\"outputs\":[{\"internalType\":\"contract SwapHelper\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vBNB\",\"outputs\":[{\"internalType\":\"contract IVToken\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus Protocol\",\"errors\":{\"AccrueInterestFailed(uint256)\":[{\"custom:error\":\"AccrueInterestFailed accrueInterest on a vToken market returned a non-zero error code\"}],\"BorrowBehalfFailed(uint256)\":[{\"custom:error\":\"BorrowBehalfFailed borrowBehalf on a vToken market returned a non-zero error code\"}],\"EnterMarketFailed(uint256)\":[{\"custom:error\":\"EnterMarketFailed Comptroller.enterMarketBehalf returned a non-zero error code\"}],\"FlashLoanAssetOrAmountMismatch()\":[{\"custom:error\":\"FlashLoanAssetOrAmountMismatch Invalid flash loan arrays length or >1 elements\"}],\"IdenticalMarkets()\":[{\"custom:error\":\"IdenticalMarkets Collateral and borrow markets cannot be the same\"}],\"InitiatorMismatch()\":[{\"custom:error\":\"InitiatorMismatch Invalid initiator address in flash loan callback\"}],\"InsufficientFundsToRepayFlashloan()\":[{\"custom:error\":\"InsufficientFundsToRepayFlashloan Not enough proceeds to repay flash loan plus fees\"}],\"InvalidExecuteOperation()\":[{\"custom:error\":\"InvalidExecuteOperation Unknown operation type in flash loan callback\"}],\"MarketNotListed(address)\":[{\"custom:error\":\"MarketNotListed Provided vToken market is not listed in Comptroller\"}],\"MintBehalfFailed(uint256)\":[{\"custom:error\":\"MintBehalfFailed mintBehalf on a vToken market returned a non-zero error code\"}],\"NotAnApprovedDelegate()\":[{\"custom:error\":\"NotAnApprovedDelegate User has not approved this contract as a delegate\"}],\"OnBehalfMismatch()\":[{\"custom:error\":\"OnBehalfMismatch Invalid onBehalf address in flash loan callback\"}],\"OperationCausesLiquidation(uint256)\":[{\"custom:error\":\"OperationCausesLiquidation Operation would put the account at risk (undercollateralized) returns a non-zero error code from getBorrowingPower\"}],\"RedeemBehalfFailed(uint256)\":[{\"custom:error\":\"RedeemBehalfFailed redeemBehalf on a vToken market returned a non-zero error code\"}],\"RepayBehalfFailed(uint256)\":[{\"custom:error\":\"RepayBehalfFailed repayBehalf on a vToken market returned a non-zero error code\"}],\"SlippageExceeded()\":[{\"custom:error\":\"SlippageExceeded Swap output lower than required minimum\"}],\"TokenSwapCallFailed()\":[{\"custom:error\":\"TokenSwapCallFailed Swap helper call reverted or returned false\"}],\"UnauthorizedExecutor()\":[{\"custom:error\":\"UnauthorizedExecutor Caller is not the expected Comptroller\"}],\"VBNBNotSupported()\":[{\"custom:error\":\"VBNBNotSupported vBNB market is not supported for leverage operations\"}],\"ZeroAddress()\":[{\"custom:error\":\"ZeroAddress One of the required addresses is zero\"}],\"ZeroFlashLoanAmount()\":[{\"custom:error\":\"ZeroFlashLoanAmount Flash loan amount cannot be zero\"}]},\"events\":{\"DustTransferred(address,address,uint256)\":{\"params\":{\"amount\":\"The amount of dust transferred\",\"recipient\":\"The address receiving the dust (user or protocol share reserve)\",\"token\":\"The underlying token address\"}},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"LeverageEntered(address,address,uint256,address,uint256)\":{\"params\":{\"borrowedAmountToFlashLoan\":\"The amount being flash loaned\",\"borrowedMarket\":\"The vToken market being borrowed from\",\"collateralAmountSeed\":\"The initial collateral amount provided by the user\",\"collateralMarket\":\"The vToken market used as collateral\",\"user\":\"The address of the user entering the position\"}},\"LeverageEnteredFromBorrow(address,address,address,uint256,uint256)\":{\"params\":{\"borrowedAmountSeed\":\"The initial borrowed asset amount provided by the user\",\"borrowedAmountToFlashLoan\":\"The amount being flash loaned\",\"borrowedMarket\":\"The vToken market being borrowed from\",\"collateralMarket\":\"The vToken market used as collateral\",\"user\":\"The address of the user entering the position\"}},\"LeverageExited(address,address,uint256,address,uint256)\":{\"params\":{\"borrowedAmountToFlashLoan\":\"The amount being flash loaned\",\"borrowedMarket\":\"The vToken market being repaid\",\"collateralAmountToRedeemForSwap\":\"The amount of collateral being redeemed for swap\",\"collateralMarket\":\"The vToken market being redeemed\",\"user\":\"The address of the user exiting the position\"}},\"SingleAssetLeverageEntered(address,address,uint256,uint256)\":{\"params\":{\"collateralAmountSeed\":\"The initial collateral amount provided by the user\",\"collateralAmountToFlashLoan\":\"The amount being flash loaned\",\"collateralMarket\":\"The vToken market used as collateral\",\"user\":\"The address of the user entering the position\"}},\"SingleAssetLeverageExited(address,address,uint256)\":{\"params\":{\"collateralAmountToFlashLoan\":\"The amount being flash loaned\",\"collateralMarket\":\"The vToken market used for both collateral and borrowed asset\",\"user\":\"The address of the user exiting the position\"}}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\",\"details\":\"Sets immutable variables and disables initializers for the implementation contract\",\"params\":{\"_comptroller\":\"The Venus comptroller contract address\",\"_swapHelper\":\"The swap helper contract address\",\"_vBNB\":\"The vBNB market address (not supported for leverage operations)\"}},\"enterLeverage(address,uint256,address,uint256,uint256,bytes)\":{\"details\":\"This function uses flash loans to borrow assets, swaps them for collateral tokens,      and supplies the collateral to the Venus protocol to amplify the user's position.      The user must have delegated permission to this contract via the comptroller.      Any remaining dust (both collateral and borrowed assets) after the operation is returned to the user.\",\"params\":{\"borrowedAmountToFlashLoan\":\"The amount to borrow via flash loan for leverage\",\"borrowedMarket\":\"The vToken market from which assets will be borrowed via flash loan (must not be vBNB)\",\"collateralAmountSeed\":\"The initial amount of collateral the user provides (can be 0)\",\"collateralMarket\":\"The vToken market where collateral will be supplied (must not be vBNB)\",\"minAmountOutAfterSwap\":\"The minimum amount of collateral expected after swap (for slippage protection)\",\"swapData\":\"Bytes containing swap instructions for converting borrowed assets to collateral\"}},\"enterLeverageFromBorrow(address,address,uint256,uint256,uint256,bytes)\":{\"details\":\"This function uses flash loans to borrow additional assets, swaps the total borrowed amount      for collateral tokens, and supplies the collateral to the Venus protocol to amplify the user's position.      The user must have delegated permission to this contract via the comptroller.      Any remaining dust (both collateral and borrowed assets) after the operation is returned to the user.\",\"params\":{\"borrowedAmountSeed\":\"The initial amount of borrowed assets the user provides (can be 0)\",\"borrowedAmountToFlashLoan\":\"The additional amount to borrow via flash loan for leverage\",\"borrowedMarket\":\"The vToken market from which assets will be borrowed via flash loan (must not be vBNB)\",\"collateralMarket\":\"The vToken market where collateral will be supplied (must not be vBNB)\",\"minAmountOutAfterSwap\":\"The minimum amount of collateral expected after swap (for slippage protection)\",\"swapData\":\"Bytes containing swap instructions for converting borrowed assets to collateral\"}},\"enterSingleAssetLeverage(address,uint256,uint256)\":{\"details\":\"This function flash loans additional collateral assets, amplifying the user's supplied collateral      in the Venus protocol. The user must have delegated permission to this contract via the comptroller.      Any remaining collateral dust after the operation is returned to the user.\",\"params\":{\"collateralAmountSeed\":\"The initial amount of collateral the user provides (can be 0)\",\"collateralAmountToFlashLoan\":\"The amount to borrow via flash loan for leverage\",\"collateralMarket\":\"The vToken market where collateral will be supplied (must not be vBNB)\"}},\"executeOperation(address[],uint256[],uint256[],address,address,bytes)\":{\"custom:error\":\"InitiatorMismatch When initiator is not this contractOnBehalfMismatch When onBehalf is not the operation initiatorUnauthorizedExecutor When caller is not the ComptrollerFlashLoanAssetOrAmountMismatch When array lengths mismatch or > 1 elementInvalidExecuteOperation When operation type is unknown\",\"details\":\"Protected by nonReentrant modifier to prevent reentrancy attacks during flash loan execution\",\"params\":{\"amounts\":\"Array with the borrowed underlying amount (single element)\",\"initiator\":\"The address that initiated the flash loan (must be this contract)\",\"onBehalf\":\"The user for whom debt will be opened\",\"param\":\"Encoded auxiliary data for the operation (e.g., swap multicall)\",\"premiums\":\"Array with the flash loan fee amount (single element)\",\"vTokens\":\"Array with the borrowed vToken market (single element)\"},\"returns\":{\"repayAmounts\":\"Amounts to approve for flash loan repayment\",\"success\":\"Whether the execution succeeded\"}},\"exitLeverage(address,uint256,address,uint256,uint256,bytes)\":{\"details\":\"This function uses flash loans to temporarily repay debt, redeems collateral,      swaps collateral for borrowed assets, and repays the flash loan. Any remaining      dust (both collateral and borrowed assets) is returned to the user. This ensures      users who swap more than required as protection against price volatility receive      their excess tokens back.      The flash loan amount can exceed actual debt to account for interest accrual      between transaction creation and mining. The contract caps repayment to actual      debt and uses leftover funds toward flash loan repayment.      NOTE: No pre-operation safety check is performed because exiting leverage reduces      debt exposure, which can only improve account health. Post-operation safety is      still validated to ensure the final position is healthy.      IMPORTANT: If treasuryPercent() is nonzero, the user must provide a      collateralAmountToRedeemForSwap that accounts for the treasury fee. Only      (1 - treasuryPercent/1e18) of the redeemed amount is transferred to this contract.      Required gross amount = netAmountNeeded * 1e18 / (1e18 - treasuryPercent)\",\"params\":{\"borrowedAmountToFlashLoan\":\"The amount to borrow via flash loan for debt repayment (can exceed actual debt)\",\"borrowedMarket\":\"The vToken market where debt will be repaid via flash loan (must not be vBNB)\",\"collateralAmountToRedeemForSwap\":\"The gross amount of collateral to redeem (must account for treasury fee if nonzero)\",\"collateralMarket\":\"The vToken market from which collateral will be redeemed (must not be vBNB)\",\"minAmountOutAfterSwap\":\"The minimum amount of borrowed asset expected after swap (for slippage protection)\",\"swapData\":\"Bytes containing swap instructions for converting collateral to borrowed assets\"}},\"exitSingleAssetLeverage(address,uint256)\":{\"details\":\"This function uses flash loans to temporarily repay debt, redeems collateral,      and repays the flash loan without requiring token swaps. This is more gas-efficient      than exitLeverage when dealing with single-asset positions. Any remaining collateral      dust after the operation is returned to the user.      The flash loan amount can exceed actual debt to account for interest accrual      between transaction creation and mining. The contract caps repayment to actual      debt and uses leftover funds toward flash loan repayment.      If treasuryPercent() is nonzero, the contract automatically adjusts the redeem      amount to ensure sufficient funds are received to repay the flash loan after the      treasury fee deduction.      NOTE: No pre-operation safety check is performed because exiting leverage reduces      debt exposure, which can only improve account health. Post-operation safety is      still validated to ensure the final position is healthy.\",\"params\":{\"collateralAmountToFlashLoan\":\"The amount to borrow via flash loan for debt repayment (can exceed actual debt)\",\"collateralMarket\":\"The vToken market for both collateral and borrowed asset (must not be vBNB)\"}},\"initialize()\":{\"details\":\"Sets up the Ownable2Step functionality. Can only be called once.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.\"}},\"stateVariables\":{\"MANTISSA_ONE\":{\"details\":\"Mantissa for fixed-point arithmetic (1e18 = 100%)\"},\"SUCCESS\":{\"details\":\"Success return value for VToken operations (mint, borrow, repay, redeem)\"},\"borrowedAmountSeed\":{\"details\":\"Transient (EIP-1153): Cleared at transaction end. Stores borrowed amount seed for enterLeverageFromBorrow.\"},\"collateralAmount\":{\"details\":\"Transient (EIP-1153): Cleared at transaction end. Stores collateral seed (enter) or redeem amount (exit).\"},\"collateralMarket\":{\"details\":\"Transient (EIP-1153): Cleared at transaction end. Stores collateral market for flash loan callback.\"},\"minAmountOutAfterSwap\":{\"details\":\"Transient (EIP-1153): Cleared at transaction end. Stores minimum expected output after swap.\"},\"operationInitiator\":{\"details\":\"Transient (EIP-1153): Cleared at transaction end. Stores msg.sender for flash loan callback context.\"},\"operationType\":{\"details\":\"Transient (EIP-1153): Cleared at transaction end. Tracks operation type during flash loan callback.\"}},\"title\":\"LeverageStrategiesManager\",\"version\":1},\"userdoc\":{\"events\":{\"DustTransferred(address,address,uint256)\":{\"notice\":\"Emitted when dust amounts are transferred after a leverage operation\"},\"LeverageEntered(address,address,uint256,address,uint256)\":{\"notice\":\"Emitted when a user enters a leveraged position with collateral seed\"},\"LeverageEnteredFromBorrow(address,address,address,uint256,uint256)\":{\"notice\":\"Emitted when a user enters a leveraged position with borrowed asset seed\"},\"LeverageExited(address,address,uint256,address,uint256)\":{\"notice\":\"Emitted when a user exits a leveraged position\"},\"SingleAssetLeverageEntered(address,address,uint256,uint256)\":{\"notice\":\"Emitted when a user enters a leveraged position with single collateral asset\"},\"SingleAssetLeverageExited(address,address,uint256)\":{\"notice\":\"Emitted when a user exits a leveraged position with single collateral asset\"}},\"kind\":\"user\",\"methods\":{\"COMPTROLLER()\":{\"notice\":\"The Venus comptroller contract for market interactions and flash loans execution\"},\"constructor\":{\"notice\":\"Contract constructor\"},\"enterLeverage(address,uint256,address,uint256,uint256,bytes)\":{\"notice\":\"Enters a leveraged position by borrowing assets and converting them to collateral\"},\"enterLeverageFromBorrow(address,address,uint256,uint256,uint256,bytes)\":{\"notice\":\"Enters a leveraged position by using existing borrowed assets and converting them to collateral\"},\"enterSingleAssetLeverage(address,uint256,uint256)\":{\"notice\":\"Enters a leveraged position using only collateral provided by the user\"},\"executeOperation(address[],uint256[],uint256[],address,address,bytes)\":{\"notice\":\"Flash loan callback entrypoint called by Comptroller\"},\"exitLeverage(address,uint256,address,uint256,uint256,bytes)\":{\"notice\":\"Exits a leveraged position by redeeming collateral and repaying borrowed assets\"},\"exitSingleAssetLeverage(address,uint256)\":{\"notice\":\"Exits a leveraged position when collateral and borrowed assets are the same token\"},\"initialize()\":{\"notice\":\"Initializes the contract\"},\"swapHelper()\":{\"notice\":\"The swap helper contract for executing token swaps during leverage operations\"},\"vBNB()\":{\"notice\":\"The vBNB market address (not supported for leverage operations)\"}},\"notice\":\"Contract for managing leveraged positions using flash loans and token swaps\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/LeverageManager/LeverageStrategiesManager.sol\":\"LeverageStrategiesManager\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable2Step.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./OwnableUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides 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} and {acceptOwnership}.\\n *\\n * This module is used through inheritance. It will make available all functions\\n * from parent (Ownable).\\n */\\nabstract contract Ownable2StepUpgradeable is Initializable, OwnableUpgradeable {\\n    address private _pendingOwner;\\n\\n    event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner);\\n\\n    function __Ownable2Step_init() internal onlyInitializing {\\n        __Ownable_init_unchained();\\n    }\\n\\n    function __Ownable2Step_init_unchained() internal onlyInitializing {\\n    }\\n    /**\\n     * @dev Returns the address of the pending owner.\\n     */\\n    function pendingOwner() public view virtual returns (address) {\\n        return _pendingOwner;\\n    }\\n\\n    /**\\n     * @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual override onlyOwner {\\n        _pendingOwner = newOwner;\\n        emit OwnershipTransferStarted(owner(), newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual override {\\n        delete _pendingOwner;\\n        super._transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev The new owner accepts the ownership transfer.\\n     */\\n    function acceptOwnership() public virtual {\\n        address sender = _msgSender();\\n        require(pendingOwner() == sender, \\\"Ownable2Step: caller is not the new owner\\\");\\n        _transferOwnership(sender);\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x9140dabc466abab21b48b72dbda26736b1183a310d0e677d3719d201df026510\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/ContextUpgradeable.sol\\\";\\nimport {Initializable} from \\\"../proxy/utils/Initializable.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 OwnableUpgradeable is Initializable, ContextUpgradeable {\\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    function __Ownable_init() internal onlyInitializing {\\n        __Ownable_init_unchained();\\n    }\\n\\n    function __Ownable_init_unchained() internal onlyInitializing {\\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. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        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    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x359a1ab89b46b9aba7bcad3fb651924baf4893d15153049b9976b0fc9be1358e\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n *     function initialize() initializer public {\\n *         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n *     }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n *     function initializeV2() reinitializer(2) public {\\n *         __ERC20Permit_init(\\\"MyToken\\\");\\n *     }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n *     _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n    /**\\n     * @dev Indicates that the contract has been initialized.\\n     * @custom:oz-retyped-from bool\\n     */\\n    uint8 private _initialized;\\n\\n    /**\\n     * @dev Indicates that the contract is in the process of being initialized.\\n     */\\n    bool private _initializing;\\n\\n    /**\\n     * @dev Triggered when the contract has been initialized or reinitialized.\\n     */\\n    event Initialized(uint8 version);\\n\\n    /**\\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n     * `onlyInitializing` functions can be used to initialize parent contracts.\\n     *\\n     * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n     * constructor.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier initializer() {\\n        bool isTopLevelCall = !_initializing;\\n        require(\\n            (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n            \\\"Initializable: contract is already initialized\\\"\\n        );\\n        _initialized = 1;\\n        if (isTopLevelCall) {\\n            _initializing = true;\\n        }\\n        _;\\n        if (isTopLevelCall) {\\n            _initializing = false;\\n            emit Initialized(1);\\n        }\\n    }\\n\\n    /**\\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n     * used to initialize parent contracts.\\n     *\\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n     * are added through upgrades and that require initialization.\\n     *\\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\\n     *\\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n     * a contract, executing them in the right order is up to the developer or operator.\\n     *\\n     * WARNING: setting the version to 255 will prevent any future reinitialization.\\n     *\\n     * Emits an {Initialized} event.\\n     */\\n    modifier reinitializer(uint8 version) {\\n        require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n        _initialized = version;\\n        _initializing = true;\\n        _;\\n        _initializing = false;\\n        emit Initialized(version);\\n    }\\n\\n    /**\\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n     */\\n    modifier onlyInitializing() {\\n        require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n     * through proxies.\\n     *\\n     * Emits an {Initialized} event the first time it is successfully executed.\\n     */\\n    function _disableInitializers() internal virtual {\\n        require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n        if (_initialized != type(uint8).max) {\\n            _initialized = type(uint8).max;\\n            emit Initialized(type(uint8).max);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n     */\\n    function _getInitializedVersion() internal view returns (uint8) {\\n        return _initialized;\\n    }\\n\\n    /**\\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n     */\\n    function _isInitializing() internal view returns (bool) {\\n        return _initializing;\\n    }\\n}\\n\",\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (security/ReentrancyGuard.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module that helps prevent reentrant calls to a function.\\n *\\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\\n * available, which can be applied to functions to make sure there are no nested\\n * (reentrant) calls to them.\\n *\\n * Note that because there is a single `nonReentrant` guard, functions marked as\\n * `nonReentrant` may not call one another. This can be worked around by making\\n * those functions `private`, and then adding `external` `nonReentrant` entry\\n * points to them.\\n *\\n * TIP: If you would like to learn more about reentrancy and alternative ways\\n * to protect against it, check out our blog post\\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\\n */\\nabstract contract ReentrancyGuardUpgradeable is Initializable {\\n    // Booleans are more expensive than uint256 or any type that takes up a full\\n    // word because each write operation emits an extra SLOAD to first read the\\n    // slot's contents, replace the bits taken up by the boolean, and then write\\n    // back. This is the compiler's defense against contract upgrades and\\n    // pointer aliasing, and it cannot be disabled.\\n\\n    // The values being non-zero value makes deployment a bit more expensive,\\n    // but in exchange the refund on every call to nonReentrant will be lower in\\n    // amount. Since refunds are capped to a percentage of the total\\n    // transaction's gas, it is best to keep them low in cases like this one, to\\n    // increase the likelihood of the full refund coming into effect.\\n    uint256 private constant _NOT_ENTERED = 1;\\n    uint256 private constant _ENTERED = 2;\\n\\n    uint256 private _status;\\n\\n    function __ReentrancyGuard_init() internal onlyInitializing {\\n        __ReentrancyGuard_init_unchained();\\n    }\\n\\n    function __ReentrancyGuard_init_unchained() internal onlyInitializing {\\n        _status = _NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Prevents a contract from calling itself, directly or indirectly.\\n     * Calling a `nonReentrant` function from another `nonReentrant`\\n     * function is not supported. It is possible to prevent this from happening\\n     * by making the `nonReentrant` function external, and making it call a\\n     * `private` function that does the actual work.\\n     */\\n    modifier nonReentrant() {\\n        _nonReentrantBefore();\\n        _;\\n        _nonReentrantAfter();\\n    }\\n\\n    function _nonReentrantBefore() private {\\n        // On the first call to nonReentrant, _status will be _NOT_ENTERED\\n        require(_status != _ENTERED, \\\"ReentrancyGuard: reentrant call\\\");\\n\\n        // Any calls to nonReentrant after this point will fail\\n        _status = _ENTERED;\\n    }\\n\\n    function _nonReentrantAfter() private {\\n        // By storing the original value once again, a refund is triggered (see\\n        // https://eips.ethereum.org/EIPS/eip-2200)\\n        _status = _NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Returns true if the reentrancy guard is currently set to \\\"entered\\\", which indicates there is a\\n     * `nonReentrant` function in the call stack.\\n     */\\n    function _reentrancyGuardEntered() internal view returns (bool) {\\n        return _status == _ENTERED;\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x2025ccf05f6f1f2fd4e078e552836f525a1864e3854ed555047cd732320ab29b\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.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 IERC20Upgradeable {\\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(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x0e1f0f5f62f67a881cd1a9597acbc0a5e4071f3c2c10449a183b922ae7272e3f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (token/ERC20/extensions/IERC20Permit.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\\n *\\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\\n * need to send a transaction, and thus is not required to hold Ether at all.\\n *\\n * ==== Security Considerations\\n *\\n * There are two important considerations concerning the use of `permit`. The first is that a valid permit signature\\n * expresses an allowance, and it should not be assumed to convey additional meaning. In particular, it should not be\\n * considered as an intention to spend the allowance in any specific way. The second is that because permits have\\n * built-in replay protection and can be submitted by anyone, they can be frontrun. A protocol that uses permits should\\n * take this into consideration and allow a `permit` call to fail. Combining these two aspects, a pattern that may be\\n * generally recommended is:\\n *\\n * ```solidity\\n * function doThingWithPermit(..., uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {\\n *     try token.permit(msg.sender, address(this), value, deadline, v, r, s) {} catch {}\\n *     doThing(..., value);\\n * }\\n *\\n * function doThing(..., uint256 value) public {\\n *     token.safeTransferFrom(msg.sender, address(this), value);\\n *     ...\\n * }\\n * ```\\n *\\n * Observe that: 1) `msg.sender` is used as the owner, leaving no ambiguity as to the signer intent, and 2) the use of\\n * `try/catch` allows the permit to fail and makes the code tolerant to frontrunning. (See also\\n * {SafeERC20-safeTransferFrom}).\\n *\\n * Additionally, note that smart contract wallets (such as Argent or Safe) are not able to produce permit signatures, so\\n * contracts should have entry points that don't rely on permit.\\n */\\ninterface IERC20PermitUpgradeable {\\n    /**\\n     * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\\n     * given ``owner``'s signed approval.\\n     *\\n     * IMPORTANT: The same issues {IERC20-approve} has related to transaction\\n     * ordering also apply here.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     * - `deadline` must be a timestamp in the future.\\n     * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\\n     * over the EIP712-formatted function arguments.\\n     * - the signature must use ``owner``'s current nonce (see {nonces}).\\n     *\\n     * For more information on the signature format, see the\\n     * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\\n     * section].\\n     *\\n     * CAUTION: See Security Considerations above.\\n     */\\n    function permit(\\n        address owner,\\n        address spender,\\n        uint256 value,\\n        uint256 deadline,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external;\\n\\n    /**\\n     * @dev Returns the current nonce for `owner`. This value must be\\n     * included whenever a signature is generated for {permit}.\\n     *\\n     * Every successful call to {permit} increases ``owner``'s nonce by one. This\\n     * prevents a signature from being used multiple times.\\n     */\\n    function nonces(address owner) external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\\n     */\\n    // solhint-disable-next-line func-name-mixedcase\\n    function DOMAIN_SEPARATOR() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x07e881de3b9f6d2c07909f193f24b96c7fe4ea60013260f3f25aecd8bab3c2f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.3) (token/ERC20/utils/SafeERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20Upgradeable.sol\\\";\\nimport \\\"../extensions/IERC20PermitUpgradeable.sol\\\";\\nimport \\\"../../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20Upgradeable {\\n    using AddressUpgradeable for address;\\n\\n    /**\\n     * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     */\\n    function safeTransfer(IERC20Upgradeable token, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\\n    }\\n\\n    /**\\n     * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\\n     * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\\n     */\\n    function safeTransferFrom(IERC20Upgradeable token, address from, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\\n    }\\n\\n    /**\\n     * @dev Deprecated. This function has issues similar to the ones found in\\n     * {IERC20-approve}, and its usage is discouraged.\\n     *\\n     * Whenever possible, use {safeIncreaseAllowance} and\\n     * {safeDecreaseAllowance} instead.\\n     */\\n    function safeApprove(IERC20Upgradeable token, address spender, uint256 value) internal {\\n        // safeApprove should only be called when setting an initial allowance,\\n        // or when resetting it to zero. To increase and decrease it, use\\n        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\\n        require(\\n            (value == 0) || (token.allowance(address(this), spender) == 0),\\n            \\\"SafeERC20: approve from non-zero to non-zero allowance\\\"\\n        );\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\\n    }\\n\\n    /**\\n     * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     */\\n    function safeIncreaseAllowance(IERC20Upgradeable token, address spender, uint256 value) internal {\\n        uint256 oldAllowance = token.allowance(address(this), spender);\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance + value));\\n    }\\n\\n    /**\\n     * @dev Decrease the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     */\\n    function safeDecreaseAllowance(IERC20Upgradeable token, address spender, uint256 value) internal {\\n        unchecked {\\n            uint256 oldAllowance = token.allowance(address(this), spender);\\n            require(oldAllowance >= value, \\\"SafeERC20: decreased allowance below zero\\\");\\n            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance - value));\\n        }\\n    }\\n\\n    /**\\n     * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\\n     * to be set to zero before setting it to a non-zero value, such as USDT.\\n     */\\n    function forceApprove(IERC20Upgradeable token, address spender, uint256 value) internal {\\n        bytes memory approvalCall = abi.encodeWithSelector(token.approve.selector, spender, value);\\n\\n        if (!_callOptionalReturnBool(token, approvalCall)) {\\n            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, 0));\\n            _callOptionalReturn(token, approvalCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Use a ERC-2612 signature to set the `owner` approval toward `spender` on `token`.\\n     * Revert on invalid signature.\\n     */\\n    function safePermit(\\n        IERC20PermitUpgradeable token,\\n        address owner,\\n        address spender,\\n        uint256 value,\\n        uint256 deadline,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) internal {\\n        uint256 nonceBefore = token.nonces(owner);\\n        token.permit(owner, spender, value, deadline, v, r, s);\\n        uint256 nonceAfter = token.nonces(owner);\\n        require(nonceAfter == nonceBefore + 1, \\\"SafeERC20: permit did not succeed\\\");\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     */\\n    function _callOptionalReturn(IERC20Upgradeable token, bytes memory data) private {\\n        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n        // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that\\n        // the target address contains contract code and also asserts for success in the low-level call.\\n\\n        bytes memory returndata = address(token).functionCall(data, \\\"SafeERC20: low-level call failed\\\");\\n        require(returndata.length == 0 || abi.decode(returndata, (bool)), \\\"SafeERC20: ERC20 operation did not succeed\\\");\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     *\\n     * This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead.\\n     */\\n    function _callOptionalReturnBool(IERC20Upgradeable token, bytes memory data) private returns (bool) {\\n        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n        // we're implementing it ourselves. We cannot use {Address-functionCall} here since this should return false\\n        // and not revert is the subcall reverts.\\n\\n        (bool success, bytes memory returndata) = address(token).call(data);\\n        return\\n            success && (returndata.length == 0 || abi.decode(returndata, (bool))) && AddressUpgradeable.isContract(address(token));\\n    }\\n}\\n\",\"keccak256\":\"0x23b997be73d3dd46885262704f0f8cfc7273fdadfe303d37969a9561373972b5\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     *\\n     * Furthermore, `isContract` will also return true if the target contract within\\n     * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n     * which only has an effect at the end of a transaction.\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n     * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n     *\\n     * _Available since v4.8._\\n     */\\n    function verifyCallResultFromTarget(\\n        address target,\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        if (success) {\\n            if (returndata.length == 0) {\\n                // only check isContract if the call was successful and the return data is empty\\n                // otherwise we already know that it was a contract\\n                require(isContract(target), \\\"Address: call to non-contract\\\");\\n            }\\n            return returndata;\\n        } else {\\n            _revert(returndata, errorMessage);\\n        }\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason or using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            _revert(returndata, errorMessage);\\n        }\\n    }\\n\\n    function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n        // Look for revert reason and bubble it up if present\\n        if (returndata.length > 0) {\\n            // The easiest way to bubble the revert reason is using memory via assembly\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert(errorMessage);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport {Initializable} from \\\"../proxy/utils/Initializable.sol\\\";\\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 ContextUpgradeable is Initializable {\\n    function __Context_init() internal onlyInitializing {\\n    }\\n\\n    function __Context_init_unchained() internal onlyInitializing {\\n    }\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n\\n    /**\\n     * @dev This empty reserved space is put in place to allow future versions to add new\\n     * variables without shifting down storage in the inheritance chain.\\n     * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n     */\\n    uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\"},\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.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. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        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\",\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\"},\"@openzeppelin/contracts/access/Ownable2Step.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable2Step.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./Ownable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides 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} and {acceptOwnership}.\\n *\\n * This module is used through inheritance. It will make available all functions\\n * from parent (Ownable).\\n */\\nabstract contract Ownable2Step is Ownable {\\n    address private _pendingOwner;\\n\\n    event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Returns the address of the pending owner.\\n     */\\n    function pendingOwner() public view virtual returns (address) {\\n        return _pendingOwner;\\n    }\\n\\n    /**\\n     * @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual override onlyOwner {\\n        _pendingOwner = newOwner;\\n        emit OwnershipTransferStarted(owner(), newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual override {\\n        delete _pendingOwner;\\n        super._transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev The new owner accepts the ownership transfer.\\n     */\\n    function acceptOwnership() public virtual {\\n        address sender = _msgSender();\\n        require(pendingOwner() == sender, \\\"Ownable2Step: caller is not the new owner\\\");\\n        _transferOwnership(sender);\\n    }\\n}\\n\",\"keccak256\":\"0xde231558366826d7cb61725af8147965a61c53b77a352cc8c9af38fc5a92ac3c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC5267.sol)\\n\\npragma solidity ^0.8.0;\\n\\ninterface IERC5267 {\\n    /**\\n     * @dev MAY be emitted to signal that the domain could have changed.\\n     */\\n    event EIP712DomainChanged();\\n\\n    /**\\n     * @dev returns the fields and values that describe the domain separator used by this contract for EIP-712\\n     * signature.\\n     */\\n    function eip712Domain()\\n        external\\n        view\\n        returns (\\n            bytes1 fields,\\n            string memory name,\\n            string memory version,\\n            uint256 chainId,\\n            address verifyingContract,\\n            bytes32 salt,\\n            uint256[] memory extensions\\n        );\\n}\\n\",\"keccak256\":\"0xac6c2efc64baccbde4904ae18ed45139c9aa8cff96d6888344d1e4d2eb8b659f\",\"license\":\"MIT\"},\"@openzeppelin/contracts/security/ReentrancyGuard.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (security/ReentrancyGuard.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Contract module that helps prevent reentrant calls to a function.\\n *\\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\\n * available, which can be applied to functions to make sure there are no nested\\n * (reentrant) calls to them.\\n *\\n * Note that because there is a single `nonReentrant` guard, functions marked as\\n * `nonReentrant` may not call one another. This can be worked around by making\\n * those functions `private`, and then adding `external` `nonReentrant` entry\\n * points to them.\\n *\\n * TIP: If you would like to learn more about reentrancy and alternative ways\\n * to protect against it, check out our blog post\\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\\n */\\nabstract contract ReentrancyGuard {\\n    // Booleans are more expensive than uint256 or any type that takes up a full\\n    // word because each write operation emits an extra SLOAD to first read the\\n    // slot's contents, replace the bits taken up by the boolean, and then write\\n    // back. This is the compiler's defense against contract upgrades and\\n    // pointer aliasing, and it cannot be disabled.\\n\\n    // The values being non-zero value makes deployment a bit more expensive,\\n    // but in exchange the refund on every call to nonReentrant will be lower in\\n    // amount. Since refunds are capped to a percentage of the total\\n    // transaction's gas, it is best to keep them low in cases like this one, to\\n    // increase the likelihood of the full refund coming into effect.\\n    uint256 private constant _NOT_ENTERED = 1;\\n    uint256 private constant _ENTERED = 2;\\n\\n    uint256 private _status;\\n\\n    constructor() {\\n        _status = _NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Prevents a contract from calling itself, directly or indirectly.\\n     * Calling a `nonReentrant` function from another `nonReentrant`\\n     * function is not supported. It is possible to prevent this from happening\\n     * by making the `nonReentrant` function external, and making it call a\\n     * `private` function that does the actual work.\\n     */\\n    modifier nonReentrant() {\\n        _nonReentrantBefore();\\n        _;\\n        _nonReentrantAfter();\\n    }\\n\\n    function _nonReentrantBefore() private {\\n        // On the first call to nonReentrant, _status will be _NOT_ENTERED\\n        require(_status != _ENTERED, \\\"ReentrancyGuard: reentrant call\\\");\\n\\n        // Any calls to nonReentrant after this point will fail\\n        _status = _ENTERED;\\n    }\\n\\n    function _nonReentrantAfter() private {\\n        // By storing the original value once again, a refund is triggered (see\\n        // https://eips.ethereum.org/EIPS/eip-2200)\\n        _status = _NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Returns true if the reentrancy guard is currently set to \\\"entered\\\", which indicates there is a\\n     * `nonReentrant` function in the call stack.\\n     */\\n    function _reentrancyGuardEntered() internal view returns (bool) {\\n        return _status == _ENTERED;\\n    }\\n}\\n\",\"keccak256\":\"0xa535a5df777d44e945dd24aa43a11e44b024140fc340ad0dfe42acf4002aade1\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (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    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/ShortStrings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/ShortStrings.sol)\\n\\npragma solidity ^0.8.8;\\n\\nimport \\\"./StorageSlot.sol\\\";\\n\\n// | string  | 0xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA   |\\n// | length  | 0x                                                              BB |\\ntype ShortString is bytes32;\\n\\n/**\\n * @dev This library provides functions to convert short memory strings\\n * into a `ShortString` type that can be used as an immutable variable.\\n *\\n * Strings of arbitrary length can be optimized using this library if\\n * they are short enough (up to 31 bytes) by packing them with their\\n * length (1 byte) in a single EVM word (32 bytes). Additionally, a\\n * fallback mechanism can be used for every other case.\\n *\\n * Usage example:\\n *\\n * ```solidity\\n * contract Named {\\n *     using ShortStrings for *;\\n *\\n *     ShortString private immutable _name;\\n *     string private _nameFallback;\\n *\\n *     constructor(string memory contractName) {\\n *         _name = contractName.toShortStringWithFallback(_nameFallback);\\n *     }\\n *\\n *     function name() external view returns (string memory) {\\n *         return _name.toStringWithFallback(_nameFallback);\\n *     }\\n * }\\n * ```\\n */\\nlibrary ShortStrings {\\n    // Used as an identifier for strings longer than 31 bytes.\\n    bytes32 private constant _FALLBACK_SENTINEL = 0x00000000000000000000000000000000000000000000000000000000000000FF;\\n\\n    error StringTooLong(string str);\\n    error InvalidShortString();\\n\\n    /**\\n     * @dev Encode a string of at most 31 chars into a `ShortString`.\\n     *\\n     * This will trigger a `StringTooLong` error is the input string is too long.\\n     */\\n    function toShortString(string memory str) internal pure returns (ShortString) {\\n        bytes memory bstr = bytes(str);\\n        if (bstr.length > 31) {\\n            revert StringTooLong(str);\\n        }\\n        return ShortString.wrap(bytes32(uint256(bytes32(bstr)) | bstr.length));\\n    }\\n\\n    /**\\n     * @dev Decode a `ShortString` back to a \\\"normal\\\" string.\\n     */\\n    function toString(ShortString sstr) internal pure returns (string memory) {\\n        uint256 len = byteLength(sstr);\\n        // using `new string(len)` would work locally but is not memory safe.\\n        string memory str = new string(32);\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            mstore(str, len)\\n            mstore(add(str, 0x20), sstr)\\n        }\\n        return str;\\n    }\\n\\n    /**\\n     * @dev Return the length of a `ShortString`.\\n     */\\n    function byteLength(ShortString sstr) internal pure returns (uint256) {\\n        uint256 result = uint256(ShortString.unwrap(sstr)) & 0xFF;\\n        if (result > 31) {\\n            revert InvalidShortString();\\n        }\\n        return result;\\n    }\\n\\n    /**\\n     * @dev Encode a string into a `ShortString`, or write it to storage if it is too long.\\n     */\\n    function toShortStringWithFallback(string memory value, string storage store) internal returns (ShortString) {\\n        if (bytes(value).length < 32) {\\n            return toShortString(value);\\n        } else {\\n            StorageSlot.getStringSlot(store).value = value;\\n            return ShortString.wrap(_FALLBACK_SENTINEL);\\n        }\\n    }\\n\\n    /**\\n     * @dev Decode a string that was encoded to `ShortString` or written to storage using {setWithFallback}.\\n     */\\n    function toStringWithFallback(ShortString value, string storage store) internal pure returns (string memory) {\\n        if (ShortString.unwrap(value) != _FALLBACK_SENTINEL) {\\n            return toString(value);\\n        } else {\\n            return store;\\n        }\\n    }\\n\\n    /**\\n     * @dev Return the length of a string that was encoded to `ShortString` or written to storage using {setWithFallback}.\\n     *\\n     * WARNING: This will return the \\\"byte length\\\" of the string. This may not reflect the actual length in terms of\\n     * actual characters as the UTF-8 encoding of a single character can span over multiple bytes.\\n     */\\n    function byteLengthWithFallback(ShortString value, string storage store) internal view returns (uint256) {\\n        if (ShortString.unwrap(value) != _FALLBACK_SENTINEL) {\\n            return byteLength(value);\\n        } else {\\n            return bytes(store).length;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xc0e310c163edf15db45d4ff938113ab357f94fa86e61ea8e790853c4d2e13256\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\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 * ```solidity\\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`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\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    struct StringSlot {\\n        string value;\\n    }\\n\\n    struct BytesSlot {\\n        bytes 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    /**\\n     * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n     */\\n    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n     */\\n    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n    bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n    uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        unchecked {\\n            uint256 length = Math.log10(value) + 1;\\n            string memory buffer = new string(length);\\n            uint256 ptr;\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                ptr := add(buffer, add(32, length))\\n            }\\n            while (true) {\\n                ptr--;\\n                /// @solidity memory-safe-assembly\\n                assembly {\\n                    mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n                }\\n                value /= 10;\\n                if (value == 0) break;\\n            }\\n            return buffer;\\n        }\\n    }\\n\\n    /**\\n     * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(int256 value) internal pure returns (string memory) {\\n        return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        unchecked {\\n            return toHexString(value, Math.log256(value) + 1);\\n        }\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = _SYMBOLS[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(address addr) internal pure returns (string memory) {\\n        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n    }\\n\\n    /**\\n     * @dev Returns true if the two strings are equal.\\n     */\\n    function equal(string memory a, string memory b) internal pure returns (bool) {\\n        return keccak256(bytes(a)) == keccak256(bytes(b));\\n    }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/cryptography/ECDSA.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Strings.sol\\\";\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSA {\\n    enum RecoverError {\\n        NoError,\\n        InvalidSignature,\\n        InvalidSignatureLength,\\n        InvalidSignatureS,\\n        InvalidSignatureV // Deprecated in v4.8\\n    }\\n\\n    function _throwError(RecoverError error) private pure {\\n        if (error == RecoverError.NoError) {\\n            return; // no error: do nothing\\n        } else if (error == RecoverError.InvalidSignature) {\\n            revert(\\\"ECDSA: invalid signature\\\");\\n        } else if (error == RecoverError.InvalidSignatureLength) {\\n            revert(\\\"ECDSA: invalid signature length\\\");\\n        } else if (error == RecoverError.InvalidSignatureS) {\\n            revert(\\\"ECDSA: invalid signature 's' value\\\");\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature` or error string. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {toEthSignedMessageHash} on it.\\n     *\\n     * Documentation for signature generation:\\n     * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n     * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\\n        if (signature.length == 65) {\\n            bytes32 r;\\n            bytes32 s;\\n            uint8 v;\\n            // ecrecover takes the signature parameters, and the only way to get them\\n            // currently is to use assembly.\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                r := mload(add(signature, 0x20))\\n                s := mload(add(signature, 0x40))\\n                v := byte(0, mload(add(signature, 0x60)))\\n            }\\n            return tryRecover(hash, v, r, s);\\n        } else {\\n            return (address(0), RecoverError.InvalidSignatureLength);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature`. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {toEthSignedMessageHash} on it.\\n     */\\n    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, signature);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\n     *\\n     * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address, RecoverError) {\\n        bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\n        uint8 v = uint8((uint256(vs) >> 255) + 27);\\n        return tryRecover(hash, v, r, s);\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\n     *\\n     * _Available since v4.2._\\n     */\\n    function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, r, vs);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address, RecoverError) {\\n        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n        // the valid range for s in (301): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (302): v \\u2208 {27, 28}. Most\\n        // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n        //\\n        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n        // these malleable signatures as well.\\n        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n            return (address(0), RecoverError.InvalidSignatureS);\\n        }\\n\\n        // If the signature is valid (and not malleable), return the signer address\\n        address signer = ecrecover(hash, v, r, s);\\n        if (signer == address(0)) {\\n            return (address(0), RecoverError.InvalidSignature);\\n        }\\n\\n        return (signer, RecoverError.NoError);\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     */\\n    function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n     * produces hash corresponding to the one signed with the\\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n     * JSON-RPC method as part of EIP-191.\\n     *\\n     * See {recover}.\\n     */\\n    function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32 message) {\\n        // 32 is the length in bytes of hash,\\n        // enforced by the type signature above\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            mstore(0x00, \\\"\\\\x19Ethereum Signed Message:\\\\n32\\\")\\n            mstore(0x1c, hash)\\n            message := keccak256(0x00, 0x3c)\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Message, created from `s`. This\\n     * produces hash corresponding to the one signed with the\\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n     * JSON-RPC method as part of EIP-191.\\n     *\\n     * See {recover}.\\n     */\\n    function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\\n        return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n\\\", Strings.toString(s.length), s));\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Typed Data, created from a\\n     * `domainSeparator` and a `structHash`. This produces hash corresponding\\n     * to the one signed with the\\n     * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\\n     * JSON-RPC method as part of EIP-712.\\n     *\\n     * See {recover}.\\n     */\\n    function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32 data) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            let ptr := mload(0x40)\\n            mstore(ptr, \\\"\\\\x19\\\\x01\\\")\\n            mstore(add(ptr, 0x02), domainSeparator)\\n            mstore(add(ptr, 0x22), structHash)\\n            data := keccak256(ptr, 0x42)\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Data with intended validator, created from a\\n     * `validator` and `data` according to the version 0 of EIP-191.\\n     *\\n     * See {recover}.\\n     */\\n    function toDataWithIntendedValidatorHash(address validator, bytes memory data) internal pure returns (bytes32) {\\n        return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x00\\\", validator, data));\\n    }\\n}\\n\",\"keccak256\":\"0x809bc3edb4bcbef8263fa616c1b60ee0004b50a8a1bfa164d8f57fd31f520c58\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/cryptography/EIP712.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/cryptography/EIP712.sol)\\n\\npragma solidity ^0.8.8;\\n\\nimport \\\"./ECDSA.sol\\\";\\nimport \\\"../ShortStrings.sol\\\";\\nimport \\\"../../interfaces/IERC5267.sol\\\";\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\\n *\\n * The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,\\n * thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding\\n * they need in their contracts using a combination of `abi.encode` and `keccak256`.\\n *\\n * This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\\n * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\\n * ({_hashTypedDataV4}).\\n *\\n * The implementation of the domain separator was designed to be as efficient as possible while still properly updating\\n * the chain id to protect against replay attacks on an eventual fork of the chain.\\n *\\n * NOTE: This contract implements the version of the encoding known as \\\"v4\\\", as implemented by the JSON RPC method\\n * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\\n *\\n * NOTE: In the upgradeable version of this contract, the cached values will correspond to the address, and the domain\\n * separator of the implementation contract. This will cause the `_domainSeparatorV4` function to always rebuild the\\n * separator from the immutable values, which is cheaper than accessing a cached version in cold storage.\\n *\\n * _Available since v3.4._\\n *\\n * @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n */\\nabstract contract EIP712 is IERC5267 {\\n    using ShortStrings for *;\\n\\n    bytes32 private constant _TYPE_HASH =\\n        keccak256(\\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\");\\n\\n    // Cache the domain separator as an immutable value, but also store the chain id that it corresponds to, in order to\\n    // invalidate the cached domain separator if the chain id changes.\\n    bytes32 private immutable _cachedDomainSeparator;\\n    uint256 private immutable _cachedChainId;\\n    address private immutable _cachedThis;\\n\\n    bytes32 private immutable _hashedName;\\n    bytes32 private immutable _hashedVersion;\\n\\n    ShortString private immutable _name;\\n    ShortString private immutable _version;\\n    string private _nameFallback;\\n    string private _versionFallback;\\n\\n    /**\\n     * @dev Initializes the domain separator and parameter caches.\\n     *\\n     * The meaning of `name` and `version` is specified in\\n     * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\\n     *\\n     * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\\n     * - `version`: the current major version of the signing domain.\\n     *\\n     * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\\n     * contract upgrade].\\n     */\\n    constructor(string memory name, string memory version) {\\n        _name = name.toShortStringWithFallback(_nameFallback);\\n        _version = version.toShortStringWithFallback(_versionFallback);\\n        _hashedName = keccak256(bytes(name));\\n        _hashedVersion = keccak256(bytes(version));\\n\\n        _cachedChainId = block.chainid;\\n        _cachedDomainSeparator = _buildDomainSeparator();\\n        _cachedThis = address(this);\\n    }\\n\\n    /**\\n     * @dev Returns the domain separator for the current chain.\\n     */\\n    function _domainSeparatorV4() internal view returns (bytes32) {\\n        if (address(this) == _cachedThis && block.chainid == _cachedChainId) {\\n            return _cachedDomainSeparator;\\n        } else {\\n            return _buildDomainSeparator();\\n        }\\n    }\\n\\n    function _buildDomainSeparator() private view returns (bytes32) {\\n        return keccak256(abi.encode(_TYPE_HASH, _hashedName, _hashedVersion, block.chainid, address(this)));\\n    }\\n\\n    /**\\n     * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\\n     * function returns the hash of the fully encoded EIP712 message for this domain.\\n     *\\n     * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\\n     *\\n     * ```solidity\\n     * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\\n     *     keccak256(\\\"Mail(address to,string contents)\\\"),\\n     *     mailTo,\\n     *     keccak256(bytes(mailContents))\\n     * )));\\n     * address signer = ECDSA.recover(digest, signature);\\n     * ```\\n     */\\n    function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {\\n        return ECDSA.toTypedDataHash(_domainSeparatorV4(), structHash);\\n    }\\n\\n    /**\\n     * @dev See {EIP-5267}.\\n     *\\n     * _Available since v4.9._\\n     */\\n    function eip712Domain()\\n        public\\n        view\\n        virtual\\n        override\\n        returns (\\n            bytes1 fields,\\n            string memory name,\\n            string memory version,\\n            uint256 chainId,\\n            address verifyingContract,\\n            bytes32 salt,\\n            uint256[] memory extensions\\n        )\\n    {\\n        return (\\n            hex\\\"0f\\\", // 01111\\n            _name.toStringWithFallback(_nameFallback),\\n            _version.toStringWithFallback(_versionFallback),\\n            block.chainid,\\n            address(this),\\n            bytes32(0),\\n            new uint256[](0)\\n        );\\n    }\\n}\\n\",\"keccak256\":\"0x8432884527a7ad91e6eed1cfc5a0811ae2073e5bca107bd0ca442e9236b03dbd\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.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(uint256 x, uint256 y, uint256 denominator) 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                // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n                // The surrounding unchecked block does not change this fact.\\n                // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n                return prod0 / denominator;\\n            }\\n\\n            // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n            require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\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(uint256 x, uint256 y, uint256 denominator, Rounding rounding) 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        // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n        // \\u2192 `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 256, 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 << 3) < value ? 1 : 0);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n    /**\\n     * @dev Returns the largest of two signed numbers.\\n     */\\n    function max(int256 a, int256 b) internal pure returns (int256) {\\n        return a > b ? a : b;\\n    }\\n\\n    /**\\n     * @dev Returns the smallest of two signed numbers.\\n     */\\n    function min(int256 a, int256 b) internal pure returns (int256) {\\n        return a < b ? a : b;\\n    }\\n\\n    /**\\n     * @dev Returns the average of two signed numbers without overflow.\\n     * The result is rounded towards zero.\\n     */\\n    function average(int256 a, int256 b) internal pure returns (int256) {\\n        // Formula from the book \\\"Hacker's Delight\\\"\\n        int256 x = (a & b) + ((a ^ b) >> 1);\\n        return x + (int256(uint256(x) >> 255) & (a ^ b));\\n    }\\n\\n    /**\\n     * @dev Returns the absolute unsigned value of a signed value.\\n     */\\n    function abs(int256 n) internal pure returns (uint256) {\\n        unchecked {\\n            // must be unchecked in order to support `n = type(int256).min`\\n            return uint256(n >= 0 ? n : -n);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"},\"@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\ninterface OracleInterface {\\n    function getPrice(address asset) external view returns (uint256);\\n}\\n\\ninterface ResilientOracleInterface is OracleInterface {\\n    function updatePrice(address vToken) external;\\n\\n    function updateAssetPrice(address asset) external;\\n\\n    function getUnderlyingPrice(address vToken) external view returns (uint256);\\n}\\n\\ninterface BoundValidatorInterface {\\n    function validatePriceWithAnchorPrice(\\n        address asset,\\n        uint256 reporterPrice,\\n        uint256 anchorPrice\\n    ) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xd3bbb7c9eef19e8f467342df6034ef95399a00964646fb8c82b438968ae3a8c0\",\"license\":\"BSD-3-Clause\"},\"contracts/Interfaces.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity ^0.8.25;\\n\\nimport { IERC20Upgradeable } from \\\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\\\";\\nimport { ResilientOracleInterface } from \\\"@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol\\\";\\n\\ninterface IVToken is IERC20Upgradeable {\\n    function accrueInterest() external returns (uint256);\\n\\n    function redeem(uint256 redeemTokens) external returns (uint256);\\n\\n    function redeemUnderlying(uint256 redeemAmount) external returns (uint256);\\n\\n    function borrowBalanceCurrent(address borrower) external returns (uint256);\\n\\n    function balanceOfUnderlying(address owner) external returns (uint256);\\n\\n    function seize(address liquidator, address borrower, uint seizeTokens) external returns (uint);\\n\\n    function mintBehalf(address receiver, uint mintAmount) external returns (uint);\\n\\n    function borrowBehalf(address borrower, uint borrowAmount) external returns (uint256);\\n\\n    function repayBorrowBehalf(address borrower, uint repayAmount) external returns (uint256);\\n\\n    function redeemUnderlyingBehalf(address redeemer, uint redeemAmount) external returns (uint);\\n\\n    function comptroller() external view returns (IComptroller);\\n\\n    function borrowBalanceStored(address account) external view returns (uint256);\\n\\n    function underlying() external view returns (address);\\n}\\n\\ninterface IVBNB is IVToken {\\n    function repayBorrowBehalf(address borrower) external payable;\\n\\n    function liquidateBorrow(address borrower, IVToken vTokenCollateral) external payable;\\n}\\n\\ninterface IComptroller {\\n    enum Action {\\n        MINT,\\n        REDEEM,\\n        BORROW,\\n        REPAY,\\n        SEIZE,\\n        LIQUIDATE,\\n        TRANSFER,\\n        ENTER_MARKET,\\n        EXIT_MARKET\\n    }\\n\\n    function _setActionsPaused(address[] calldata markets_, Action[] calldata actions_, bool paused_) external;\\n\\n    function enterMarkets(address[] calldata vTokens) external returns (uint256[] memory);\\n\\n    function enterMarketBehalf(address onBehalf, address vToken) external returns (uint256);\\n\\n    function enterMarket(address user, address vToken) external returns (uint256);\\n\\n    function liquidationIncentiveMantissa() external view returns (uint256);\\n\\n    function vaiController() external view returns (address);\\n\\n    function liquidatorContract() external view returns (address);\\n\\n    function oracle() external view returns (ResilientOracleInterface);\\n\\n    function actionPaused(address market, Action action) external view returns (bool);\\n\\n    function markets(address) external view returns (bool, uint256, bool);\\n\\n    function isForcedLiquidationEnabled(address) external view returns (bool);\\n\\n    function approvedDelegates(address borrower, address delegate) external view returns (bool);\\n\\n    function getAccountLiquidity(address account) external view returns (uint256, uint256, uint256);\\n\\n    function checkMembership(address account, IVToken vToken) external view returns (bool);\\n\\n    function getBorrowingPower(\\n        address account\\n    ) external view returns (uint256 error, uint256 liquidity, uint256 shortfall);\\n\\n    function treasuryPercent() external view returns (uint256);\\n\\n    function executeFlashLoan(\\n        address payable onBehalf,\\n        address payable receiver,\\n        IVToken[] memory vTokens,\\n        uint256[] memory underlyingAmounts,\\n        bytes memory param\\n    ) external;\\n}\\n\\ninterface IFlashLoanReceiver {\\n    /**\\n     * @notice Executes an operation after receiving the flash-borrowed assets.\\n     * @dev Implementation of this function must ensure at least the premium (fee) is repaid within the same transaction.\\n     *      Any unpaid balance (principal + premium - repaid amount) will be added to the onBehalf address's borrow balance.\\n     * @param vTokens The vToken contracts corresponding to the flash-borrowed underlying assets.\\n     * @param amounts The amounts of each underlying asset that were flash-borrowed.\\n     * @param premiums The premiums (fees) associated with each flash-borrowed asset.\\n     * @param initiator The address that initiated the flash loan.\\n     * @param onBehalf The address of the user whose debt position will be used for any unpaid flash loan balance.\\n     * @param param Additional parameters encoded as bytes. These can be used to pass custom data to the receiver contract.\\n     * @return success True if the operation succeeds (regardless of repayment amount), false if the operation fails.\\n     * @return repayAmounts Array of uint256 representing the amounts to be repaid for each asset. The receiver contract\\n     *         must approve these amounts to the respective vToken contracts before this function returns.\\n     */\\n    function executeOperation(\\n        IVToken[] calldata vTokens,\\n        uint256[] calldata amounts,\\n        uint256[] calldata premiums,\\n        address initiator,\\n        address onBehalf,\\n        bytes calldata param\\n    ) external returns (bool success, uint256[] memory repayAmounts);\\n}\\n\\ninterface IWBNB is IERC20Upgradeable {\\n    function deposit() external payable;\\n\\n    function withdraw(uint256 amount) external;\\n}\\n\\ninterface IProtocolShareReserve {\\n    enum IncomeType {\\n        SPREAD,\\n        LIQUIDATION,\\n        ERC4626_WRAPPER_REWARDS,\\n        FLASHLOAN\\n    }\\n\\n    function updateAssetsState(address comptroller, address asset, IncomeType incomeType) external;\\n}\\n\",\"keccak256\":\"0x05825bb795ff9a56832449324737a282a3cc523697d5897ac8c3e7a43455942a\",\"license\":\"BSD-3-Clause\"},\"contracts/LeverageManager/ILeverageStrategiesManager.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.28;\\n\\nimport { IVToken } from \\\"../Interfaces.sol\\\";\\n\\n/**\\n * @title ILeverageStrategiesManager\\n * @author Venus Protocol\\n * @notice Interface for the Leverage Strategies Manager contract\\n * @dev This interface defines the functionality for entering and exiting leveraged positions\\n *      using flash loans and token swaps. The contract allows users to amplify their exposure\\n *      to specific assets by borrowing against their collateral and reinvesting the borrowed funds.\\n */\\ninterface ILeverageStrategiesManager {\\n    /// @custom:error MintBehalfFailed mintBehalf on a vToken market returned a non-zero error code\\n    error MintBehalfFailed(uint256 errorCode);\\n\\n    /// @custom:error BorrowBehalfFailed borrowBehalf on a vToken market returned a non-zero error code\\n    error BorrowBehalfFailed(uint256 errorCode);\\n\\n    /// @custom:error RepayBehalfFailed repayBehalf on a vToken market returned a non-zero error code\\n    error RepayBehalfFailed(uint256 errorCode);\\n\\n    /// @custom:error RedeemBehalfFailed redeemBehalf on a vToken market returned a non-zero error code\\n    error RedeemBehalfFailed(uint256 errorCode);\\n\\n    /// @custom:error OperationCausesLiquidation Operation would put the account at risk (undercollateralized) returns a non-zero error code from getBorrowingPower\\n    error OperationCausesLiquidation(uint256 errorCode);\\n\\n    /// @custom:error TokenSwapCallFailed Swap helper call reverted or returned false\\n    error TokenSwapCallFailed();\\n\\n    /// @custom:error FlashLoanAssetOrAmountMismatch Invalid flash loan arrays length or >1 elements\\n    error FlashLoanAssetOrAmountMismatch();\\n\\n    /// @custom:error UnauthorizedExecutor Caller is not the expected Comptroller\\n    error UnauthorizedExecutor();\\n\\n    /// @custom:error InvalidExecuteOperation Unknown operation type in flash loan callback\\n    error InvalidExecuteOperation();\\n\\n    /// @custom:error SlippageExceeded Swap output lower than required minimum\\n    error SlippageExceeded();\\n\\n    /// @custom:error InsufficientFundsToRepayFlashloan Not enough proceeds to repay flash loan plus fees\\n    error InsufficientFundsToRepayFlashloan();\\n\\n    /// @custom:error InitiatorMismatch Invalid initiator address in flash loan callback\\n    error InitiatorMismatch();\\n\\n    /// @custom:error OnBehalfMismatch Invalid onBehalf address in flash loan callback\\n    error OnBehalfMismatch();\\n\\n    /// @custom:error EnterMarketFailed Comptroller.enterMarketBehalf returned a non-zero error code\\n    error EnterMarketFailed(uint256 err);\\n\\n    /// @custom:error MarketNotListed Provided vToken market is not listed in Comptroller\\n    error MarketNotListed(address market);\\n\\n    /// @custom:error VBNBNotSupported vBNB market is not supported for leverage operations\\n    error VBNBNotSupported();\\n\\n    /// @custom:error ZeroAddress One of the required addresses is zero\\n    error ZeroAddress();\\n\\n    /// @custom:error NotAnApprovedDelegate User has not approved this contract as a delegate\\n    error NotAnApprovedDelegate();\\n\\n    /// @custom:error ZeroFlashLoanAmount Flash loan amount cannot be zero\\n    error ZeroFlashLoanAmount();\\n\\n    /// @custom:error AccrueInterestFailed accrueInterest on a vToken market returned a non-zero error code\\n    error AccrueInterestFailed(uint256 errorCode);\\n\\n    /// @custom:error IdenticalMarkets Collateral and borrow markets cannot be the same\\n    error IdenticalMarkets();\\n\\n    /// @notice Emitted when dust amounts are transferred after a leverage operation\\n    /// @param recipient The address receiving the dust (user or protocol share reserve)\\n    /// @param token The underlying token address\\n    /// @param amount The amount of dust transferred\\n    event DustTransferred(address indexed recipient, address indexed token, uint256 amount);\\n\\n    /// @notice Emitted when a user enters a leveraged position with single collateral asset\\n    /// @param user The address of the user entering the position\\n    /// @param collateralMarket The vToken market used as collateral\\n    /// @param collateralAmountSeed The initial collateral amount provided by the user\\n    /// @param collateralAmountToFlashLoan The amount being flash loaned\\n    event SingleAssetLeverageEntered(\\n        address indexed user,\\n        IVToken indexed collateralMarket,\\n        uint256 collateralAmountSeed,\\n        uint256 collateralAmountToFlashLoan\\n    );\\n\\n    /// @notice Emitted when a user enters a leveraged position with collateral seed\\n    /// @param user The address of the user entering the position\\n    /// @param collateralMarket The vToken market used as collateral\\n    /// @param collateralAmountSeed The initial collateral amount provided by the user\\n    /// @param borrowedMarket The vToken market being borrowed from\\n    /// @param borrowedAmountToFlashLoan The amount being flash loaned\\n    event LeverageEntered(\\n        address indexed user,\\n        IVToken indexed collateralMarket,\\n        uint256 collateralAmountSeed,\\n        IVToken indexed borrowedMarket,\\n        uint256 borrowedAmountToFlashLoan\\n    );\\n\\n    /// @notice Emitted when a user enters a leveraged position with borrowed asset seed\\n    /// @param user The address of the user entering the position\\n    /// @param collateralMarket The vToken market used as collateral\\n    /// @param borrowedMarket The vToken market being borrowed from\\n    /// @param borrowedAmountSeed The initial borrowed asset amount provided by the user\\n    /// @param borrowedAmountToFlashLoan The amount being flash loaned\\n    event LeverageEnteredFromBorrow(\\n        address indexed user,\\n        IVToken indexed collateralMarket,\\n        IVToken indexed borrowedMarket,\\n        uint256 borrowedAmountSeed,\\n        uint256 borrowedAmountToFlashLoan\\n    );\\n\\n    /// @notice Emitted when a user exits a leveraged position\\n    /// @param user The address of the user exiting the position\\n    /// @param collateralMarket The vToken market being redeemed\\n    /// @param collateralAmountToRedeemForSwap The amount of collateral being redeemed for swap\\n    /// @param borrowedMarket The vToken market being repaid\\n    /// @param borrowedAmountToFlashLoan The amount being flash loaned\\n    event LeverageExited(\\n        address indexed user,\\n        IVToken indexed collateralMarket,\\n        uint256 collateralAmountToRedeemForSwap,\\n        IVToken indexed borrowedMarket,\\n        uint256 borrowedAmountToFlashLoan\\n    );\\n\\n    /// @notice Emitted when a user exits a leveraged position with single collateral asset\\n    /// @param user The address of the user exiting the position\\n    /// @param collateralMarket The vToken market used for both collateral and borrowed asset\\n    /// @param collateralAmountToFlashLoan The amount being flash loaned\\n    event SingleAssetLeverageExited(\\n        address indexed user,\\n        IVToken indexed collateralMarket,\\n        uint256 collateralAmountToFlashLoan\\n    );\\n\\n    /**\\n     * @notice Enumeration of operation types for flash loan callbacks\\n     * @param NONE Default value indicating no operation set\\n     * @param ENTER_SINGLE_ASSET Operation for entering a leveraged position using single asset (no swap)\\n     * @param ENTER_COLLATERAL Operation for entering a leveraged position with collateral seed\\n     * @param ENTER_BORROW Operation for entering a leveraged position with borrowed asset seed\\n     * @param EXIT_COLLATERAL Operation for exiting a leveraged position with swap\\n     * @param EXIT_SINGLE_ASSET Operation for exiting a leveraged position using single asset (no swap)\\n     */\\n    enum OperationType {\\n        NONE,\\n        ENTER_SINGLE_ASSET,\\n        ENTER_COLLATERAL,\\n        ENTER_BORROW,\\n        EXIT_COLLATERAL,\\n        EXIT_SINGLE_ASSET\\n    }\\n\\n    /**\\n     * @notice Enters a leveraged position using only collateral provided by the user\\n     * @dev This function flash loans additional collateral assets, amplifying the user's supplied collateral\\n     *      in the Venus protocol. The user must have delegated permission to this contract via the comptroller.\\n     *      Any remaining collateral dust after the operation is returned to the user.\\n     * @param collateralMarket The vToken market where collateral will be supplied (must not be vBNB)\\n     * @param collateralAmountSeed The initial amount of collateral the user provides (can be 0)\\n     * @param collateralAmountToFlashLoan The amount to borrow via flash loan for leverage\\n     * @custom:emits SingleAssetLeverageEntered\\n     * @custom:error NotAnApprovedDelegate if caller has not delegated to this contract\\n     * @custom:error AccrueInterestFailed if interest accrual fails on the collateral market\\n     * @custom:error MarketNotListed if the market is not listed in Comptroller\\n     * @custom:error VBNBNotSupported if the market is vBNB\\n     * @custom:error OperationCausesLiquidation if the operation would make the account unsafe\\n     * @custom:error TransferFromUserFailed if seed amount transfer from user fails\\n     * @custom:error MintBehalfFailed if mint behalf operation fails\\n     * @custom:error BorrowBehalfFailed if borrow behalf operation fails\\n     */\\n    function enterSingleAssetLeverage(\\n        IVToken collateralMarket,\\n        uint256 collateralAmountSeed,\\n        uint256 collateralAmountToFlashLoan\\n    ) external;\\n\\n    /**\\n     * @notice Enters a leveraged position by borrowing assets and converting them to collateral\\n     * @dev This function uses flash loans to borrow assets, swaps them for collateral tokens,\\n     *      and supplies the collateral to the Venus protocol to amplify the user's position.\\n     *      The user must have delegated permission to this contract via the comptroller.\\n     *      Any remaining dust (both collateral and borrowed assets) after the operation is returned to the user.\\n     * @param collateralMarket The vToken market where collateral will be supplied (must not be vBNB)\\n     * @param collateralAmountSeed The initial amount of collateral the user provides (can be 0)\\n     * @param borrowedMarket The vToken market from which assets will be borrowed via flash loan (must not be vBNB)\\n     * @param borrowedAmountToFlashLoan The amount to borrow via flash loan for leverage\\n     * @param minAmountOutAfterSwap The minimum amount of collateral expected after swap (for slippage protection)\\n     * @param swapData Bytes containing swap instructions for converting borrowed assets to collateral\\n     * @custom:emits LeverageEntered\\n     * @custom:error IdenticalMarkets if collateral and borrow markets are the same\\n     * @custom:error NotAnApprovedDelegate if caller has not delegated to this contract\\n     * @custom:error AccrueInterestFailed if interest accrual fails on any market\\n     * @custom:error MarketNotListed if any market is not listed in Comptroller\\n     * @custom:error VBNBNotSupported if collateral or borrow market is vBNB\\n     * @custom:error OperationCausesLiquidation if the operation would make the account unsafe\\n     * @custom:error TransferFromUserFailed if seed amount transfer from user fails\\n     * @custom:error MintBehalfFailed if mint behalf operation fails\\n     * @custom:error BorrowBehalfFailed if borrow behalf operation fails\\n     * @custom:error TokenSwapCallFailed if token swap execution fails\\n     * @custom:error SlippageExceeded if collateral balance after swap is below minimum\\n     */\\n    function enterLeverage(\\n        IVToken collateralMarket,\\n        uint256 collateralAmountSeed,\\n        IVToken borrowedMarket,\\n        uint256 borrowedAmountToFlashLoan,\\n        uint256 minAmountOutAfterSwap,\\n        bytes calldata swapData\\n    ) external;\\n\\n    /**\\n     * @notice Enters a leveraged position by using existing borrowed assets and converting them to collateral\\n     * @dev This function uses flash loans to borrow additional assets, swaps the total borrowed amount\\n     *      for collateral tokens, and supplies the collateral to the Venus protocol to amplify the user's position.\\n     *      The user must have delegated permission to this contract via the comptroller.\\n     *      Any remaining dust (both collateral and borrowed assets) after the operation is returned to the user.\\n     * @param collateralMarket The vToken market where collateral will be supplied (must not be vBNB)\\n     * @param borrowedMarket The vToken market from which assets will be borrowed via flash loan (must not be vBNB)\\n     * @param borrowedAmountSeed The initial amount of borrowed assets the user provides (can be 0)\\n     * @param borrowedAmountToFlashLoan The additional amount to borrow via flash loan for leverage\\n     * @param minAmountOutAfterSwap The minimum amount of collateral expected after swap (for slippage protection)\\n     * @param swapData Bytes containing swap instructions for converting borrowed assets to collateral\\n     * @custom:emits LeverageEnteredFromBorrow\\n     * @custom:error IdenticalMarkets if collateral and borrow markets are the same\\n     * @custom:error NotAnApprovedDelegate if caller has not delegated to this contract\\n     * @custom:error AccrueInterestFailed if interest accrual fails on any market\\n     * @custom:error MarketNotListed if any market is not listed in Comptroller\\n     * @custom:error VBNBNotSupported if collateral or borrow market is vBNB\\n     * @custom:error OperationCausesLiquidation if the operation would make the account unsafe\\n     * @custom:error TransferFromUserFailed if seed amount transfer from user fails\\n     * @custom:error MintBehalfFailed if mint behalf operation fails\\n     * @custom:error BorrowBehalfFailed if borrow behalf operation fails\\n     * @custom:error TokenSwapCallFailed if token swap execution fails\\n     * @custom:error SlippageExceeded if collateral balance after swap is below minimum\\n     */\\n    function enterLeverageFromBorrow(\\n        IVToken collateralMarket,\\n        IVToken borrowedMarket,\\n        uint256 borrowedAmountSeed,\\n        uint256 borrowedAmountToFlashLoan,\\n        uint256 minAmountOutAfterSwap,\\n        bytes calldata swapData\\n    ) external;\\n\\n    /**\\n     * @notice Exits a leveraged position by redeeming collateral and repaying borrowed assets\\n     * @dev This function uses flash loans to temporarily repay debt, redeems collateral,\\n     *      swaps collateral for borrowed assets, and repays the flash loan. Any remaining\\n     *      dust (both collateral and borrowed assets) is returned to the user. This ensures\\n     *      users who swap more than required as protection against price volatility receive\\n     *      their excess tokens back.\\n     *\\n     *      The flash loan amount can exceed actual debt to account for interest accrual\\n     *      between transaction creation and mining. The contract caps repayment to actual\\n     *      debt and uses leftover funds toward flash loan repayment.\\n     *\\n     *      NOTE: No pre-operation safety check is performed because exiting leverage reduces\\n     *      debt exposure, which can only improve account health. Post-operation safety is\\n     *      still validated to ensure the final position is healthy.\\n     *\\n     *      IMPORTANT: If treasuryPercent() is nonzero, the user must provide a\\n     *      collateralAmountToRedeemForSwap that accounts for the treasury fee. Only\\n     *      (1 - treasuryPercent/1e18) of the redeemed amount is transferred to this contract.\\n     *      Required gross amount = netAmountNeeded * 1e18 / (1e18 - treasuryPercent)\\n     * @param collateralMarket The vToken market from which collateral will be redeemed (must not be vBNB)\\n     * @param collateralAmountToRedeemForSwap The gross amount of collateral to redeem (must account for treasury fee if nonzero)\\n     * @param borrowedMarket The vToken market where debt will be repaid via flash loan (must not be vBNB)\\n     * @param borrowedAmountToFlashLoan The amount to borrow via flash loan for debt repayment (can exceed actual debt)\\n     * @param minAmountOutAfterSwap The minimum amount of borrowed asset expected after swap (for slippage protection)\\n     * @param swapData Bytes containing swap instructions for converting collateral to borrowed assets\\n     * @custom:emits LeverageExited\\n     * @custom:error IdenticalMarkets if collateral and borrow markets are the same\\n     * @custom:error NotAnApprovedDelegate if caller has not delegated to this contract\\n     * @custom:error MarketNotListed if any market is not listed in Comptroller\\n     * @custom:error VBNBNotSupported if collateral or borrow market is vBNB\\n     * @custom:error OperationCausesLiquidation if the operation would make the account unsafe\\n     * @custom:error RepayBehalfFailed if repay operation fails\\n     * @custom:error RedeemBehalfFailed if redeem operation fails\\n     * @custom:error TokenSwapCallFailed if token swap execution fails\\n     * @custom:error SlippageExceeded if swap output is below minimum required\\n     * @custom:error InsufficientFundsToRepayFlashloan if insufficient funds to repay flash loan\\n     */\\n    function exitLeverage(\\n        IVToken collateralMarket,\\n        uint256 collateralAmountToRedeemForSwap,\\n        IVToken borrowedMarket,\\n        uint256 borrowedAmountToFlashLoan,\\n        uint256 minAmountOutAfterSwap,\\n        bytes calldata swapData\\n    ) external;\\n\\n    /**\\n     * @notice Exits a leveraged position when collateral and borrowed assets are the same token\\n     * @dev This function uses flash loans to temporarily repay debt, redeems collateral,\\n     *      and repays the flash loan without requiring token swaps. This is more gas-efficient\\n     *      than exitLeverage when dealing with single-asset positions. Any remaining collateral\\n     *      dust after the operation is returned to the user.\\n     *\\n     *      The flash loan amount can exceed actual debt to account for interest accrual\\n     *      between transaction creation and mining. The contract caps repayment to actual\\n     *      debt and uses leftover funds toward flash loan repayment.\\n     *\\n     *      If treasuryPercent() is nonzero, the contract automatically adjusts the redeem\\n     *      amount to ensure sufficient funds are received to repay the flash loan after the\\n     *      treasury fee deduction.\\n     *\\n     *      NOTE: No pre-operation safety check is performed because exiting leverage reduces\\n     *      debt exposure, which can only improve account health. Post-operation safety is\\n     *      still validated to ensure the final position is healthy.\\n     * @param collateralMarket The vToken market for both collateral and borrowed asset (must not be vBNB)\\n     * @param collateralAmountToFlashLoan The amount to borrow via flash loan for debt repayment (can exceed actual debt)\\n     * @custom:emits SingleAssetLeverageExited\\n     * @custom:error NotAnApprovedDelegate if caller has not delegated to this contract\\n     * @custom:error MarketNotListed if the market is not listed in Comptroller\\n     * @custom:error VBNBNotSupported if the market is vBNB\\n     * @custom:error OperationCausesLiquidation if the operation would make the account unsafe\\n     * @custom:error RepayBehalfFailed if repay operation fails\\n     * @custom:error RedeemBehalfFailed if redeem operation fails\\n     * @custom:error InsufficientFundsToRepayFlashloan if insufficient funds to repay flash loan\\n     */\\n    function exitSingleAssetLeverage(IVToken collateralMarket, uint256 collateralAmountToFlashLoan) external;\\n}\\n\",\"keccak256\":\"0x3f23cd2776950188bfe1e3f32a77ad71860cf2996c0df1abff87f86e3da4b4f9\",\"license\":\"BSD-3-Clause\"},\"contracts/LeverageManager/LeverageStrategiesManager.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.28;\\n\\nimport { Ownable2StepUpgradeable } from \\\"@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol\\\";\\nimport { ReentrancyGuardUpgradeable } from \\\"@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol\\\";\\nimport {\\n    SafeERC20Upgradeable,\\n    IERC20Upgradeable\\n} from \\\"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\\\";\\n\\nimport { IVToken, IComptroller, IFlashLoanReceiver } from \\\"../Interfaces.sol\\\";\\nimport { SwapHelper } from \\\"../SwapHelper/SwapHelper.sol\\\";\\n\\nimport { ILeverageStrategiesManager } from \\\"./ILeverageStrategiesManager.sol\\\";\\n\\n/**\\n * @title LeverageStrategiesManager\\n * @author Venus Protocol\\n * @notice Contract for managing leveraged positions using flash loans and token swaps\\n */\\ncontract LeverageStrategiesManager is\\n    Ownable2StepUpgradeable,\\n    ReentrancyGuardUpgradeable,\\n    IFlashLoanReceiver,\\n    ILeverageStrategiesManager\\n{\\n    using SafeERC20Upgradeable for IERC20Upgradeable;\\n\\n    /// @dev Success return value for VToken operations (mint, borrow, repay, redeem)\\n    uint256 private constant SUCCESS = 0;\\n\\n    /// @dev Mantissa for fixed-point arithmetic (1e18 = 100%)\\n    uint256 private constant MANTISSA_ONE = 1e18;\\n\\n    /// @notice The Venus comptroller contract for market interactions and flash loans execution\\n    IComptroller public immutable COMPTROLLER;\\n\\n    /// @notice The swap helper contract for executing token swaps during leverage operations\\n    SwapHelper public immutable swapHelper;\\n\\n    /// @notice The vBNB market address (not supported for leverage operations)\\n    IVToken public immutable vBNB;\\n\\n    /// @dev Transient (EIP-1153): Cleared at transaction end. Tracks operation type during flash loan callback.\\n    OperationType transient operationType;\\n\\n    /// @dev Transient (EIP-1153): Cleared at transaction end. Stores msg.sender for flash loan callback context.\\n    address transient operationInitiator;\\n\\n    /// @dev Transient (EIP-1153): Cleared at transaction end. Stores collateral market for flash loan callback.\\n    IVToken transient collateralMarket;\\n\\n    /// @dev Transient (EIP-1153): Cleared at transaction end. Stores collateral seed (enter) or redeem amount (exit).\\n    uint256 transient collateralAmount;\\n\\n    /// @dev Transient (EIP-1153): Cleared at transaction end. Stores borrowed amount seed for enterLeverageFromBorrow.\\n    uint256 transient borrowedAmountSeed;\\n\\n    /// @dev Transient (EIP-1153): Cleared at transaction end. Stores minimum expected output after swap.\\n    uint256 transient minAmountOutAfterSwap;\\n\\n    /**\\n     * @notice Contract constructor\\n     * @dev Sets immutable variables and disables initializers for the implementation contract\\n     * @param _comptroller The Venus comptroller contract address\\n     * @param _swapHelper The swap helper contract address\\n     * @param _vBNB The vBNB market address (not supported for leverage operations)\\n     * @custom:oz-upgrades-unsafe-allow constructor\\n     */\\n    constructor(IComptroller _comptroller, SwapHelper _swapHelper, IVToken _vBNB) {\\n        if (address(_comptroller) == address(0) || address(_swapHelper) == address(0) || address(_vBNB) == address(0)) {\\n            revert ZeroAddress();\\n        }\\n\\n        COMPTROLLER = _comptroller;\\n        swapHelper = _swapHelper;\\n        vBNB = _vBNB;\\n        _disableInitializers();\\n    }\\n\\n    /**\\n     * @notice Initializes the contract\\n     * @dev Sets up the Ownable2Step functionality. Can only be called once.\\n     */\\n    function initialize() external initializer {\\n        __Ownable2Step_init();\\n        __ReentrancyGuard_init();\\n    }\\n\\n    /// @inheritdoc ILeverageStrategiesManager\\n    function enterSingleAssetLeverage(\\n        IVToken _collateralMarket,\\n        uint256 _collateralAmountSeed,\\n        uint256 _collateralAmountToFlashLoan\\n    ) external {\\n        if (_collateralAmountToFlashLoan == 0) revert ZeroFlashLoanAmount();\\n        _checkMarketSupported(_collateralMarket);\\n\\n        _checkUserDelegated();\\n\\n        _accrueInterest(_collateralMarket);\\n\\n        _validateAndEnterMarket(msg.sender, _collateralMarket);\\n        _checkAccountSafe(msg.sender);\\n\\n        _transferSeedAmountFromUser(_collateralMarket, msg.sender, _collateralAmountSeed);\\n\\n        operationInitiator = msg.sender;\\n        operationType = OperationType.ENTER_SINGLE_ASSET;\\n        collateralAmount = _collateralAmountSeed;\\n\\n        IVToken[] memory borrowedMarkets = new IVToken[](1);\\n        borrowedMarkets[0] = _collateralMarket;\\n        uint256[] memory flashLoanAmounts = new uint256[](1);\\n        flashLoanAmounts[0] = _collateralAmountToFlashLoan;\\n\\n        COMPTROLLER.executeFlashLoan(\\n            payable(msg.sender),\\n            payable(address(this)),\\n            borrowedMarkets,\\n            flashLoanAmounts,\\n            \\\"\\\"\\n        );\\n\\n        _checkAccountSafe(msg.sender);\\n\\n        emit SingleAssetLeverageEntered(\\n            msg.sender,\\n            _collateralMarket,\\n            _collateralAmountSeed,\\n            _collateralAmountToFlashLoan\\n        );\\n\\n        _transferDustToInitiator(_collateralMarket);\\n    }\\n\\n    /// @inheritdoc ILeverageStrategiesManager\\n    function enterLeverage(\\n        IVToken _collateralMarket,\\n        uint256 _collateralAmountSeed,\\n        IVToken _borrowedMarket,\\n        uint256 _borrowedAmountToFlashLoan,\\n        uint256 _minAmountOutAfterSwap,\\n        bytes calldata _swapData\\n    ) external {\\n        if (_borrowedAmountToFlashLoan == 0) revert ZeroFlashLoanAmount();\\n        if (_collateralMarket == _borrowedMarket) revert IdenticalMarkets();\\n        _checkMarketSupported(_collateralMarket);\\n        _checkMarketSupported(_borrowedMarket);\\n\\n        _checkUserDelegated();\\n\\n        _accrueInterest(_collateralMarket);\\n        _accrueInterest(_borrowedMarket);\\n\\n        _validateAndEnterMarket(msg.sender, _collateralMarket);\\n        _checkAccountSafe(msg.sender);\\n\\n        _transferSeedAmountFromUser(_collateralMarket, msg.sender, _collateralAmountSeed);\\n\\n        operationInitiator = msg.sender;\\n        collateralMarket = _collateralMarket;\\n        collateralAmount = _collateralAmountSeed;\\n        minAmountOutAfterSwap = _minAmountOutAfterSwap;\\n        operationType = OperationType.ENTER_COLLATERAL;\\n\\n        IVToken[] memory borrowedMarkets = new IVToken[](1);\\n        borrowedMarkets[0] = _borrowedMarket;\\n        uint256[] memory flashLoanAmounts = new uint256[](1);\\n        flashLoanAmounts[0] = _borrowedAmountToFlashLoan;\\n\\n        COMPTROLLER.executeFlashLoan(\\n            payable(msg.sender),\\n            payable(address(this)),\\n            borrowedMarkets,\\n            flashLoanAmounts,\\n            _swapData\\n        );\\n\\n        _checkAccountSafe(msg.sender);\\n\\n        emit LeverageEntered(\\n            msg.sender,\\n            _collateralMarket,\\n            _collateralAmountSeed,\\n            _borrowedMarket,\\n            _borrowedAmountToFlashLoan\\n        );\\n\\n        _transferDustToInitiator(_collateralMarket);\\n        _transferDustToInitiator(_borrowedMarket);\\n    }\\n\\n    /// @inheritdoc ILeverageStrategiesManager\\n    function enterLeverageFromBorrow(\\n        IVToken _collateralMarket,\\n        IVToken _borrowedMarket,\\n        uint256 _borrowedAmountSeed,\\n        uint256 _borrowedAmountToFlashLoan,\\n        uint256 _minAmountOutAfterSwap,\\n        bytes calldata _swapData\\n    ) external {\\n        if (_borrowedAmountToFlashLoan == 0) revert ZeroFlashLoanAmount();\\n        if (_collateralMarket == _borrowedMarket) revert IdenticalMarkets();\\n        _checkMarketSupported(_collateralMarket);\\n        _checkMarketSupported(_borrowedMarket);\\n\\n        _checkUserDelegated();\\n\\n        _accrueInterest(_collateralMarket);\\n        _accrueInterest(_borrowedMarket);\\n\\n        _validateAndEnterMarket(msg.sender, _collateralMarket);\\n        _checkAccountSafe(msg.sender);\\n\\n        _transferSeedAmountFromUser(_borrowedMarket, msg.sender, _borrowedAmountSeed);\\n\\n        operationInitiator = msg.sender;\\n        collateralMarket = _collateralMarket;\\n        borrowedAmountSeed = _borrowedAmountSeed;\\n        minAmountOutAfterSwap = _minAmountOutAfterSwap;\\n        operationType = OperationType.ENTER_BORROW;\\n\\n        IVToken[] memory borrowedMarkets = new IVToken[](1);\\n        borrowedMarkets[0] = _borrowedMarket;\\n        uint256[] memory flashLoanAmounts = new uint256[](1);\\n        flashLoanAmounts[0] = _borrowedAmountToFlashLoan;\\n\\n        COMPTROLLER.executeFlashLoan(\\n            payable(msg.sender),\\n            payable(address(this)),\\n            borrowedMarkets,\\n            flashLoanAmounts,\\n            _swapData\\n        );\\n\\n        _checkAccountSafe(msg.sender);\\n\\n        emit LeverageEnteredFromBorrow(\\n            msg.sender,\\n            _collateralMarket,\\n            _borrowedMarket,\\n            _borrowedAmountSeed,\\n            _borrowedAmountToFlashLoan\\n        );\\n\\n        _transferDustToInitiator(_collateralMarket);\\n        _transferDustToInitiator(_borrowedMarket);\\n    }\\n\\n    /// @inheritdoc ILeverageStrategiesManager\\n    function exitLeverage(\\n        IVToken _collateralMarket,\\n        uint256 _collateralAmountToRedeemForSwap,\\n        IVToken _borrowedMarket,\\n        uint256 _borrowedAmountToFlashLoan,\\n        uint256 _minAmountOutAfterSwap,\\n        bytes calldata _swapData\\n    ) external {\\n        if (_borrowedAmountToFlashLoan == 0) revert ZeroFlashLoanAmount();\\n        if (_collateralMarket == _borrowedMarket) revert IdenticalMarkets();\\n        _checkMarketSupported(_collateralMarket);\\n        _checkMarketSupported(_borrowedMarket);\\n\\n        _checkUserDelegated();\\n\\n        operationInitiator = msg.sender;\\n        collateralMarket = _collateralMarket;\\n        collateralAmount = _collateralAmountToRedeemForSwap;\\n        minAmountOutAfterSwap = _minAmountOutAfterSwap;\\n        operationType = OperationType.EXIT_COLLATERAL;\\n\\n        IVToken[] memory borrowedMarkets = new IVToken[](1);\\n        borrowedMarkets[0] = _borrowedMarket;\\n        uint256[] memory flashLoanAmounts = new uint256[](1);\\n        flashLoanAmounts[0] = _borrowedAmountToFlashLoan;\\n\\n        COMPTROLLER.executeFlashLoan(\\n            payable(msg.sender),\\n            payable(address(this)),\\n            borrowedMarkets,\\n            flashLoanAmounts,\\n            _swapData\\n        );\\n\\n        _checkAccountSafe(msg.sender);\\n\\n        emit LeverageExited(\\n            msg.sender,\\n            _collateralMarket,\\n            _collateralAmountToRedeemForSwap,\\n            _borrowedMarket,\\n            _borrowedAmountToFlashLoan\\n        );\\n\\n        _transferDustToInitiator(_collateralMarket);\\n        _transferDustToInitiator(_borrowedMarket);\\n    }\\n\\n    /// @inheritdoc ILeverageStrategiesManager\\n    function exitSingleAssetLeverage(IVToken _collateralMarket, uint256 _collateralAmountToFlashLoan) external {\\n        if (_collateralAmountToFlashLoan == 0) revert ZeroFlashLoanAmount();\\n        _checkMarketSupported(_collateralMarket);\\n        _checkUserDelegated();\\n\\n        operationInitiator = msg.sender;\\n        collateralMarket = _collateralMarket;\\n        operationType = OperationType.EXIT_SINGLE_ASSET;\\n\\n        IVToken[] memory borrowedMarkets = new IVToken[](1);\\n        borrowedMarkets[0] = _collateralMarket;\\n        uint256[] memory flashLoanAmounts = new uint256[](1);\\n        flashLoanAmounts[0] = _collateralAmountToFlashLoan;\\n\\n        COMPTROLLER.executeFlashLoan(\\n            payable(msg.sender),\\n            payable(address(this)),\\n            borrowedMarkets,\\n            flashLoanAmounts,\\n            \\\"\\\"\\n        );\\n\\n        _checkAccountSafe(msg.sender);\\n\\n        emit SingleAssetLeverageExited(msg.sender, _collateralMarket, _collateralAmountToFlashLoan);\\n\\n        _transferDustToInitiator(_collateralMarket);\\n    }\\n\\n    /**\\n     * @notice Flash loan callback entrypoint called by Comptroller\\n     * @dev Protected by nonReentrant modifier to prevent reentrancy attacks during flash loan execution\\n     * @param vTokens Array with the borrowed vToken market (single element)\\n     * @param amounts Array with the borrowed underlying amount (single element)\\n     * @param premiums Array with the flash loan fee amount (single element)\\n     * @param initiator The address that initiated the flash loan (must be this contract)\\n     * @param onBehalf The user for whom debt will be opened\\n     * @param param Encoded auxiliary data for the operation (e.g., swap multicall)\\n     * @return success Whether the execution succeeded\\n     * @return repayAmounts Amounts to approve for flash loan repayment\\n     * @custom:error InitiatorMismatch When initiator is not this contract\\n     * @custom:error OnBehalfMismatch When onBehalf is not the operation initiator\\n     * @custom:error UnauthorizedExecutor When caller is not the Comptroller\\n     * @custom:error FlashLoanAssetOrAmountMismatch When array lengths mismatch or > 1 element\\n     * @custom:error InvalidExecuteOperation When operation type is unknown\\n     */\\n    function executeOperation(\\n        IVToken[] calldata vTokens,\\n        uint256[] calldata amounts,\\n        uint256[] calldata premiums,\\n        address initiator,\\n        address onBehalf,\\n        bytes calldata param\\n    ) external override nonReentrant returns (bool success, uint256[] memory repayAmounts) {\\n        // Only the Comptroller can invoke this callback during flash loan execution\\n        if (msg.sender != address(COMPTROLLER)) {\\n            revert UnauthorizedExecutor();\\n        }\\n\\n        // Flash loan must be initiated by this contract to prevent unauthorized callbacks\\n        if (initiator != address(this)) {\\n            revert InitiatorMismatch();\\n        }\\n\\n        // The flash loan beneficiary must match the user who called the entry function\\n        if (onBehalf != operationInitiator) {\\n            revert OnBehalfMismatch();\\n        }\\n\\n        // This contract only supports single-market flash loans\\n        if (vTokens.length != 1 || amounts.length != 1 || premiums.length != 1) {\\n            revert FlashLoanAssetOrAmountMismatch();\\n        }\\n\\n        repayAmounts = new uint256[](1);\\n        if (operationType == OperationType.ENTER_SINGLE_ASSET) {\\n            repayAmounts[0] = _handleEnterSingleAsset(onBehalf, vTokens[0], amounts[0], premiums[0]);\\n        } else if (operationType == OperationType.ENTER_COLLATERAL) {\\n            repayAmounts[0] = _handleEnterCollateral(onBehalf, vTokens[0], amounts[0], premiums[0], param);\\n        } else if (operationType == OperationType.ENTER_BORROW) {\\n            repayAmounts[0] = _handleEnterBorrow(onBehalf, vTokens[0], amounts[0], premiums[0], param);\\n        } else if (operationType == OperationType.EXIT_COLLATERAL) {\\n            repayAmounts[0] = _handleExitCollateral(onBehalf, vTokens[0], amounts[0], premiums[0], param);\\n        } else if (operationType == OperationType.EXIT_SINGLE_ASSET) {\\n            repayAmounts[0] = _handleExitSingleAsset(onBehalf, vTokens[0], amounts[0], premiums[0]);\\n        } else {\\n            revert InvalidExecuteOperation();\\n        }\\n\\n        return (true, repayAmounts);\\n    }\\n\\n    /**\\n     * @notice Executes the enter leveraged position with single collateral operation during flash loan callback\\n     * @dev This function performs the following steps:\\n     *      1. Combines flash loaned collateral with user's seed collateral\\n     *      2. Supplies all collateral to the Venus market on behalf of the user\\n     *      3. Borrows the repayment amount (fees) on behalf of the user\\n     *      4. Approves the collateral asset for repayment to the flash loan\\n     * @param onBehalf Address on whose behalf the operation is performed\\n     * @param market The vToken market for the collateral asset\\n     * @param flashloanedCollateralAmount The amount of collateral assets received from flash loan\\n     * @param collateralAmountFees The fees to be paid on the flash loaned collateral amount\\n     * @return flashLoanRepayAmount The total amount of collateral assets to repay (fees only)\\n     * @custom:error MintBehalfFailed if mint behalf operation fails\\n     * @custom:error BorrowBehalfFailed if borrow behalf operation fails\\n     * @custom:error InsufficientFundsToRepayFlashloan if insufficient funds are available to repay the flash loan\\n     */\\n    function _handleEnterSingleAsset(\\n        address onBehalf,\\n        IVToken market,\\n        uint256 flashloanedCollateralAmount,\\n        uint256 collateralAmountFees\\n    ) internal returns (uint256 flashLoanRepayAmount) {\\n        IERC20Upgradeable collateralAsset = IERC20Upgradeable(market.underlying());\\n\\n        uint256 totalCollateralAmountToMint = flashloanedCollateralAmount + collateralAmount;\\n        collateralAsset.forceApprove(address(market), totalCollateralAmountToMint);\\n\\n        uint256 err = market.mintBehalf(onBehalf, totalCollateralAmountToMint);\\n        if (err != SUCCESS) {\\n            revert MintBehalfFailed(err);\\n        }\\n\\n        flashLoanRepayAmount = _borrowAndRepayFlashLoanFee(onBehalf, market, collateralAsset, collateralAmountFees);\\n    }\\n\\n    /**\\n     * @notice Executes the enter leveraged position operation during flash loan callback\\n     * @dev This function performs the following steps:\\n     *      1. Swaps flash loaned borrowed assets for collateral assets\\n     *      2. Supplies all collateral received from swap plus seed to the Venus market on behalf of the user\\n     *      3. Borrows the repayment amount on behalf of the user\\n     *      4. Approves the borrowed asset for repayment to the flash loan\\n     * @param onBehalf Address on whose behalf the operation is performed\\n     * @param borrowMarket The vToken market from which assets were borrowed\\n     * @param borrowedAssetAmount The amount of borrowed assets received from flash loan\\n     * @param borrowedAssetFees The fees to be paid on the borrowed asset amount\\n     * @param swapCallData The encoded swap instructions for converting borrowed to collateral assets\\n     * @return flashLoanRepayAmount The total amount of borrowed assets to repay (fees only)\\n     * @custom:error MintBehalfFailed if mint behalf operation fails\\n     * @custom:error BorrowBehalfFailed if borrow behalf operation fails\\n     * @custom:error TokenSwapCallFailed if token swap execution fails\\n     * @custom:error SlippageExceeded if collateral balance after swap is below minimum\\n     */\\n    function _handleEnterCollateral(\\n        address onBehalf,\\n        IVToken borrowMarket,\\n        uint256 borrowedAssetAmount,\\n        uint256 borrowedAssetFees,\\n        bytes calldata swapCallData\\n    ) internal returns (uint256 flashLoanRepayAmount) {\\n        IERC20Upgradeable borrowedAsset = IERC20Upgradeable(borrowMarket.underlying());\\n\\n        // Cache transient storage reads for variables used more than once to save gas\\n        IVToken _collateralMarket = collateralMarket;\\n        uint256 _minAmountOutAfterSwap = minAmountOutAfterSwap;\\n\\n        IERC20Upgradeable collateralAsset = IERC20Upgradeable(_collateralMarket.underlying());\\n        uint256 swappedCollateralAmountOut = _performSwap(\\n            borrowedAsset,\\n            borrowedAssetAmount,\\n            collateralAsset,\\n            _minAmountOutAfterSwap,\\n            swapCallData\\n        );\\n\\n        uint256 collateralAmountToMint = swappedCollateralAmountOut + collateralAmount;\\n        collateralAsset.forceApprove(address(_collateralMarket), collateralAmountToMint);\\n\\n        uint256 err = _collateralMarket.mintBehalf(onBehalf, collateralAmountToMint);\\n        if (err != SUCCESS) {\\n            revert MintBehalfFailed(err);\\n        }\\n\\n        flashLoanRepayAmount = _borrowAndRepayFlashLoanFee(onBehalf, borrowMarket, borrowedAsset, borrowedAssetFees);\\n    }\\n\\n    /**\\n     * @notice Executes the enter leveraged position with borrowed assets operation during flash loan callback\\n     * @dev This function performs the following steps:\\n     *      1. Swaps the total borrowed assets (seed + flash loan) for collateral assets\\n     *      2. Supplies all collateral received from swap to the Venus market on behalf of the user\\n     *      3. Borrows the repayment amount on behalf of the user\\n     *      4. Approves the borrowed asset for repayment to the flash loan\\n     * @param onBehalf Address on whose behalf the operation is performed\\n     * @param borrowMarket The vToken market from which assets were borrowed\\n     * @param borrowedAssetAmount The amount of borrowed assets received from flash loan\\n     * @param borrowedAssetFees The fees to be paid on the borrowed asset amount\\n     * @param swapCallData The encoded swap instructions for converting borrowed to collateral assets\\n     * @return flashLoanRepayAmount The total amount of borrowed assets to repay (fees only)\\n     * @custom:error MintBehalfFailed if mint behalf operation fails\\n     * @custom:error BorrowBehalfFailed if borrow behalf operation fails\\n     * @custom:error TokenSwapCallFailed if token swap execution fails\\n     * @custom:error SlippageExceeded if collateral balance after swap is below minimum\\n     */\\n    function _handleEnterBorrow(\\n        address onBehalf,\\n        IVToken borrowMarket,\\n        uint256 borrowedAssetAmount,\\n        uint256 borrowedAssetFees,\\n        bytes calldata swapCallData\\n    ) internal returns (uint256 flashLoanRepayAmount) {\\n        IERC20Upgradeable borrowedAsset = IERC20Upgradeable(borrowMarket.underlying());\\n\\n        // Cache transient storage reads for variables used more than once to save gas\\n        IVToken _collateralMarket = collateralMarket;\\n        uint256 _minAmountOutAfterSwap = minAmountOutAfterSwap;\\n\\n        IERC20Upgradeable collateralAsset = IERC20Upgradeable(_collateralMarket.underlying());\\n\\n        uint256 totalBorrowedAmountToSwap = borrowedAmountSeed + borrowedAssetAmount;\\n\\n        uint256 swappedCollateralAmountOut = _performSwap(\\n            borrowedAsset,\\n            totalBorrowedAmountToSwap,\\n            collateralAsset,\\n            _minAmountOutAfterSwap,\\n            swapCallData\\n        );\\n\\n        collateralAsset.forceApprove(address(_collateralMarket), swappedCollateralAmountOut);\\n\\n        uint256 err = _collateralMarket.mintBehalf(onBehalf, swappedCollateralAmountOut);\\n        if (err != SUCCESS) {\\n            revert MintBehalfFailed(err);\\n        }\\n\\n        flashLoanRepayAmount = _borrowAndRepayFlashLoanFee(onBehalf, borrowMarket, borrowedAsset, borrowedAssetFees);\\n    }\\n\\n    /**\\n     * @notice Executes the exit leveraged position operation during flash loan callback\\n     * @dev This function performs the following steps:\\n     *      1. Queries actual debt and caps repayment to min(flashLoanAmount, actualDebt)\\n     *         to handle cases where UI flash loans slightly more than current debt\\n     *      2. Repays user's debt (up to actual debt amount) in the borrowed market\\n     *      3. Calculates redeem amount accounting for treasury fee (if any)\\n     *      4. Redeems specified amount of collateral from the Venus market\\n     *      5. Swaps actual received collateral (after treasury fee) for borrowed assets\\n     *      6. Validates total borrowed asset balance (swap output + excess flash loan funds)\\n     *         is sufficient to repay flash loan, then approves repayment\\n     *\\n     * @param onBehalf Address on whose behalf the operation is performed\\n     * @param borrowMarket The vToken market from which assets were borrowed via flash loan\\n     * @param borrowedAssetAmountToRepayFromFlashLoan The amount borrowed via flash loan for debt repayment\\n     * @param borrowedAssetFees The fees to be paid on the borrowed asset amount\\n     * @param swapCallData The encoded swap instructions for converting collateral to borrowed assets\\n     * @return flashLoanRepayAmount The total amount of borrowed assets to repay\\n     * @custom:error RepayBehalfFailed if repayment of borrowed assets fails\\n     * @custom:error RedeemBehalfFailed if redeem operations fail\\n     * @custom:error TokenSwapCallFailed if token swap execution fails\\n     * @custom:error SlippageExceeded if swap output is below minimum required\\n     * @custom:error InsufficientFundsToRepayFlashloan if insufficient funds are available to repay the flash loan\\n     */\\n    function _handleExitCollateral(\\n        address onBehalf,\\n        IVToken borrowMarket,\\n        uint256 borrowedAssetAmountToRepayFromFlashLoan,\\n        uint256 borrowedAssetFees,\\n        bytes calldata swapCallData\\n    ) internal returns (uint256 flashLoanRepayAmount) {\\n        IERC20Upgradeable borrowedAsset = IERC20Upgradeable(borrowMarket.underlying());\\n\\n        {\\n            uint256 borrowedTotalDebtAmount = borrowMarket.borrowBalanceCurrent(onBehalf);\\n            uint256 repayAmount = borrowedAssetAmountToRepayFromFlashLoan > borrowedTotalDebtAmount\\n                ? borrowedTotalDebtAmount\\n                : borrowedAssetAmountToRepayFromFlashLoan;\\n\\n            borrowedAsset.forceApprove(address(borrowMarket), repayAmount);\\n            uint256 err = borrowMarket.repayBorrowBehalf(onBehalf, repayAmount);\\n\\n            if (err != SUCCESS) {\\n                revert RepayBehalfFailed(err);\\n            }\\n        }\\n\\n        // Cache transient storage reads for variables used more than once to save gas\\n        IVToken _collateralMarket = collateralMarket;\\n        uint256 collateralAmountToRedeem = collateralAmount;\\n\\n        {\\n            uint256 treasuryPercent = COMPTROLLER.treasuryPercent();\\n            uint256 redeemAmount = treasuryPercent > 0\\n                ? (collateralAmountToRedeem * MANTISSA_ONE + (MANTISSA_ONE - treasuryPercent) - 1) /\\n                    (MANTISSA_ONE - treasuryPercent)\\n                : collateralAmountToRedeem;\\n\\n            uint256 err = _collateralMarket.redeemUnderlyingBehalf(onBehalf, redeemAmount);\\n            if (err != SUCCESS) {\\n                revert RedeemBehalfFailed(err);\\n            }\\n        }\\n\\n        IERC20Upgradeable collateralAsset = IERC20Upgradeable(_collateralMarket.underlying());\\n\\n        _performSwap(\\n            collateralAsset,\\n            collateralAsset.balanceOf(address(this)),\\n            borrowedAsset,\\n            minAmountOutAfterSwap,\\n            swapCallData\\n        );\\n\\n        flashLoanRepayAmount = borrowedAssetAmountToRepayFromFlashLoan + borrowedAssetFees;\\n\\n        if (borrowedAsset.balanceOf(address(this)) < flashLoanRepayAmount) {\\n            revert InsufficientFundsToRepayFlashloan();\\n        }\\n\\n        borrowedAsset.forceApprove(address(borrowMarket), flashLoanRepayAmount);\\n    }\\n\\n    /**\\n     * @notice Executes the exit leveraged position with single collateral operation during flash loan callback\\n     * @dev This function performs the following steps:\\n     *      1. Queries actual debt and caps repayment to min(flashLoanAmount, actualDebt)\\n     *         to handle cases where UI flash loans slightly more than current debt\\n     *      2. Repays user's debt (up to actual debt amount) in the market\\n     *      3. Calculates redeem amount accounting for treasury fee (if any)\\n     *      4. Caps redeem amount to user's actual collateral balance to prevent revert\\n     *         when user entered with zero seed (collateral equals borrowed amount)\\n     *      5. Redeems collateral (up to user's balance) to repay flash loan\\n     *      6. Approves the collateral asset for repayment to the flash loan\\n     * @param onBehalf Address on whose behalf the operation is performed\\n     * @param market The vToken market for both collateral and borrowed assets\\n     * @param flashloanedCollateralAmount The amount borrowed via flash loan for debt repayment\\n     * @param collateralAmountFees The fees to be paid on the flash loaned collateral amount\\n     * @return flashLoanRepayAmount The total amount of collateral assets to repay\\n     * @custom:error RepayBehalfFailed if repayment of borrowed assets fails\\n     * @custom:error RedeemBehalfFailed if redeem operations fail\\n     * @custom:error InsufficientFundsToRepayFlashloan if insufficient funds are available to repay the flash loan\\n     */\\n    function _handleExitSingleAsset(\\n        address onBehalf,\\n        IVToken market,\\n        uint256 flashloanedCollateralAmount,\\n        uint256 collateralAmountFees\\n    ) internal returns (uint256 flashLoanRepayAmount) {\\n        IERC20Upgradeable collateralAsset = IERC20Upgradeable(market.underlying());\\n\\n        uint256 marketTotalDebtAmount = market.borrowBalanceCurrent(onBehalf);\\n        uint256 repayAmount = flashloanedCollateralAmount > marketTotalDebtAmount\\n            ? marketTotalDebtAmount\\n            : flashloanedCollateralAmount;\\n\\n        collateralAsset.forceApprove(address(market), repayAmount);\\n        uint256 err = market.repayBorrowBehalf(onBehalf, repayAmount);\\n\\n        if (err != SUCCESS) {\\n            revert RepayBehalfFailed(err);\\n        }\\n\\n        flashLoanRepayAmount = flashloanedCollateralAmount + collateralAmountFees;\\n\\n        uint256 treasuryPercent = COMPTROLLER.treasuryPercent();\\n        uint256 redeemAmount = treasuryPercent > 0\\n            ? (flashLoanRepayAmount * MANTISSA_ONE + (MANTISSA_ONE - treasuryPercent) - 1) /\\n                (MANTISSA_ONE - treasuryPercent)\\n            : flashLoanRepayAmount;\\n\\n        uint256 userCollateralBalance = market.balanceOfUnderlying(onBehalf);\\n        if (redeemAmount > userCollateralBalance) {\\n            redeemAmount = userCollateralBalance;\\n        }\\n\\n        err = market.redeemUnderlyingBehalf(onBehalf, redeemAmount);\\n        if (err != SUCCESS) {\\n            revert RedeemBehalfFailed(err);\\n        }\\n\\n        if (collateralAsset.balanceOf(address(this)) < flashLoanRepayAmount) {\\n            revert InsufficientFundsToRepayFlashloan();\\n        }\\n\\n        collateralAsset.forceApprove(address(market), flashLoanRepayAmount);\\n    }\\n\\n    /**\\n     * @notice Performs token swap via the SwapHelper contract\\n     * @dev Transfers tokens to SwapHelper and executes the swap operation.\\n     *      The swap operation is expected to return the output tokens to this contract.\\n     * @param tokenIn The input token to be swapped\\n     * @param amountIn The amount of input tokens to swap\\n     * @param tokenOut The output token to receive from the swap\\n     * @param minAmountOut The minimum acceptable amount of output tokens\\n     * @param param The encoded swap instructions/calldata for the SwapHelper\\n     * @return amountOut The actual amount of output tokens received from the swap\\n     * @custom:error TokenSwapCallFailed if the swap execution fails\\n     * @custom:error SlippageExceeded if the swap output is below the minimum required\\n     */\\n    function _performSwap(\\n        IERC20Upgradeable tokenIn,\\n        uint256 amountIn,\\n        IERC20Upgradeable tokenOut,\\n        uint256 minAmountOut,\\n        bytes calldata param\\n    ) internal returns (uint256 amountOut) {\\n        tokenIn.safeTransfer(address(swapHelper), amountIn);\\n\\n        uint256 tokenOutBalanceBefore = tokenOut.balanceOf(address(this));\\n\\n        (bool success, ) = address(swapHelper).call(param);\\n        if (!success) {\\n            revert TokenSwapCallFailed();\\n        }\\n\\n        uint256 tokenOutBalanceAfter = tokenOut.balanceOf(address(this));\\n\\n        amountOut = tokenOutBalanceAfter - tokenOutBalanceBefore;\\n        if (amountOut < minAmountOut) {\\n            revert SlippageExceeded();\\n        }\\n\\n        return amountOut;\\n    }\\n\\n    /**\\n     * @notice Transfers tokens from the user to this contract if amount > 0\\n     * @dev If the specified amount is greater than zero, transfers tokens from the user.\\n     *      Reverts if the actual transferred amount does not match the expected amount.\\n     * @param market The vToken market whose underlying asset is to be transferred\\n     * @param user The address of the user to transfer tokens from\\n     * @param amount The amount of tokens to transfer\\n     * @custom:error TransferFromUserFailed if the transferred amount does not match the expected amount\\n     */\\n    function _transferSeedAmountFromUser(IVToken market, address user, uint256 amount) internal {\\n        if (amount > 0) {\\n            IERC20Upgradeable token = IERC20Upgradeable(market.underlying());\\n            token.safeTransferFrom(user, address(this), amount);\\n        }\\n    }\\n\\n    /**\\n     * @notice Transfers any remaining dust amounts back to the operation initiator\\n     * @dev This function returns small remaining balances to the user who initiated the operation.\\n     *      Should be called after leverage operations to ensure no funds are left in the contract.\\n     * @param market The vToken market whose underlying asset dust should be transferred\\n     */\\n    function _transferDustToInitiator(IVToken market) internal {\\n        IERC20Upgradeable asset = IERC20Upgradeable(market.underlying());\\n\\n        uint256 dustAmount = asset.balanceOf(address(this));\\n        if (dustAmount > 0) {\\n            // Cache transient storage read to save gas\\n            address _operationInitiator = operationInitiator;\\n            asset.safeTransfer(_operationInitiator, dustAmount);\\n            emit DustTransferred(_operationInitiator, address(asset), dustAmount);\\n        }\\n    }\\n\\n    /**\\n     * @notice Borrows assets on behalf of the user to repay the flash loan fee\\n     * @dev Borrows the total amount needed to repay the flash loan fee\\n     *      and approves the borrowed asset for repayment to the flash loan.\\n     * @param onBehalf Address on whose behalf assets will be borrowed\\n     * @param borrowMarket The vToken market from which assets will be borrowed\\n     * @param borrowedAsset The underlying asset being borrowed\\n     * @param borrowedAssetFees The fees to be paid on the borrowed asset amount\\n     * @return flashLoanRepayAmount The total amount of borrowed assets to repay (only fees)\\n     * @custom:error BorrowBehalfFailed if borrow behalf operation fails\\n     * @custom:error InsufficientFundsToRepayFlashloan if insufficient funds are available to repay the flash loan\\n     */\\n    function _borrowAndRepayFlashLoanFee(\\n        address onBehalf,\\n        IVToken borrowMarket,\\n        IERC20Upgradeable borrowedAsset,\\n        uint256 borrowedAssetFees\\n    ) internal returns (uint256 flashLoanRepayAmount) {\\n        flashLoanRepayAmount = borrowedAssetFees;\\n\\n        uint256 marketBalanceBeforeBorrow = borrowedAsset.balanceOf(address(borrowMarket));\\n        uint256 err = borrowMarket.borrowBehalf(onBehalf, flashLoanRepayAmount);\\n        if (err != SUCCESS) {\\n            revert BorrowBehalfFailed(err);\\n        }\\n        uint256 marketBalanceAfterBorrow = borrowedAsset.balanceOf(address(borrowMarket));\\n\\n        if (marketBalanceBeforeBorrow - marketBalanceAfterBorrow < flashLoanRepayAmount) {\\n            revert InsufficientFundsToRepayFlashloan();\\n        }\\n\\n        borrowedAsset.forceApprove(address(borrowMarket), flashLoanRepayAmount);\\n    }\\n\\n    /**\\n     * @notice Accrues interest on a vToken market\\n     * @dev Must be called before safety checks to ensure borrow balances reflect accumulated interest\\n     * @param market The vToken market to accrue interest on\\n     * @custom:error AccrueInterestFailed if the accrueInterest call returns a non-zero error code\\n     */\\n    function _accrueInterest(IVToken market) internal {\\n        uint256 err = market.accrueInterest();\\n        if (err != SUCCESS) revert AccrueInterestFailed(err);\\n    }\\n\\n    /**\\n     * @notice Ensures the user has entered the market before operations\\n     * @dev If user is not a member of market the function calls Comptroller to enter market on behalf of user\\n     * @param user The account for which membership is validated/updated\\n     * @param market The vToken market the user must enter\\n     * @custom:error EnterMarketFailed when Comptroller.enterMarketBehalf returns a non-zero error code\\n     */\\n    function _validateAndEnterMarket(address user, IVToken market) internal {\\n        if (!COMPTROLLER.checkMembership(user, market)) {\\n            uint256 err = COMPTROLLER.enterMarketBehalf(user, address(market));\\n            if (err != SUCCESS) revert EnterMarketFailed(err);\\n        }\\n    }\\n\\n    /**\\n     * @notice Checks if the caller has delegated this contract in the Comptroller\\n     * @custom:error NotAnApprovedDelegate if caller has not approved this contract as delegate\\n     */\\n    function _checkUserDelegated() internal view {\\n        if (!COMPTROLLER.approvedDelegates(msg.sender, address(this))) {\\n            revert NotAnApprovedDelegate();\\n        }\\n    }\\n\\n    /**\\n     * @notice Checks if a `user` account is safe from liquidation\\n     * @dev Verifies that the user's account has no liquidity shortfall and the comptroller\\n     *      returned no errors when calculating account liquidity. This ensures the account\\n     *      won't be immediately liquidatable after the leverage operation.\\n     * @param user The address to check account safety for\\n     * @custom:error OperationCausesLiquidation if the account has a liquidity shortfall or comptroller error\\n     */\\n    function _checkAccountSafe(address user) internal view {\\n        (uint256 err, , uint256 shortfall) = COMPTROLLER.getBorrowingPower(user);\\n        if (err != SUCCESS || shortfall > 0) revert OperationCausesLiquidation(err);\\n    }\\n\\n    /**\\n     * @notice Ensures that the given market is supported for leverage operations\\n     * @dev A market must be listed in the Comptroller and must not be vBNB.\\n     *      vBNB is excluded because it uses native BNB which requires special handling\\n     *      that this contract does not support.\\n     * @param market The vToken address to validate\\n     * @custom:error MarketNotListed if the market is not listed in Comptroller\\n     * @custom:error VBNBNotSupported if the market is vBNB\\n     */\\n    function _checkMarketSupported(IVToken market) internal view {\\n        (bool isMarketListed, , ) = COMPTROLLER.markets(address(market));\\n        if (!isMarketListed) revert MarketNotListed(address(market));\\n        if (market == vBNB) revert VBNBNotSupported();\\n    }\\n}\\n\",\"keccak256\":\"0x2bf4ff1a3a2265f7e63431fc11766e3778051f5ebf11bccff39d8883e0347c9f\",\"license\":\"BSD-3-Clause\"},\"contracts/SwapHelper/SwapHelper.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.28;\\n\\nimport {\\n    SafeERC20Upgradeable,\\n    IERC20Upgradeable\\n} from \\\"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\\\";\\nimport { AddressUpgradeable } from \\\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\\\";\\nimport { EIP712 } from \\\"@openzeppelin/contracts/utils/cryptography/EIP712.sol\\\";\\nimport { ECDSA } from \\\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\\\";\\nimport { Ownable2Step } from \\\"@openzeppelin/contracts/access/Ownable2Step.sol\\\";\\nimport { ReentrancyGuard } from \\\"@openzeppelin/contracts/security/ReentrancyGuard.sol\\\";\\n\\n/**\\n * @title SwapHelper\\n * @author Venus Protocol\\n * @notice Helper contract for executing multiple token operations atomically\\n * @dev This contract provides utilities for managing approvals,\\n *      and executing arbitrary calls in a single transaction. It supports\\n *      signature verification using EIP-712 for backend-authorized operations.\\n *      All functions except multicall are designed to be called internally via multicall.\\n * @custom:security-contact security@venus.io\\n */\\ncontract SwapHelper is EIP712, Ownable2Step, ReentrancyGuard {\\n    using SafeERC20Upgradeable for IERC20Upgradeable;\\n    using AddressUpgradeable for address;\\n\\n    /// @notice EIP-712 typehash for Multicall struct used in signature verification\\n    /// @dev keccak256(\\\"Multicall(address caller,bytes[] calls,uint256 deadline,bytes32 salt)\\\")\\n    bytes32 internal constant MULTICALL_TYPEHASH =\\n        keccak256(\\\"Multicall(address caller,bytes[] calls,uint256 deadline,bytes32 salt)\\\");\\n\\n    /// @notice Address authorized to sign multicall operations\\n    /// @dev Can be updated by contract owner via setBackendSigner\\n    address public backendSigner;\\n\\n    /// @notice Mapping to track used salts for replay protection\\n    /// @dev Maps salt => bool to prevent reuse of same salt\\n    mapping(bytes32 => bool) public usedSalts;\\n\\n    /// @notice Error thrown when transaction deadline has passed\\n    /// @dev Emitted when block.timestamp > deadline in multicall\\n    error DeadlineReached();\\n\\n    /// @notice Error thrown when signature verification fails\\n    /// @dev Emitted when recovered signer doesn't match backendSigner\\n    error Unauthorized();\\n\\n    /// @notice Error thrown when zero address is provided as parameter\\n    /// @dev Used in constructor and setBackendSigner validation\\n    error ZeroAddress();\\n\\n    /// @notice Error thrown when salt has already been used\\n    /// @dev Prevents replay attacks by ensuring each salt is used only once\\n    error SaltAlreadyUsed();\\n\\n    /// @notice Error thrown when caller is not authorized\\n    /// @dev Only owner or contract itself can call protected functions\\n    error CallerNotAuthorized();\\n\\n    /// @notice Error thrown when no calls are provided to multicall\\n    /// @dev Emitted when calls array is empty in multicall\\n    error NoCallsProvided();\\n\\n    /// @notice Error thrown when signature is missing but required\\n    /// @dev Emitted when signature length is zero but verification is expected\\n    error MissingSignature();\\n\\n    /// @notice Event emitted when backend signer is updated\\n    /// @param oldSigner Previous backend signer address\\n    /// @param newSigner New backend signer address\\n    event BackendSignerUpdated(address indexed oldSigner, address indexed newSigner);\\n\\n    /// @notice Event emitted when multicall is successfully executed\\n    /// @param caller Address that initiated the multicall\\n    /// @param callsCount Number of calls executed in the batch\\n    /// @param deadline Deadline timestamp used for the operation\\n    /// @param salt Salt used for replay protection\\n    event MulticallExecuted(address indexed caller, uint256 callsCount, uint256 deadline, bytes32 salt);\\n\\n    /// @notice Event emitted when tokens are swept from the contract\\n    /// @param token Address of the token swept\\n    /// @param to Recipient address\\n    /// @param amount Amount of tokens swept\\n    event Swept(address indexed token, address indexed to, uint256 amount);\\n\\n    /// @notice Event emitted when maximum approval is granted\\n    /// @param token Address of the token approved\\n    /// @param spender Address granted the approval\\n    event ApprovedMax(address indexed token, address indexed spender);\\n\\n    /// @notice Event emitted when generic call is executed\\n    /// @param target Address of the contract called\\n    /// @param data Encoded function call data\\n    event GenericCallExecuted(address indexed target, bytes data);\\n\\n    /// @notice Constructor\\n    /// @param backendSigner_ Address authorized to sign multicall operations\\n    /// @dev Initializes EIP-712 domain with name \\\"VenusSwap\\\" and version \\\"1\\\"\\n    /// @dev Transfers ownership to msg.sender\\n    /// @dev Reverts with ZeroAddress if parameter is address(0)\\n    /// @custom:error ZeroAddress if backendSigner_ is address(0)\\n    constructor(address backendSigner_) EIP712(\\\"VenusSwap\\\", \\\"1\\\") {\\n        if (backendSigner_ == address(0)) {\\n            revert ZeroAddress();\\n        }\\n\\n        backendSigner = backendSigner_;\\n    }\\n\\n    /// @notice Modifier to restrict access to owner or contract itself\\n    /// @dev Reverts with CallerNotAuthorized if caller is neither owner nor this contract\\n    modifier onlyOwnerOrSelf() {\\n        if (msg.sender != owner() && msg.sender != address(this)) {\\n            revert CallerNotAuthorized();\\n        }\\n        _;\\n    }\\n\\n    /// @notice Multicall function to execute multiple calls in a single transaction.\\n    /// @param calls Array of encoded function calls to execute on this contract\\n    /// @param deadline Unix timestamp after which the transaction will revert\\n    /// @param salt Unique value to ensure this exact multicall can only be executed once\\n    /// @param signature EIP-712 signature from backend signer\\n    /// @dev All calls are executed atomically - if any call fails, entire transaction reverts\\n    /// @dev Calls must be to functions on this contract (address(this))\\n    /// @dev Protected by nonReentrant modifier to prevent reentrancy attacks\\n    /// @dev This function should be called as a part of a transaction that sends tokens to this contract and verifies if they received desired tokens after execution.\\n    /// @dev EOA that calls this function should not send tokens directly nor approve this contract to spend tokens on their behalf.\\n    /// @custom:event MulticallExecuted emitted upon successful execution\\n    /// @custom:security Only the contract itself can call sweep, approveMax, and genericCall\\n    /// @custom:error NoCallsProvided if calls array is empty\\n    /// @custom:error DeadlineReached if block.timestamp > deadline\\n    /// @custom:error SaltAlreadyUsed if salt has been used before\\n    /// @custom:error Unauthorized if signature verification fails\\n    /// @custom:error MissingSignature if signature is empty\\n    function multicall(\\n        bytes[] calldata calls,\\n        uint256 deadline,\\n        bytes32 salt,\\n        bytes calldata signature\\n    ) external nonReentrant {\\n        if (calls.length == 0) {\\n            revert NoCallsProvided();\\n        }\\n\\n        if (block.timestamp > deadline) {\\n            revert DeadlineReached();\\n        }\\n\\n        if (signature.length == 0) {\\n            revert MissingSignature();\\n        }\\n        if (usedSalts[salt]) {\\n            revert SaltAlreadyUsed();\\n        }\\n        usedSalts[salt] = true;\\n\\n        bytes32 digest = _hashMulticall(msg.sender, calls, deadline, salt);\\n        address signer = ECDSA.recover(digest, signature);\\n        if (signer != backendSigner) {\\n            revert Unauthorized();\\n        }\\n\\n        for (uint256 i = 0; i < calls.length; i++) {\\n            (bool success, bytes memory returnData) = address(this).call(calls[i]);\\n            if (!success) {\\n                assembly {\\n                    revert(add(returnData, 0x20), mload(returnData))\\n                }\\n            }\\n        }\\n\\n        emit MulticallExecuted(msg.sender, calls.length, deadline, salt);\\n    }\\n\\n    /// @notice Generic call function to execute a call to an arbitrary address\\n    /// @param target Address of the contract to call\\n    /// @param data Encoded function call data\\n    /// @dev This function can interact with any external contract\\n    /// @dev Should only be called via multicall for safety, but can be called directly by owner\\n    /// @custom:security Use with extreme caution - can call any contract with any data\\n    /// @custom:security Ensure proper validation of target and data in off-chain systems\\n    /// @custom:error CallerNotAuthorized if caller is not owner or contract itself\\n    function genericCall(address target, bytes calldata data) external onlyOwnerOrSelf {\\n        target.functionCall(data);\\n        emit GenericCallExecuted(target, data);\\n    }\\n\\n    /// @notice Sweeps entire balance of an ERC-20 token to a specified address\\n    /// @param token ERC-20 token contract to sweep\\n    /// @param to Recipient address for the swept tokens\\n    /// @dev Transfers the entire balance of token held by this contract\\n    /// @dev Uses SafeERC20 for safe transfer operations\\n    /// @dev Should only be called via multicall for safety, but can be called directly by owner\\n    /// @custom:error CallerNotAuthorized if caller is not owner or contract itself\\n    /// @custom:error ZeroAddress if token is address(0) or to is address(0)\\n    function sweep(IERC20Upgradeable token, address to) external onlyOwnerOrSelf {\\n        if (address(token) == address(0) || to == address(0)) {\\n            revert ZeroAddress();\\n        }\\n        uint256 amount = token.balanceOf(address(this));\\n        if (amount > 0) {\\n            token.safeTransfer(to, amount);\\n        }\\n        emit Swept(address(token), to, amount);\\n    }\\n\\n    /// @notice Approves maximum amount of an ERC-20 token to a specified spender\\n    /// @param token ERC-20 token contract to approve\\n    /// @param spender Address to grant approval to\\n    /// @dev Sets approval to type(uint256).max for unlimited spending\\n    /// @dev Uses forceApprove to handle tokens that require 0 approval first\\n    /// @dev Should only be called via multicall for safety, but can be called directly by owner\\n    /// @custom:security Grants unlimited approval - ensure spender is trusted\\n    /// @custom:error CallerNotAuthorized if caller is not owner or contract itself\\n    function approveMax(IERC20Upgradeable token, address spender) external onlyOwnerOrSelf {\\n        token.forceApprove(spender, type(uint256).max);\\n        emit ApprovedMax(address(token), spender);\\n    }\\n\\n    /// @notice Updates the backend signer address\\n    /// @param newSigner New backend signer address\\n    /// @dev Only callable by contract owner\\n    /// @dev Reverts with ZeroAddress if newSigner is address(0)\\n    /// @dev Emits BackendSignerUpdated event\\n    /// @custom:error ZeroAddress if newSigner is address(0)\\n    /// @custom:error Ownable: caller is not the owner (from OpenZeppelin Ownable)\\n    function setBackendSigner(address newSigner) external onlyOwner {\\n        if (newSigner == address(0)) {\\n            revert ZeroAddress();\\n        }\\n\\n        emit BackendSignerUpdated(backendSigner, newSigner);\\n        backendSigner = newSigner;\\n    }\\n\\n    /// @notice Produces an EIP-712 digest of the multicall data\\n    /// @param caller Address of the authorized caller\\n    /// @param calls Array of encoded function calls\\n    /// @param deadline Unix timestamp deadline\\n    /// @param salt Unique value to ensure replay protection\\n    /// @return EIP-712 typed data hash for signature verification\\n    /// @dev Hashes each call individually, then encodes with MULTICALL_TYPEHASH, caller, deadline, and salt\\n    /// @dev Uses EIP-712 _hashTypedDataV4 for domain-separated hashing\\n    function _hashMulticall(\\n        address caller,\\n        bytes[] calldata calls,\\n        uint256 deadline,\\n        bytes32 salt\\n    ) internal view returns (bytes32) {\\n        bytes32[] memory callHashes = new bytes32[](calls.length);\\n        for (uint256 i = 0; i < calls.length; i++) {\\n            callHashes[i] = keccak256(calls[i]);\\n        }\\n        return\\n            _hashTypedDataV4(\\n                keccak256(\\n                    abi.encode(MULTICALL_TYPEHASH, caller, keccak256(abi.encodePacked(callHashes)), deadline, salt)\\n                )\\n            );\\n    }\\n}\\n\",\"keccak256\":\"0x663bdb3aaa485ce52b38bc7d325b14b94c68f32a74e472ec5cedaa2e04cc9df9\",\"license\":\"BSD-3-Clause\"}},\"version\":1}","storageLayout":{"storage":[{"astId":292,"contract":"contracts/LeverageManager/LeverageStrategiesManager.sol:LeverageStrategiesManager","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":295,"contract":"contracts/LeverageManager/LeverageStrategiesManager.sol:LeverageStrategiesManager","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":1409,"contract":"contracts/LeverageManager/LeverageStrategiesManager.sol:LeverageStrategiesManager","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":164,"contract":"contracts/LeverageManager/LeverageStrategiesManager.sol:LeverageStrategiesManager","label":"_owner","offset":0,"slot":"51","type":"t_address"},{"astId":284,"contract":"contracts/LeverageManager/LeverageStrategiesManager.sol:LeverageStrategiesManager","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"},{"astId":57,"contract":"contracts/LeverageManager/LeverageStrategiesManager.sol:LeverageStrategiesManager","label":"_pendingOwner","offset":0,"slot":"101","type":"t_address"},{"astId":151,"contract":"contracts/LeverageManager/LeverageStrategiesManager.sol:LeverageStrategiesManager","label":"__gap","offset":0,"slot":"102","type":"t_array(t_uint256)49_storage"},{"astId":469,"contract":"contracts/LeverageManager/LeverageStrategiesManager.sol:LeverageStrategiesManager","label":"_status","offset":0,"slot":"151","type":"t_uint256"},{"astId":538,"contract":"contracts/LeverageManager/LeverageStrategiesManager.sol:LeverageStrategiesManager","label":"__gap","offset":0,"slot":"152","type":"t_array(t_uint256)49_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)49_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"events":{"DustTransferred(address,address,uint256)":{"notice":"Emitted when dust amounts are transferred after a leverage operation"},"LeverageEntered(address,address,uint256,address,uint256)":{"notice":"Emitted when a user enters a leveraged position with collateral seed"},"LeverageEnteredFromBorrow(address,address,address,uint256,uint256)":{"notice":"Emitted when a user enters a leveraged position with borrowed asset seed"},"LeverageExited(address,address,uint256,address,uint256)":{"notice":"Emitted when a user exits a leveraged position"},"SingleAssetLeverageEntered(address,address,uint256,uint256)":{"notice":"Emitted when a user enters a leveraged position with single collateral asset"},"SingleAssetLeverageExited(address,address,uint256)":{"notice":"Emitted when a user exits a leveraged position with single collateral asset"}},"kind":"user","methods":{"COMPTROLLER()":{"notice":"The Venus comptroller contract for market interactions and flash loans execution"},"constructor":{"notice":"Contract constructor"},"enterLeverage(address,uint256,address,uint256,uint256,bytes)":{"notice":"Enters a leveraged position by borrowing assets and converting them to collateral"},"enterLeverageFromBorrow(address,address,uint256,uint256,uint256,bytes)":{"notice":"Enters a leveraged position by using existing borrowed assets and converting them to collateral"},"enterSingleAssetLeverage(address,uint256,uint256)":{"notice":"Enters a leveraged position using only collateral provided by the user"},"executeOperation(address[],uint256[],uint256[],address,address,bytes)":{"notice":"Flash loan callback entrypoint called by Comptroller"},"exitLeverage(address,uint256,address,uint256,uint256,bytes)":{"notice":"Exits a leveraged position by redeeming collateral and repaying borrowed assets"},"exitSingleAssetLeverage(address,uint256)":{"notice":"Exits a leveraged position when collateral and borrowed assets are the same token"},"initialize()":{"notice":"Initializes the contract"},"swapHelper()":{"notice":"The swap helper contract for executing token swaps during leverage operations"},"vBNB()":{"notice":"The vBNB market address (not supported for leverage operations)"}},"notice":"Contract for managing leveraged positions using flash loans and token swaps","version":1}}},"contracts/SwapHelper/SwapHelper.sol":{"SwapHelper":{"abi":[{"inputs":[{"internalType":"address","name":"backendSigner_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"CallerNotAuthorized","type":"error"},{"inputs":[],"name":"DeadlineReached","type":"error"},{"inputs":[],"name":"InvalidShortString","type":"error"},{"inputs":[],"name":"MissingSignature","type":"error"},{"inputs":[],"name":"NoCallsProvided","type":"error"},{"inputs":[],"name":"SaltAlreadyUsed","type":"error"},{"inputs":[{"internalType":"string","name":"str","type":"string"}],"name":"StringTooLong","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"}],"name":"ApprovedMax","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldSigner","type":"address"},{"indexed":true,"internalType":"address","name":"newSigner","type":"address"}],"name":"BackendSignerUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"EIP712DomainChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"GenericCallExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"callsCount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"deadline","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"MulticallExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Swept","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20Upgradeable","name":"token","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"backendSigner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"genericCall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"calls","type":"bytes[]"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"multicall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newSigner","type":"address"}],"name":"setBackendSigner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20Upgradeable","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"sweep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"usedSalts","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"Venus Protocol","custom:security-contact":"security@venus.io","details":"This contract provides utilities for managing approvals,      and executing arbitrary calls in a single transaction. It supports      signature verification using EIP-712 for backend-authorized operations.      All functions except multicall are designed to be called internally via multicall.","errors":{"CallerNotAuthorized()":[{"details":"Only owner or contract itself can call protected functions"}],"DeadlineReached()":[{"details":"Emitted when block.timestamp > deadline in multicall"}],"MissingSignature()":[{"details":"Emitted when signature length is zero but verification is expected"}],"NoCallsProvided()":[{"details":"Emitted when calls array is empty in multicall"}],"SaltAlreadyUsed()":[{"details":"Prevents replay attacks by ensuring each salt is used only once"}],"Unauthorized()":[{"details":"Emitted when recovered signer doesn't match backendSigner"}],"ZeroAddress()":[{"details":"Used in constructor and setBackendSigner validation"}]},"events":{"ApprovedMax(address,address)":{"params":{"spender":"Address granted the approval","token":"Address of the token approved"}},"BackendSignerUpdated(address,address)":{"params":{"newSigner":"New backend signer address","oldSigner":"Previous backend signer address"}},"EIP712DomainChanged()":{"details":"MAY be emitted to signal that the domain could have changed."},"GenericCallExecuted(address,bytes)":{"params":{"data":"Encoded function call data","target":"Address of the contract called"}},"MulticallExecuted(address,uint256,uint256,bytes32)":{"params":{"caller":"Address that initiated the multicall","callsCount":"Number of calls executed in the batch","deadline":"Deadline timestamp used for the operation","salt":"Salt used for replay protection"}},"Swept(address,address,uint256)":{"params":{"amount":"Amount of tokens swept","to":"Recipient address","token":"Address of the token swept"}}},"kind":"dev","methods":{"acceptOwnership()":{"details":"The new owner accepts the ownership transfer."},"approveMax(address,address)":{"custom:error":"CallerNotAuthorized if caller is not owner or contract itself","custom:security":"Grants unlimited approval - ensure spender is trusted","details":"Sets approval to type(uint256).max for unlimited spendingUses forceApprove to handle tokens that require 0 approval firstShould only be called via multicall for safety, but can be called directly by owner","params":{"spender":"Address to grant approval to","token":"ERC-20 token contract to approve"}},"constructor":{"custom:error":"ZeroAddress if backendSigner_ is address(0)","details":"Initializes EIP-712 domain with name \"VenusSwap\" and version \"1\"Transfers ownership to msg.senderReverts with ZeroAddress if parameter is address(0)","params":{"backendSigner_":"Address authorized to sign multicall operations"}},"eip712Domain()":{"details":"See {EIP-5267}. _Available since v4.9._"},"genericCall(address,bytes)":{"custom:error":"CallerNotAuthorized if caller is not owner or contract itself","custom:security":"Use with extreme caution - can call any contract with any dataEnsure proper validation of target and data in off-chain systems","details":"This function can interact with any external contractShould only be called via multicall for safety, but can be called directly by owner","params":{"data":"Encoded function call data","target":"Address of the contract to call"}},"multicall(bytes[],uint256,bytes32,bytes)":{"custom:error":"NoCallsProvided if calls array is emptyDeadlineReached if block.timestamp > deadlineSaltAlreadyUsed if salt has been used beforeUnauthorized if signature verification failsMissingSignature if signature is empty","custom:event":"MulticallExecuted emitted upon successful execution","custom:security":"Only the contract itself can call sweep, approveMax, and genericCall","details":"All calls are executed atomically - if any call fails, entire transaction revertsCalls must be to functions on this contract (address(this))Protected by nonReentrant modifier to prevent reentrancy attacksThis function should be called as a part of a transaction that sends tokens to this contract and verifies if they received desired tokens after execution.EOA that calls this function should not send tokens directly nor approve this contract to spend tokens on their behalf.","params":{"calls":"Array of encoded function calls to execute on this contract","deadline":"Unix timestamp after which the transaction will revert","salt":"Unique value to ensure this exact multicall can only be executed once","signature":"EIP-712 signature from backend signer"}},"owner()":{"details":"Returns the address of the current owner."},"pendingOwner()":{"details":"Returns the address of the pending owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setBackendSigner(address)":{"custom:error":"ZeroAddress if newSigner is address(0)Ownable: caller is not the owner (from OpenZeppelin Ownable)","details":"Only callable by contract ownerReverts with ZeroAddress if newSigner is address(0)Emits BackendSignerUpdated event","params":{"newSigner":"New backend signer address"}},"sweep(address,address)":{"custom:error":"CallerNotAuthorized if caller is not owner or contract itselfZeroAddress if token is address(0) or to is address(0)","details":"Transfers the entire balance of token held by this contractUses SafeERC20 for safe transfer operationsShould only be called via multicall for safety, but can be called directly by owner","params":{"to":"Recipient address for the swept tokens","token":"ERC-20 token contract to sweep"}},"transferOwnership(address)":{"details":"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner."}},"stateVariables":{"MULTICALL_TYPEHASH":{"details":"keccak256(\"Multicall(address caller,bytes[] calls,uint256 deadline,bytes32 salt)\")"},"backendSigner":{"details":"Can be updated by contract owner via setBackendSigner"},"usedSalts":{"details":"Maps salt => bool to prevent reuse of same salt"}},"title":"SwapHelper","version":1},"evm":{"bytecode":{"functionDebugData":{"@_1507":{"entryPoint":null,"id":1507,"parameterSlots":0,"returnSlots":0},"@_1723":{"entryPoint":null,"id":1723,"parameterSlots":0,"returnSlots":0},"@_3658":{"entryPoint":null,"id":3658,"parameterSlots":2,"returnSlots":0},"@_7959":{"entryPoint":null,"id":7959,"parameterSlots":1,"returnSlots":0},"@_buildDomainSeparator_3705":{"entryPoint":318,"id":3705,"parameterSlots":0,"returnSlots":1},"@_msgSender_2626":{"entryPoint":null,"id":2626,"parameterSlots":0,"returnSlots":1},"@_transferOwnership_1595":{"entryPoint":508,"id":1595,"parameterSlots":1,"returnSlots":0},"@_transferOwnership_1656":{"entryPoint":407,"id":1656,"parameterSlots":1,"returnSlots":0},"@getStringSlot_2947":{"entryPoint":505,"id":2947,"parameterSlots":1,"returnSlots":1},"@toShortStringWithFallback_2801":{"entryPoint":268,"id":2801,"parameterSlots":2,"returnSlots":1},"@toShortString_2703":{"entryPoint":435,"id":2703,"parameterSlots":1,"returnSlots":1},"abi_decode_t_address_fromMemory":{"entryPoint":624,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":635,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":1112,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes32_to_t_bytes32_fromStack":{"entryPoint":1104,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack":{"entryPoint":1208,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_uint256_to_t_uint256_fromStack":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed":{"entryPoint":1121,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":1257,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_unbounded":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"array_dataslot_t_bytes_memory_ptr":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_t_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_bytes_memory_ptr":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_string_memory_ptr":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_t_string_storage":{"entryPoint":850,"id":null,"parameterSlots":3,"returnSlots":0},"cleanup_t_address":{"entryPoint":589,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bytes32":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"clear_storage_range_t_bytes1":{"entryPoint":820,"id":null,"parameterSlots":2,"returnSlots":0},"convert_bytes_to_fixedbytes_from_t_bytes_memory_ptr_to_t_bytes32":{"entryPoint":1290,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_uint256_to_t_uint256":{"entryPoint":757,"id":null,"parameterSlots":1,"returnSlots":1},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":913,"id":null,"parameterSlots":2,"returnSlots":0},"copy_memory_to_memory_with_cleanup":{"entryPoint":1197,"id":null,"parameterSlots":3,"returnSlots":0},"divide_by_32_ceil":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"extract_byte_array_length":{"entryPoint":713,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"identity":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mask_bytes_dynamic":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x22":{"entryPoint":693,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":673,"id":null,"parameterSlots":0,"returnSlots":0},"prepare_store_t_uint256":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_memoryt_bytes32":{"entryPoint":1281,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_dynamic":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"shift_right_unsigned_dynamic":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"storage_set_to_zero_t_uint256":{"entryPoint":803,"id":null,"parameterSlots":2,"returnSlots":0},"update_byte_slice_dynamic32":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"update_storage_value_t_uint256_to_t_uint256":{"entryPoint":768,"id":null,"parameterSlots":3,"returnSlots":0},"validator_revert_t_address":{"entryPoint":605,"id":null,"parameterSlots":1,"returnSlots":0},"zero_value_for_split_t_uint256":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1}},"generatedSources":[{"ast":{"nativeSrc":"0:9667:55","nodeType":"YulBlock","src":"0:9667:55","statements":[{"body":{"nativeSrc":"47:35:55","nodeType":"YulBlock","src":"47:35:55","statements":[{"nativeSrc":"57:19:55","nodeType":"YulAssignment","src":"57:19:55","value":{"arguments":[{"kind":"number","nativeSrc":"73:2:55","nodeType":"YulLiteral","src":"73:2:55","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"67:5:55","nodeType":"YulIdentifier","src":"67:5:55"},"nativeSrc":"67:9:55","nodeType":"YulFunctionCall","src":"67:9:55"},"variableNames":[{"name":"memPtr","nativeSrc":"57:6:55","nodeType":"YulIdentifier","src":"57:6:55"}]}]},"name":"allocate_unbounded","nativeSrc":"7:75:55","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"40:6:55","nodeType":"YulTypedName","src":"40:6:55","type":""}],"src":"7:75:55"},{"body":{"nativeSrc":"177:28:55","nodeType":"YulBlock","src":"177:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"194:1:55","nodeType":"YulLiteral","src":"194:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"197:1:55","nodeType":"YulLiteral","src":"197:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"187:6:55","nodeType":"YulIdentifier","src":"187:6:55"},"nativeSrc":"187:12:55","nodeType":"YulFunctionCall","src":"187:12:55"},"nativeSrc":"187:12:55","nodeType":"YulExpressionStatement","src":"187:12:55"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"88:117:55","nodeType":"YulFunctionDefinition","src":"88:117:55"},{"body":{"nativeSrc":"300:28:55","nodeType":"YulBlock","src":"300:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"317:1:55","nodeType":"YulLiteral","src":"317:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"320:1:55","nodeType":"YulLiteral","src":"320:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"310:6:55","nodeType":"YulIdentifier","src":"310:6:55"},"nativeSrc":"310:12:55","nodeType":"YulFunctionCall","src":"310:12:55"},"nativeSrc":"310:12:55","nodeType":"YulExpressionStatement","src":"310:12:55"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"211:117:55","nodeType":"YulFunctionDefinition","src":"211:117:55"},{"body":{"nativeSrc":"379:81:55","nodeType":"YulBlock","src":"379:81:55","statements":[{"nativeSrc":"389:65:55","nodeType":"YulAssignment","src":"389:65:55","value":{"arguments":[{"name":"value","nativeSrc":"404:5:55","nodeType":"YulIdentifier","src":"404:5:55"},{"kind":"number","nativeSrc":"411:42:55","nodeType":"YulLiteral","src":"411:42:55","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"400:3:55","nodeType":"YulIdentifier","src":"400:3:55"},"nativeSrc":"400:54:55","nodeType":"YulFunctionCall","src":"400:54:55"},"variableNames":[{"name":"cleaned","nativeSrc":"389:7:55","nodeType":"YulIdentifier","src":"389:7:55"}]}]},"name":"cleanup_t_uint160","nativeSrc":"334:126:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"361:5:55","nodeType":"YulTypedName","src":"361:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"371:7:55","nodeType":"YulTypedName","src":"371:7:55","type":""}],"src":"334:126:55"},{"body":{"nativeSrc":"511:51:55","nodeType":"YulBlock","src":"511:51:55","statements":[{"nativeSrc":"521:35:55","nodeType":"YulAssignment","src":"521:35:55","value":{"arguments":[{"name":"value","nativeSrc":"550:5:55","nodeType":"YulIdentifier","src":"550:5:55"}],"functionName":{"name":"cleanup_t_uint160","nativeSrc":"532:17:55","nodeType":"YulIdentifier","src":"532:17:55"},"nativeSrc":"532:24:55","nodeType":"YulFunctionCall","src":"532:24:55"},"variableNames":[{"name":"cleaned","nativeSrc":"521:7:55","nodeType":"YulIdentifier","src":"521:7:55"}]}]},"name":"cleanup_t_address","nativeSrc":"466:96:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"493:5:55","nodeType":"YulTypedName","src":"493:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"503:7:55","nodeType":"YulTypedName","src":"503:7:55","type":""}],"src":"466:96:55"},{"body":{"nativeSrc":"611:79:55","nodeType":"YulBlock","src":"611:79:55","statements":[{"body":{"nativeSrc":"668:16:55","nodeType":"YulBlock","src":"668:16:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"677:1:55","nodeType":"YulLiteral","src":"677:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"680:1:55","nodeType":"YulLiteral","src":"680:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"670:6:55","nodeType":"YulIdentifier","src":"670:6:55"},"nativeSrc":"670:12:55","nodeType":"YulFunctionCall","src":"670:12:55"},"nativeSrc":"670:12:55","nodeType":"YulExpressionStatement","src":"670:12:55"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"634:5:55","nodeType":"YulIdentifier","src":"634:5:55"},{"arguments":[{"name":"value","nativeSrc":"659:5:55","nodeType":"YulIdentifier","src":"659:5:55"}],"functionName":{"name":"cleanup_t_address","nativeSrc":"641:17:55","nodeType":"YulIdentifier","src":"641:17:55"},"nativeSrc":"641:24:55","nodeType":"YulFunctionCall","src":"641:24:55"}],"functionName":{"name":"eq","nativeSrc":"631:2:55","nodeType":"YulIdentifier","src":"631:2:55"},"nativeSrc":"631:35:55","nodeType":"YulFunctionCall","src":"631:35:55"}],"functionName":{"name":"iszero","nativeSrc":"624:6:55","nodeType":"YulIdentifier","src":"624:6:55"},"nativeSrc":"624:43:55","nodeType":"YulFunctionCall","src":"624:43:55"},"nativeSrc":"621:63:55","nodeType":"YulIf","src":"621:63:55"}]},"name":"validator_revert_t_address","nativeSrc":"568:122:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"604:5:55","nodeType":"YulTypedName","src":"604:5:55","type":""}],"src":"568:122:55"},{"body":{"nativeSrc":"759:80:55","nodeType":"YulBlock","src":"759:80:55","statements":[{"nativeSrc":"769:22:55","nodeType":"YulAssignment","src":"769:22:55","value":{"arguments":[{"name":"offset","nativeSrc":"784:6:55","nodeType":"YulIdentifier","src":"784:6:55"}],"functionName":{"name":"mload","nativeSrc":"778:5:55","nodeType":"YulIdentifier","src":"778:5:55"},"nativeSrc":"778:13:55","nodeType":"YulFunctionCall","src":"778:13:55"},"variableNames":[{"name":"value","nativeSrc":"769:5:55","nodeType":"YulIdentifier","src":"769:5:55"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"827:5:55","nodeType":"YulIdentifier","src":"827:5:55"}],"functionName":{"name":"validator_revert_t_address","nativeSrc":"800:26:55","nodeType":"YulIdentifier","src":"800:26:55"},"nativeSrc":"800:33:55","nodeType":"YulFunctionCall","src":"800:33:55"},"nativeSrc":"800:33:55","nodeType":"YulExpressionStatement","src":"800:33:55"}]},"name":"abi_decode_t_address_fromMemory","nativeSrc":"696:143:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"737:6:55","nodeType":"YulTypedName","src":"737:6:55","type":""},{"name":"end","nativeSrc":"745:3:55","nodeType":"YulTypedName","src":"745:3:55","type":""}],"returnVariables":[{"name":"value","nativeSrc":"753:5:55","nodeType":"YulTypedName","src":"753:5:55","type":""}],"src":"696:143:55"},{"body":{"nativeSrc":"922:274:55","nodeType":"YulBlock","src":"922:274:55","statements":[{"body":{"nativeSrc":"968:83:55","nodeType":"YulBlock","src":"968:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"970:77:55","nodeType":"YulIdentifier","src":"970:77:55"},"nativeSrc":"970:79:55","nodeType":"YulFunctionCall","src":"970:79:55"},"nativeSrc":"970:79:55","nodeType":"YulExpressionStatement","src":"970:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"943:7:55","nodeType":"YulIdentifier","src":"943:7:55"},{"name":"headStart","nativeSrc":"952:9:55","nodeType":"YulIdentifier","src":"952:9:55"}],"functionName":{"name":"sub","nativeSrc":"939:3:55","nodeType":"YulIdentifier","src":"939:3:55"},"nativeSrc":"939:23:55","nodeType":"YulFunctionCall","src":"939:23:55"},{"kind":"number","nativeSrc":"964:2:55","nodeType":"YulLiteral","src":"964:2:55","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"935:3:55","nodeType":"YulIdentifier","src":"935:3:55"},"nativeSrc":"935:32:55","nodeType":"YulFunctionCall","src":"935:32:55"},"nativeSrc":"932:119:55","nodeType":"YulIf","src":"932:119:55"},{"nativeSrc":"1061:128:55","nodeType":"YulBlock","src":"1061:128:55","statements":[{"nativeSrc":"1076:15:55","nodeType":"YulVariableDeclaration","src":"1076:15:55","value":{"kind":"number","nativeSrc":"1090:1:55","nodeType":"YulLiteral","src":"1090:1:55","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"1080:6:55","nodeType":"YulTypedName","src":"1080:6:55","type":""}]},{"nativeSrc":"1105:74:55","nodeType":"YulAssignment","src":"1105:74:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1151:9:55","nodeType":"YulIdentifier","src":"1151:9:55"},{"name":"offset","nativeSrc":"1162:6:55","nodeType":"YulIdentifier","src":"1162:6:55"}],"functionName":{"name":"add","nativeSrc":"1147:3:55","nodeType":"YulIdentifier","src":"1147:3:55"},"nativeSrc":"1147:22:55","nodeType":"YulFunctionCall","src":"1147:22:55"},{"name":"dataEnd","nativeSrc":"1171:7:55","nodeType":"YulIdentifier","src":"1171:7:55"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nativeSrc":"1115:31:55","nodeType":"YulIdentifier","src":"1115:31:55"},"nativeSrc":"1115:64:55","nodeType":"YulFunctionCall","src":"1115:64:55"},"variableNames":[{"name":"value0","nativeSrc":"1105:6:55","nodeType":"YulIdentifier","src":"1105:6:55"}]}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nativeSrc":"845:351:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"892:9:55","nodeType":"YulTypedName","src":"892:9:55","type":""},{"name":"dataEnd","nativeSrc":"903:7:55","nodeType":"YulTypedName","src":"903:7:55","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"915:6:55","nodeType":"YulTypedName","src":"915:6:55","type":""}],"src":"845:351:55"},{"body":{"nativeSrc":"1261:40:55","nodeType":"YulBlock","src":"1261:40:55","statements":[{"nativeSrc":"1272:22:55","nodeType":"YulAssignment","src":"1272:22:55","value":{"arguments":[{"name":"value","nativeSrc":"1288:5:55","nodeType":"YulIdentifier","src":"1288:5:55"}],"functionName":{"name":"mload","nativeSrc":"1282:5:55","nodeType":"YulIdentifier","src":"1282:5:55"},"nativeSrc":"1282:12:55","nodeType":"YulFunctionCall","src":"1282:12:55"},"variableNames":[{"name":"length","nativeSrc":"1272:6:55","nodeType":"YulIdentifier","src":"1272:6:55"}]}]},"name":"array_length_t_string_memory_ptr","nativeSrc":"1202:99:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1244:5:55","nodeType":"YulTypedName","src":"1244:5:55","type":""}],"returnVariables":[{"name":"length","nativeSrc":"1254:6:55","nodeType":"YulTypedName","src":"1254:6:55","type":""}],"src":"1202:99:55"},{"body":{"nativeSrc":"1335:152:55","nodeType":"YulBlock","src":"1335:152:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1352:1:55","nodeType":"YulLiteral","src":"1352:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"1355:77:55","nodeType":"YulLiteral","src":"1355:77:55","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"1345:6:55","nodeType":"YulIdentifier","src":"1345:6:55"},"nativeSrc":"1345:88:55","nodeType":"YulFunctionCall","src":"1345:88:55"},"nativeSrc":"1345:88:55","nodeType":"YulExpressionStatement","src":"1345:88:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1449:1:55","nodeType":"YulLiteral","src":"1449:1:55","type":"","value":"4"},{"kind":"number","nativeSrc":"1452:4:55","nodeType":"YulLiteral","src":"1452:4:55","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"1442:6:55","nodeType":"YulIdentifier","src":"1442:6:55"},"nativeSrc":"1442:15:55","nodeType":"YulFunctionCall","src":"1442:15:55"},"nativeSrc":"1442:15:55","nodeType":"YulExpressionStatement","src":"1442:15:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1473:1:55","nodeType":"YulLiteral","src":"1473:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"1476:4:55","nodeType":"YulLiteral","src":"1476:4:55","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"1466:6:55","nodeType":"YulIdentifier","src":"1466:6:55"},"nativeSrc":"1466:15:55","nodeType":"YulFunctionCall","src":"1466:15:55"},"nativeSrc":"1466:15:55","nodeType":"YulExpressionStatement","src":"1466:15:55"}]},"name":"panic_error_0x41","nativeSrc":"1307:180:55","nodeType":"YulFunctionDefinition","src":"1307:180:55"},{"body":{"nativeSrc":"1521:152:55","nodeType":"YulBlock","src":"1521:152:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1538:1:55","nodeType":"YulLiteral","src":"1538:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"1541:77:55","nodeType":"YulLiteral","src":"1541:77:55","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"1531:6:55","nodeType":"YulIdentifier","src":"1531:6:55"},"nativeSrc":"1531:88:55","nodeType":"YulFunctionCall","src":"1531:88:55"},"nativeSrc":"1531:88:55","nodeType":"YulExpressionStatement","src":"1531:88:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1635:1:55","nodeType":"YulLiteral","src":"1635:1:55","type":"","value":"4"},{"kind":"number","nativeSrc":"1638:4:55","nodeType":"YulLiteral","src":"1638:4:55","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"1628:6:55","nodeType":"YulIdentifier","src":"1628:6:55"},"nativeSrc":"1628:15:55","nodeType":"YulFunctionCall","src":"1628:15:55"},"nativeSrc":"1628:15:55","nodeType":"YulExpressionStatement","src":"1628:15:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1659:1:55","nodeType":"YulLiteral","src":"1659:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"1662:4:55","nodeType":"YulLiteral","src":"1662:4:55","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"1652:6:55","nodeType":"YulIdentifier","src":"1652:6:55"},"nativeSrc":"1652:15:55","nodeType":"YulFunctionCall","src":"1652:15:55"},"nativeSrc":"1652:15:55","nodeType":"YulExpressionStatement","src":"1652:15:55"}]},"name":"panic_error_0x22","nativeSrc":"1493:180:55","nodeType":"YulFunctionDefinition","src":"1493:180:55"},{"body":{"nativeSrc":"1730:269:55","nodeType":"YulBlock","src":"1730:269:55","statements":[{"nativeSrc":"1740:22:55","nodeType":"YulAssignment","src":"1740:22:55","value":{"arguments":[{"name":"data","nativeSrc":"1754:4:55","nodeType":"YulIdentifier","src":"1754:4:55"},{"kind":"number","nativeSrc":"1760:1:55","nodeType":"YulLiteral","src":"1760:1:55","type":"","value":"2"}],"functionName":{"name":"div","nativeSrc":"1750:3:55","nodeType":"YulIdentifier","src":"1750:3:55"},"nativeSrc":"1750:12:55","nodeType":"YulFunctionCall","src":"1750:12:55"},"variableNames":[{"name":"length","nativeSrc":"1740:6:55","nodeType":"YulIdentifier","src":"1740:6:55"}]},{"nativeSrc":"1771:38:55","nodeType":"YulVariableDeclaration","src":"1771:38:55","value":{"arguments":[{"name":"data","nativeSrc":"1801:4:55","nodeType":"YulIdentifier","src":"1801:4:55"},{"kind":"number","nativeSrc":"1807:1:55","nodeType":"YulLiteral","src":"1807:1:55","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"1797:3:55","nodeType":"YulIdentifier","src":"1797:3:55"},"nativeSrc":"1797:12:55","nodeType":"YulFunctionCall","src":"1797:12:55"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"1775:18:55","nodeType":"YulTypedName","src":"1775:18:55","type":""}]},{"body":{"nativeSrc":"1848:51:55","nodeType":"YulBlock","src":"1848:51:55","statements":[{"nativeSrc":"1862:27:55","nodeType":"YulAssignment","src":"1862:27:55","value":{"arguments":[{"name":"length","nativeSrc":"1876:6:55","nodeType":"YulIdentifier","src":"1876:6:55"},{"kind":"number","nativeSrc":"1884:4:55","nodeType":"YulLiteral","src":"1884:4:55","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"1872:3:55","nodeType":"YulIdentifier","src":"1872:3:55"},"nativeSrc":"1872:17:55","nodeType":"YulFunctionCall","src":"1872:17:55"},"variableNames":[{"name":"length","nativeSrc":"1862:6:55","nodeType":"YulIdentifier","src":"1862:6:55"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"1828:18:55","nodeType":"YulIdentifier","src":"1828:18:55"}],"functionName":{"name":"iszero","nativeSrc":"1821:6:55","nodeType":"YulIdentifier","src":"1821:6:55"},"nativeSrc":"1821:26:55","nodeType":"YulFunctionCall","src":"1821:26:55"},"nativeSrc":"1818:81:55","nodeType":"YulIf","src":"1818:81:55"},{"body":{"nativeSrc":"1951:42:55","nodeType":"YulBlock","src":"1951:42:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nativeSrc":"1965:16:55","nodeType":"YulIdentifier","src":"1965:16:55"},"nativeSrc":"1965:18:55","nodeType":"YulFunctionCall","src":"1965:18:55"},"nativeSrc":"1965:18:55","nodeType":"YulExpressionStatement","src":"1965:18:55"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"1915:18:55","nodeType":"YulIdentifier","src":"1915:18:55"},{"arguments":[{"name":"length","nativeSrc":"1938:6:55","nodeType":"YulIdentifier","src":"1938:6:55"},{"kind":"number","nativeSrc":"1946:2:55","nodeType":"YulLiteral","src":"1946:2:55","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"1935:2:55","nodeType":"YulIdentifier","src":"1935:2:55"},"nativeSrc":"1935:14:55","nodeType":"YulFunctionCall","src":"1935:14:55"}],"functionName":{"name":"eq","nativeSrc":"1912:2:55","nodeType":"YulIdentifier","src":"1912:2:55"},"nativeSrc":"1912:38:55","nodeType":"YulFunctionCall","src":"1912:38:55"},"nativeSrc":"1909:84:55","nodeType":"YulIf","src":"1909:84:55"}]},"name":"extract_byte_array_length","nativeSrc":"1679:320:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"1714:4:55","nodeType":"YulTypedName","src":"1714:4:55","type":""}],"returnVariables":[{"name":"length","nativeSrc":"1723:6:55","nodeType":"YulTypedName","src":"1723:6:55","type":""}],"src":"1679:320:55"},{"body":{"nativeSrc":"2059:87:55","nodeType":"YulBlock","src":"2059:87:55","statements":[{"nativeSrc":"2069:11:55","nodeType":"YulAssignment","src":"2069:11:55","value":{"name":"ptr","nativeSrc":"2077:3:55","nodeType":"YulIdentifier","src":"2077:3:55"},"variableNames":[{"name":"data","nativeSrc":"2069:4:55","nodeType":"YulIdentifier","src":"2069:4:55"}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"2097:1:55","nodeType":"YulLiteral","src":"2097:1:55","type":"","value":"0"},{"name":"ptr","nativeSrc":"2100:3:55","nodeType":"YulIdentifier","src":"2100:3:55"}],"functionName":{"name":"mstore","nativeSrc":"2090:6:55","nodeType":"YulIdentifier","src":"2090:6:55"},"nativeSrc":"2090:14:55","nodeType":"YulFunctionCall","src":"2090:14:55"},"nativeSrc":"2090:14:55","nodeType":"YulExpressionStatement","src":"2090:14:55"},{"nativeSrc":"2113:26:55","nodeType":"YulAssignment","src":"2113:26:55","value":{"arguments":[{"kind":"number","nativeSrc":"2131:1:55","nodeType":"YulLiteral","src":"2131:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"2134:4:55","nodeType":"YulLiteral","src":"2134:4:55","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"2121:9:55","nodeType":"YulIdentifier","src":"2121:9:55"},"nativeSrc":"2121:18:55","nodeType":"YulFunctionCall","src":"2121:18:55"},"variableNames":[{"name":"data","nativeSrc":"2113:4:55","nodeType":"YulIdentifier","src":"2113:4:55"}]}]},"name":"array_dataslot_t_string_storage","nativeSrc":"2005:141:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"2046:3:55","nodeType":"YulTypedName","src":"2046:3:55","type":""}],"returnVariables":[{"name":"data","nativeSrc":"2054:4:55","nodeType":"YulTypedName","src":"2054:4:55","type":""}],"src":"2005:141:55"},{"body":{"nativeSrc":"2196:49:55","nodeType":"YulBlock","src":"2196:49:55","statements":[{"nativeSrc":"2206:33:55","nodeType":"YulAssignment","src":"2206:33:55","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2224:5:55","nodeType":"YulIdentifier","src":"2224:5:55"},{"kind":"number","nativeSrc":"2231:2:55","nodeType":"YulLiteral","src":"2231:2:55","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"2220:3:55","nodeType":"YulIdentifier","src":"2220:3:55"},"nativeSrc":"2220:14:55","nodeType":"YulFunctionCall","src":"2220:14:55"},{"kind":"number","nativeSrc":"2236:2:55","nodeType":"YulLiteral","src":"2236:2:55","type":"","value":"32"}],"functionName":{"name":"div","nativeSrc":"2216:3:55","nodeType":"YulIdentifier","src":"2216:3:55"},"nativeSrc":"2216:23:55","nodeType":"YulFunctionCall","src":"2216:23:55"},"variableNames":[{"name":"result","nativeSrc":"2206:6:55","nodeType":"YulIdentifier","src":"2206:6:55"}]}]},"name":"divide_by_32_ceil","nativeSrc":"2152:93:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2179:5:55","nodeType":"YulTypedName","src":"2179:5:55","type":""}],"returnVariables":[{"name":"result","nativeSrc":"2189:6:55","nodeType":"YulTypedName","src":"2189:6:55","type":""}],"src":"2152:93:55"},{"body":{"nativeSrc":"2304:54:55","nodeType":"YulBlock","src":"2304:54:55","statements":[{"nativeSrc":"2314:37:55","nodeType":"YulAssignment","src":"2314:37:55","value":{"arguments":[{"name":"bits","nativeSrc":"2339:4:55","nodeType":"YulIdentifier","src":"2339:4:55"},{"name":"value","nativeSrc":"2345:5:55","nodeType":"YulIdentifier","src":"2345:5:55"}],"functionName":{"name":"shl","nativeSrc":"2335:3:55","nodeType":"YulIdentifier","src":"2335:3:55"},"nativeSrc":"2335:16:55","nodeType":"YulFunctionCall","src":"2335:16:55"},"variableNames":[{"name":"newValue","nativeSrc":"2314:8:55","nodeType":"YulIdentifier","src":"2314:8:55"}]}]},"name":"shift_left_dynamic","nativeSrc":"2251:107:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"bits","nativeSrc":"2279:4:55","nodeType":"YulTypedName","src":"2279:4:55","type":""},{"name":"value","nativeSrc":"2285:5:55","nodeType":"YulTypedName","src":"2285:5:55","type":""}],"returnVariables":[{"name":"newValue","nativeSrc":"2295:8:55","nodeType":"YulTypedName","src":"2295:8:55","type":""}],"src":"2251:107:55"},{"body":{"nativeSrc":"2440:317:55","nodeType":"YulBlock","src":"2440:317:55","statements":[{"nativeSrc":"2450:35:55","nodeType":"YulVariableDeclaration","src":"2450:35:55","value":{"arguments":[{"name":"shiftBytes","nativeSrc":"2471:10:55","nodeType":"YulIdentifier","src":"2471:10:55"},{"kind":"number","nativeSrc":"2483:1:55","nodeType":"YulLiteral","src":"2483:1:55","type":"","value":"8"}],"functionName":{"name":"mul","nativeSrc":"2467:3:55","nodeType":"YulIdentifier","src":"2467:3:55"},"nativeSrc":"2467:18:55","nodeType":"YulFunctionCall","src":"2467:18:55"},"variables":[{"name":"shiftBits","nativeSrc":"2454:9:55","nodeType":"YulTypedName","src":"2454:9:55","type":""}]},{"nativeSrc":"2494:109:55","nodeType":"YulVariableDeclaration","src":"2494:109:55","value":{"arguments":[{"name":"shiftBits","nativeSrc":"2525:9:55","nodeType":"YulIdentifier","src":"2525:9:55"},{"kind":"number","nativeSrc":"2536:66:55","nodeType":"YulLiteral","src":"2536:66:55","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"shift_left_dynamic","nativeSrc":"2506:18:55","nodeType":"YulIdentifier","src":"2506:18:55"},"nativeSrc":"2506:97:55","nodeType":"YulFunctionCall","src":"2506:97:55"},"variables":[{"name":"mask","nativeSrc":"2498:4:55","nodeType":"YulTypedName","src":"2498:4:55","type":""}]},{"nativeSrc":"2612:51:55","nodeType":"YulAssignment","src":"2612:51:55","value":{"arguments":[{"name":"shiftBits","nativeSrc":"2643:9:55","nodeType":"YulIdentifier","src":"2643:9:55"},{"name":"toInsert","nativeSrc":"2654:8:55","nodeType":"YulIdentifier","src":"2654:8:55"}],"functionName":{"name":"shift_left_dynamic","nativeSrc":"2624:18:55","nodeType":"YulIdentifier","src":"2624:18:55"},"nativeSrc":"2624:39:55","nodeType":"YulFunctionCall","src":"2624:39:55"},"variableNames":[{"name":"toInsert","nativeSrc":"2612:8:55","nodeType":"YulIdentifier","src":"2612:8:55"}]},{"nativeSrc":"2672:30:55","nodeType":"YulAssignment","src":"2672:30:55","value":{"arguments":[{"name":"value","nativeSrc":"2685:5:55","nodeType":"YulIdentifier","src":"2685:5:55"},{"arguments":[{"name":"mask","nativeSrc":"2696:4:55","nodeType":"YulIdentifier","src":"2696:4:55"}],"functionName":{"name":"not","nativeSrc":"2692:3:55","nodeType":"YulIdentifier","src":"2692:3:55"},"nativeSrc":"2692:9:55","nodeType":"YulFunctionCall","src":"2692:9:55"}],"functionName":{"name":"and","nativeSrc":"2681:3:55","nodeType":"YulIdentifier","src":"2681:3:55"},"nativeSrc":"2681:21:55","nodeType":"YulFunctionCall","src":"2681:21:55"},"variableNames":[{"name":"value","nativeSrc":"2672:5:55","nodeType":"YulIdentifier","src":"2672:5:55"}]},{"nativeSrc":"2711:40:55","nodeType":"YulAssignment","src":"2711:40:55","value":{"arguments":[{"name":"value","nativeSrc":"2724:5:55","nodeType":"YulIdentifier","src":"2724:5:55"},{"arguments":[{"name":"toInsert","nativeSrc":"2735:8:55","nodeType":"YulIdentifier","src":"2735:8:55"},{"name":"mask","nativeSrc":"2745:4:55","nodeType":"YulIdentifier","src":"2745:4:55"}],"functionName":{"name":"and","nativeSrc":"2731:3:55","nodeType":"YulIdentifier","src":"2731:3:55"},"nativeSrc":"2731:19:55","nodeType":"YulFunctionCall","src":"2731:19:55"}],"functionName":{"name":"or","nativeSrc":"2721:2:55","nodeType":"YulIdentifier","src":"2721:2:55"},"nativeSrc":"2721:30:55","nodeType":"YulFunctionCall","src":"2721:30:55"},"variableNames":[{"name":"result","nativeSrc":"2711:6:55","nodeType":"YulIdentifier","src":"2711:6:55"}]}]},"name":"update_byte_slice_dynamic32","nativeSrc":"2364:393:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2401:5:55","nodeType":"YulTypedName","src":"2401:5:55","type":""},{"name":"shiftBytes","nativeSrc":"2408:10:55","nodeType":"YulTypedName","src":"2408:10:55","type":""},{"name":"toInsert","nativeSrc":"2420:8:55","nodeType":"YulTypedName","src":"2420:8:55","type":""}],"returnVariables":[{"name":"result","nativeSrc":"2433:6:55","nodeType":"YulTypedName","src":"2433:6:55","type":""}],"src":"2364:393:55"},{"body":{"nativeSrc":"2808:32:55","nodeType":"YulBlock","src":"2808:32:55","statements":[{"nativeSrc":"2818:16:55","nodeType":"YulAssignment","src":"2818:16:55","value":{"name":"value","nativeSrc":"2829:5:55","nodeType":"YulIdentifier","src":"2829:5:55"},"variableNames":[{"name":"cleaned","nativeSrc":"2818:7:55","nodeType":"YulIdentifier","src":"2818:7:55"}]}]},"name":"cleanup_t_uint256","nativeSrc":"2763:77:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2790:5:55","nodeType":"YulTypedName","src":"2790:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"2800:7:55","nodeType":"YulTypedName","src":"2800:7:55","type":""}],"src":"2763:77:55"},{"body":{"nativeSrc":"2878:28:55","nodeType":"YulBlock","src":"2878:28:55","statements":[{"nativeSrc":"2888:12:55","nodeType":"YulAssignment","src":"2888:12:55","value":{"name":"value","nativeSrc":"2895:5:55","nodeType":"YulIdentifier","src":"2895:5:55"},"variableNames":[{"name":"ret","nativeSrc":"2888:3:55","nodeType":"YulIdentifier","src":"2888:3:55"}]}]},"name":"identity","nativeSrc":"2846:60:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2864:5:55","nodeType":"YulTypedName","src":"2864:5:55","type":""}],"returnVariables":[{"name":"ret","nativeSrc":"2874:3:55","nodeType":"YulTypedName","src":"2874:3:55","type":""}],"src":"2846:60:55"},{"body":{"nativeSrc":"2972:82:55","nodeType":"YulBlock","src":"2972:82:55","statements":[{"nativeSrc":"2982:66:55","nodeType":"YulAssignment","src":"2982:66:55","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3040:5:55","nodeType":"YulIdentifier","src":"3040:5:55"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"3022:17:55","nodeType":"YulIdentifier","src":"3022:17:55"},"nativeSrc":"3022:24:55","nodeType":"YulFunctionCall","src":"3022:24:55"}],"functionName":{"name":"identity","nativeSrc":"3013:8:55","nodeType":"YulIdentifier","src":"3013:8:55"},"nativeSrc":"3013:34:55","nodeType":"YulFunctionCall","src":"3013:34:55"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"2995:17:55","nodeType":"YulIdentifier","src":"2995:17:55"},"nativeSrc":"2995:53:55","nodeType":"YulFunctionCall","src":"2995:53:55"},"variableNames":[{"name":"converted","nativeSrc":"2982:9:55","nodeType":"YulIdentifier","src":"2982:9:55"}]}]},"name":"convert_t_uint256_to_t_uint256","nativeSrc":"2912:142:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2952:5:55","nodeType":"YulTypedName","src":"2952:5:55","type":""}],"returnVariables":[{"name":"converted","nativeSrc":"2962:9:55","nodeType":"YulTypedName","src":"2962:9:55","type":""}],"src":"2912:142:55"},{"body":{"nativeSrc":"3107:28:55","nodeType":"YulBlock","src":"3107:28:55","statements":[{"nativeSrc":"3117:12:55","nodeType":"YulAssignment","src":"3117:12:55","value":{"name":"value","nativeSrc":"3124:5:55","nodeType":"YulIdentifier","src":"3124:5:55"},"variableNames":[{"name":"ret","nativeSrc":"3117:3:55","nodeType":"YulIdentifier","src":"3117:3:55"}]}]},"name":"prepare_store_t_uint256","nativeSrc":"3060:75:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"3093:5:55","nodeType":"YulTypedName","src":"3093:5:55","type":""}],"returnVariables":[{"name":"ret","nativeSrc":"3103:3:55","nodeType":"YulTypedName","src":"3103:3:55","type":""}],"src":"3060:75:55"},{"body":{"nativeSrc":"3217:193:55","nodeType":"YulBlock","src":"3217:193:55","statements":[{"nativeSrc":"3227:63:55","nodeType":"YulVariableDeclaration","src":"3227:63:55","value":{"arguments":[{"name":"value_0","nativeSrc":"3282:7:55","nodeType":"YulIdentifier","src":"3282:7:55"}],"functionName":{"name":"convert_t_uint256_to_t_uint256","nativeSrc":"3251:30:55","nodeType":"YulIdentifier","src":"3251:30:55"},"nativeSrc":"3251:39:55","nodeType":"YulFunctionCall","src":"3251:39:55"},"variables":[{"name":"convertedValue_0","nativeSrc":"3231:16:55","nodeType":"YulTypedName","src":"3231:16:55","type":""}]},{"expression":{"arguments":[{"name":"slot","nativeSrc":"3306:4:55","nodeType":"YulIdentifier","src":"3306:4:55"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"3346:4:55","nodeType":"YulIdentifier","src":"3346:4:55"}],"functionName":{"name":"sload","nativeSrc":"3340:5:55","nodeType":"YulIdentifier","src":"3340:5:55"},"nativeSrc":"3340:11:55","nodeType":"YulFunctionCall","src":"3340:11:55"},{"name":"offset","nativeSrc":"3353:6:55","nodeType":"YulIdentifier","src":"3353:6:55"},{"arguments":[{"name":"convertedValue_0","nativeSrc":"3385:16:55","nodeType":"YulIdentifier","src":"3385:16:55"}],"functionName":{"name":"prepare_store_t_uint256","nativeSrc":"3361:23:55","nodeType":"YulIdentifier","src":"3361:23:55"},"nativeSrc":"3361:41:55","nodeType":"YulFunctionCall","src":"3361:41:55"}],"functionName":{"name":"update_byte_slice_dynamic32","nativeSrc":"3312:27:55","nodeType":"YulIdentifier","src":"3312:27:55"},"nativeSrc":"3312:91:55","nodeType":"YulFunctionCall","src":"3312:91:55"}],"functionName":{"name":"sstore","nativeSrc":"3299:6:55","nodeType":"YulIdentifier","src":"3299:6:55"},"nativeSrc":"3299:105:55","nodeType":"YulFunctionCall","src":"3299:105:55"},"nativeSrc":"3299:105:55","nodeType":"YulExpressionStatement","src":"3299:105:55"}]},"name":"update_storage_value_t_uint256_to_t_uint256","nativeSrc":"3141:269:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"3194:4:55","nodeType":"YulTypedName","src":"3194:4:55","type":""},{"name":"offset","nativeSrc":"3200:6:55","nodeType":"YulTypedName","src":"3200:6:55","type":""},{"name":"value_0","nativeSrc":"3208:7:55","nodeType":"YulTypedName","src":"3208:7:55","type":""}],"src":"3141:269:55"},{"body":{"nativeSrc":"3465:24:55","nodeType":"YulBlock","src":"3465:24:55","statements":[{"nativeSrc":"3475:8:55","nodeType":"YulAssignment","src":"3475:8:55","value":{"kind":"number","nativeSrc":"3482:1:55","nodeType":"YulLiteral","src":"3482:1:55","type":"","value":"0"},"variableNames":[{"name":"ret","nativeSrc":"3475:3:55","nodeType":"YulIdentifier","src":"3475:3:55"}]}]},"name":"zero_value_for_split_t_uint256","nativeSrc":"3416:73:55","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"ret","nativeSrc":"3461:3:55","nodeType":"YulTypedName","src":"3461:3:55","type":""}],"src":"3416:73:55"},{"body":{"nativeSrc":"3548:136:55","nodeType":"YulBlock","src":"3548:136:55","statements":[{"nativeSrc":"3558:46:55","nodeType":"YulVariableDeclaration","src":"3558:46:55","value":{"arguments":[],"functionName":{"name":"zero_value_for_split_t_uint256","nativeSrc":"3572:30:55","nodeType":"YulIdentifier","src":"3572:30:55"},"nativeSrc":"3572:32:55","nodeType":"YulFunctionCall","src":"3572:32:55"},"variables":[{"name":"zero_0","nativeSrc":"3562:6:55","nodeType":"YulTypedName","src":"3562:6:55","type":""}]},{"expression":{"arguments":[{"name":"slot","nativeSrc":"3657:4:55","nodeType":"YulIdentifier","src":"3657:4:55"},{"name":"offset","nativeSrc":"3663:6:55","nodeType":"YulIdentifier","src":"3663:6:55"},{"name":"zero_0","nativeSrc":"3671:6:55","nodeType":"YulIdentifier","src":"3671:6:55"}],"functionName":{"name":"update_storage_value_t_uint256_to_t_uint256","nativeSrc":"3613:43:55","nodeType":"YulIdentifier","src":"3613:43:55"},"nativeSrc":"3613:65:55","nodeType":"YulFunctionCall","src":"3613:65:55"},"nativeSrc":"3613:65:55","nodeType":"YulExpressionStatement","src":"3613:65:55"}]},"name":"storage_set_to_zero_t_uint256","nativeSrc":"3495:189:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"3534:4:55","nodeType":"YulTypedName","src":"3534:4:55","type":""},{"name":"offset","nativeSrc":"3540:6:55","nodeType":"YulTypedName","src":"3540:6:55","type":""}],"src":"3495:189:55"},{"body":{"nativeSrc":"3740:136:55","nodeType":"YulBlock","src":"3740:136:55","statements":[{"body":{"nativeSrc":"3807:63:55","nodeType":"YulBlock","src":"3807:63:55","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"3851:5:55","nodeType":"YulIdentifier","src":"3851:5:55"},{"kind":"number","nativeSrc":"3858:1:55","nodeType":"YulLiteral","src":"3858:1:55","type":"","value":"0"}],"functionName":{"name":"storage_set_to_zero_t_uint256","nativeSrc":"3821:29:55","nodeType":"YulIdentifier","src":"3821:29:55"},"nativeSrc":"3821:39:55","nodeType":"YulFunctionCall","src":"3821:39:55"},"nativeSrc":"3821:39:55","nodeType":"YulExpressionStatement","src":"3821:39:55"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"3760:5:55","nodeType":"YulIdentifier","src":"3760:5:55"},{"name":"end","nativeSrc":"3767:3:55","nodeType":"YulIdentifier","src":"3767:3:55"}],"functionName":{"name":"lt","nativeSrc":"3757:2:55","nodeType":"YulIdentifier","src":"3757:2:55"},"nativeSrc":"3757:14:55","nodeType":"YulFunctionCall","src":"3757:14:55"},"nativeSrc":"3750:120:55","nodeType":"YulForLoop","post":{"nativeSrc":"3772:26:55","nodeType":"YulBlock","src":"3772:26:55","statements":[{"nativeSrc":"3774:22:55","nodeType":"YulAssignment","src":"3774:22:55","value":{"arguments":[{"name":"start","nativeSrc":"3787:5:55","nodeType":"YulIdentifier","src":"3787:5:55"},{"kind":"number","nativeSrc":"3794:1:55","nodeType":"YulLiteral","src":"3794:1:55","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"3783:3:55","nodeType":"YulIdentifier","src":"3783:3:55"},"nativeSrc":"3783:13:55","nodeType":"YulFunctionCall","src":"3783:13:55"},"variableNames":[{"name":"start","nativeSrc":"3774:5:55","nodeType":"YulIdentifier","src":"3774:5:55"}]}]},"pre":{"nativeSrc":"3754:2:55","nodeType":"YulBlock","src":"3754:2:55","statements":[]},"src":"3750:120:55"}]},"name":"clear_storage_range_t_bytes1","nativeSrc":"3690:186:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nativeSrc":"3728:5:55","nodeType":"YulTypedName","src":"3728:5:55","type":""},{"name":"end","nativeSrc":"3735:3:55","nodeType":"YulTypedName","src":"3735:3:55","type":""}],"src":"3690:186:55"},{"body":{"nativeSrc":"3961:464:55","nodeType":"YulBlock","src":"3961:464:55","statements":[{"body":{"nativeSrc":"3987:431:55","nodeType":"YulBlock","src":"3987:431:55","statements":[{"nativeSrc":"4001:54:55","nodeType":"YulVariableDeclaration","src":"4001:54:55","value":{"arguments":[{"name":"array","nativeSrc":"4049:5:55","nodeType":"YulIdentifier","src":"4049:5:55"}],"functionName":{"name":"array_dataslot_t_string_storage","nativeSrc":"4017:31:55","nodeType":"YulIdentifier","src":"4017:31:55"},"nativeSrc":"4017:38:55","nodeType":"YulFunctionCall","src":"4017:38:55"},"variables":[{"name":"dataArea","nativeSrc":"4005:8:55","nodeType":"YulTypedName","src":"4005:8:55","type":""}]},{"nativeSrc":"4068:63:55","nodeType":"YulVariableDeclaration","src":"4068:63:55","value":{"arguments":[{"name":"dataArea","nativeSrc":"4091:8:55","nodeType":"YulIdentifier","src":"4091:8:55"},{"arguments":[{"name":"startIndex","nativeSrc":"4119:10:55","nodeType":"YulIdentifier","src":"4119:10:55"}],"functionName":{"name":"divide_by_32_ceil","nativeSrc":"4101:17:55","nodeType":"YulIdentifier","src":"4101:17:55"},"nativeSrc":"4101:29:55","nodeType":"YulFunctionCall","src":"4101:29:55"}],"functionName":{"name":"add","nativeSrc":"4087:3:55","nodeType":"YulIdentifier","src":"4087:3:55"},"nativeSrc":"4087:44:55","nodeType":"YulFunctionCall","src":"4087:44:55"},"variables":[{"name":"deleteStart","nativeSrc":"4072:11:55","nodeType":"YulTypedName","src":"4072:11:55","type":""}]},{"body":{"nativeSrc":"4288:27:55","nodeType":"YulBlock","src":"4288:27:55","statements":[{"nativeSrc":"4290:23:55","nodeType":"YulAssignment","src":"4290:23:55","value":{"name":"dataArea","nativeSrc":"4305:8:55","nodeType":"YulIdentifier","src":"4305:8:55"},"variableNames":[{"name":"deleteStart","nativeSrc":"4290:11:55","nodeType":"YulIdentifier","src":"4290:11:55"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"4272:10:55","nodeType":"YulIdentifier","src":"4272:10:55"},{"kind":"number","nativeSrc":"4284:2:55","nodeType":"YulLiteral","src":"4284:2:55","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"4269:2:55","nodeType":"YulIdentifier","src":"4269:2:55"},"nativeSrc":"4269:18:55","nodeType":"YulFunctionCall","src":"4269:18:55"},"nativeSrc":"4266:49:55","nodeType":"YulIf","src":"4266:49:55"},{"expression":{"arguments":[{"name":"deleteStart","nativeSrc":"4357:11:55","nodeType":"YulIdentifier","src":"4357:11:55"},{"arguments":[{"name":"dataArea","nativeSrc":"4374:8:55","nodeType":"YulIdentifier","src":"4374:8:55"},{"arguments":[{"name":"len","nativeSrc":"4402:3:55","nodeType":"YulIdentifier","src":"4402:3:55"}],"functionName":{"name":"divide_by_32_ceil","nativeSrc":"4384:17:55","nodeType":"YulIdentifier","src":"4384:17:55"},"nativeSrc":"4384:22:55","nodeType":"YulFunctionCall","src":"4384:22:55"}],"functionName":{"name":"add","nativeSrc":"4370:3:55","nodeType":"YulIdentifier","src":"4370:3:55"},"nativeSrc":"4370:37:55","nodeType":"YulFunctionCall","src":"4370:37:55"}],"functionName":{"name":"clear_storage_range_t_bytes1","nativeSrc":"4328:28:55","nodeType":"YulIdentifier","src":"4328:28:55"},"nativeSrc":"4328:80:55","nodeType":"YulFunctionCall","src":"4328:80:55"},"nativeSrc":"4328:80:55","nodeType":"YulExpressionStatement","src":"4328:80:55"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"3978:3:55","nodeType":"YulIdentifier","src":"3978:3:55"},{"kind":"number","nativeSrc":"3983:2:55","nodeType":"YulLiteral","src":"3983:2:55","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"3975:2:55","nodeType":"YulIdentifier","src":"3975:2:55"},"nativeSrc":"3975:11:55","nodeType":"YulFunctionCall","src":"3975:11:55"},"nativeSrc":"3972:446:55","nodeType":"YulIf","src":"3972:446:55"}]},"name":"clean_up_bytearray_end_slots_t_string_storage","nativeSrc":"3882:543:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"3937:5:55","nodeType":"YulTypedName","src":"3937:5:55","type":""},{"name":"len","nativeSrc":"3944:3:55","nodeType":"YulTypedName","src":"3944:3:55","type":""},{"name":"startIndex","nativeSrc":"3949:10:55","nodeType":"YulTypedName","src":"3949:10:55","type":""}],"src":"3882:543:55"},{"body":{"nativeSrc":"4494:54:55","nodeType":"YulBlock","src":"4494:54:55","statements":[{"nativeSrc":"4504:37:55","nodeType":"YulAssignment","src":"4504:37:55","value":{"arguments":[{"name":"bits","nativeSrc":"4529:4:55","nodeType":"YulIdentifier","src":"4529:4:55"},{"name":"value","nativeSrc":"4535:5:55","nodeType":"YulIdentifier","src":"4535:5:55"}],"functionName":{"name":"shr","nativeSrc":"4525:3:55","nodeType":"YulIdentifier","src":"4525:3:55"},"nativeSrc":"4525:16:55","nodeType":"YulFunctionCall","src":"4525:16:55"},"variableNames":[{"name":"newValue","nativeSrc":"4504:8:55","nodeType":"YulIdentifier","src":"4504:8:55"}]}]},"name":"shift_right_unsigned_dynamic","nativeSrc":"4431:117:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"bits","nativeSrc":"4469:4:55","nodeType":"YulTypedName","src":"4469:4:55","type":""},{"name":"value","nativeSrc":"4475:5:55","nodeType":"YulTypedName","src":"4475:5:55","type":""}],"returnVariables":[{"name":"newValue","nativeSrc":"4485:8:55","nodeType":"YulTypedName","src":"4485:8:55","type":""}],"src":"4431:117:55"},{"body":{"nativeSrc":"4605:118:55","nodeType":"YulBlock","src":"4605:118:55","statements":[{"nativeSrc":"4615:68:55","nodeType":"YulVariableDeclaration","src":"4615:68:55","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4664:1:55","nodeType":"YulLiteral","src":"4664:1:55","type":"","value":"8"},{"name":"bytes","nativeSrc":"4667:5:55","nodeType":"YulIdentifier","src":"4667:5:55"}],"functionName":{"name":"mul","nativeSrc":"4660:3:55","nodeType":"YulIdentifier","src":"4660:3:55"},"nativeSrc":"4660:13:55","nodeType":"YulFunctionCall","src":"4660:13:55"},{"arguments":[{"kind":"number","nativeSrc":"4679:1:55","nodeType":"YulLiteral","src":"4679:1:55","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"4675:3:55","nodeType":"YulIdentifier","src":"4675:3:55"},"nativeSrc":"4675:6:55","nodeType":"YulFunctionCall","src":"4675:6:55"}],"functionName":{"name":"shift_right_unsigned_dynamic","nativeSrc":"4631:28:55","nodeType":"YulIdentifier","src":"4631:28:55"},"nativeSrc":"4631:51:55","nodeType":"YulFunctionCall","src":"4631:51:55"}],"functionName":{"name":"not","nativeSrc":"4627:3:55","nodeType":"YulIdentifier","src":"4627:3:55"},"nativeSrc":"4627:56:55","nodeType":"YulFunctionCall","src":"4627:56:55"},"variables":[{"name":"mask","nativeSrc":"4619:4:55","nodeType":"YulTypedName","src":"4619:4:55","type":""}]},{"nativeSrc":"4692:25:55","nodeType":"YulAssignment","src":"4692:25:55","value":{"arguments":[{"name":"data","nativeSrc":"4706:4:55","nodeType":"YulIdentifier","src":"4706:4:55"},{"name":"mask","nativeSrc":"4712:4:55","nodeType":"YulIdentifier","src":"4712:4:55"}],"functionName":{"name":"and","nativeSrc":"4702:3:55","nodeType":"YulIdentifier","src":"4702:3:55"},"nativeSrc":"4702:15:55","nodeType":"YulFunctionCall","src":"4702:15:55"},"variableNames":[{"name":"result","nativeSrc":"4692:6:55","nodeType":"YulIdentifier","src":"4692:6:55"}]}]},"name":"mask_bytes_dynamic","nativeSrc":"4554:169:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"4582:4:55","nodeType":"YulTypedName","src":"4582:4:55","type":""},{"name":"bytes","nativeSrc":"4588:5:55","nodeType":"YulTypedName","src":"4588:5:55","type":""}],"returnVariables":[{"name":"result","nativeSrc":"4598:6:55","nodeType":"YulTypedName","src":"4598:6:55","type":""}],"src":"4554:169:55"},{"body":{"nativeSrc":"4809:214:55","nodeType":"YulBlock","src":"4809:214:55","statements":[{"nativeSrc":"4942:37:55","nodeType":"YulAssignment","src":"4942:37:55","value":{"arguments":[{"name":"data","nativeSrc":"4969:4:55","nodeType":"YulIdentifier","src":"4969:4:55"},{"name":"len","nativeSrc":"4975:3:55","nodeType":"YulIdentifier","src":"4975:3:55"}],"functionName":{"name":"mask_bytes_dynamic","nativeSrc":"4950:18:55","nodeType":"YulIdentifier","src":"4950:18:55"},"nativeSrc":"4950:29:55","nodeType":"YulFunctionCall","src":"4950:29:55"},"variableNames":[{"name":"data","nativeSrc":"4942:4:55","nodeType":"YulIdentifier","src":"4942:4:55"}]},{"nativeSrc":"4988:29:55","nodeType":"YulAssignment","src":"4988:29:55","value":{"arguments":[{"name":"data","nativeSrc":"4999:4:55","nodeType":"YulIdentifier","src":"4999:4:55"},{"arguments":[{"kind":"number","nativeSrc":"5009:1:55","nodeType":"YulLiteral","src":"5009:1:55","type":"","value":"2"},{"name":"len","nativeSrc":"5012:3:55","nodeType":"YulIdentifier","src":"5012:3:55"}],"functionName":{"name":"mul","nativeSrc":"5005:3:55","nodeType":"YulIdentifier","src":"5005:3:55"},"nativeSrc":"5005:11:55","nodeType":"YulFunctionCall","src":"5005:11:55"}],"functionName":{"name":"or","nativeSrc":"4996:2:55","nodeType":"YulIdentifier","src":"4996:2:55"},"nativeSrc":"4996:21:55","nodeType":"YulFunctionCall","src":"4996:21:55"},"variableNames":[{"name":"used","nativeSrc":"4988:4:55","nodeType":"YulIdentifier","src":"4988:4:55"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"4728:295:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"4790:4:55","nodeType":"YulTypedName","src":"4790:4:55","type":""},{"name":"len","nativeSrc":"4796:3:55","nodeType":"YulTypedName","src":"4796:3:55","type":""}],"returnVariables":[{"name":"used","nativeSrc":"4804:4:55","nodeType":"YulTypedName","src":"4804:4:55","type":""}],"src":"4728:295:55"},{"body":{"nativeSrc":"5120:1303:55","nodeType":"YulBlock","src":"5120:1303:55","statements":[{"nativeSrc":"5131:51:55","nodeType":"YulVariableDeclaration","src":"5131:51:55","value":{"arguments":[{"name":"src","nativeSrc":"5178:3:55","nodeType":"YulIdentifier","src":"5178:3:55"}],"functionName":{"name":"array_length_t_string_memory_ptr","nativeSrc":"5145:32:55","nodeType":"YulIdentifier","src":"5145:32:55"},"nativeSrc":"5145:37:55","nodeType":"YulFunctionCall","src":"5145:37:55"},"variables":[{"name":"newLen","nativeSrc":"5135:6:55","nodeType":"YulTypedName","src":"5135:6:55","type":""}]},{"body":{"nativeSrc":"5267:22:55","nodeType":"YulBlock","src":"5267:22:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"5269:16:55","nodeType":"YulIdentifier","src":"5269:16:55"},"nativeSrc":"5269:18:55","nodeType":"YulFunctionCall","src":"5269:18:55"},"nativeSrc":"5269:18:55","nodeType":"YulExpressionStatement","src":"5269:18:55"}]},"condition":{"arguments":[{"name":"newLen","nativeSrc":"5239:6:55","nodeType":"YulIdentifier","src":"5239:6:55"},{"kind":"number","nativeSrc":"5247:18:55","nodeType":"YulLiteral","src":"5247:18:55","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"5236:2:55","nodeType":"YulIdentifier","src":"5236:2:55"},"nativeSrc":"5236:30:55","nodeType":"YulFunctionCall","src":"5236:30:55"},"nativeSrc":"5233:56:55","nodeType":"YulIf","src":"5233:56:55"},{"nativeSrc":"5299:52:55","nodeType":"YulVariableDeclaration","src":"5299:52:55","value":{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"5345:4:55","nodeType":"YulIdentifier","src":"5345:4:55"}],"functionName":{"name":"sload","nativeSrc":"5339:5:55","nodeType":"YulIdentifier","src":"5339:5:55"},"nativeSrc":"5339:11:55","nodeType":"YulFunctionCall","src":"5339:11:55"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"5313:25:55","nodeType":"YulIdentifier","src":"5313:25:55"},"nativeSrc":"5313:38:55","nodeType":"YulFunctionCall","src":"5313:38:55"},"variables":[{"name":"oldLen","nativeSrc":"5303:6:55","nodeType":"YulTypedName","src":"5303:6:55","type":""}]},{"expression":{"arguments":[{"name":"slot","nativeSrc":"5444:4:55","nodeType":"YulIdentifier","src":"5444:4:55"},{"name":"oldLen","nativeSrc":"5450:6:55","nodeType":"YulIdentifier","src":"5450:6:55"},{"name":"newLen","nativeSrc":"5458:6:55","nodeType":"YulIdentifier","src":"5458:6:55"}],"functionName":{"name":"clean_up_bytearray_end_slots_t_string_storage","nativeSrc":"5398:45:55","nodeType":"YulIdentifier","src":"5398:45:55"},"nativeSrc":"5398:67:55","nodeType":"YulFunctionCall","src":"5398:67:55"},"nativeSrc":"5398:67:55","nodeType":"YulExpressionStatement","src":"5398:67:55"},{"nativeSrc":"5475:18:55","nodeType":"YulVariableDeclaration","src":"5475:18:55","value":{"kind":"number","nativeSrc":"5492:1:55","nodeType":"YulLiteral","src":"5492:1:55","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"5479:9:55","nodeType":"YulTypedName","src":"5479:9:55","type":""}]},{"nativeSrc":"5503:17:55","nodeType":"YulAssignment","src":"5503:17:55","value":{"kind":"number","nativeSrc":"5516:4:55","nodeType":"YulLiteral","src":"5516:4:55","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nativeSrc":"5503:9:55","nodeType":"YulIdentifier","src":"5503:9:55"}]},{"cases":[{"body":{"nativeSrc":"5567:611:55","nodeType":"YulBlock","src":"5567:611:55","statements":[{"nativeSrc":"5581:37:55","nodeType":"YulVariableDeclaration","src":"5581:37:55","value":{"arguments":[{"name":"newLen","nativeSrc":"5600:6:55","nodeType":"YulIdentifier","src":"5600:6:55"},{"arguments":[{"kind":"number","nativeSrc":"5612:4:55","nodeType":"YulLiteral","src":"5612:4:55","type":"","value":"0x1f"}],"functionName":{"name":"not","nativeSrc":"5608:3:55","nodeType":"YulIdentifier","src":"5608:3:55"},"nativeSrc":"5608:9:55","nodeType":"YulFunctionCall","src":"5608:9:55"}],"functionName":{"name":"and","nativeSrc":"5596:3:55","nodeType":"YulIdentifier","src":"5596:3:55"},"nativeSrc":"5596:22:55","nodeType":"YulFunctionCall","src":"5596:22:55"},"variables":[{"name":"loopEnd","nativeSrc":"5585:7:55","nodeType":"YulTypedName","src":"5585:7:55","type":""}]},{"nativeSrc":"5632:51:55","nodeType":"YulVariableDeclaration","src":"5632:51:55","value":{"arguments":[{"name":"slot","nativeSrc":"5678:4:55","nodeType":"YulIdentifier","src":"5678:4:55"}],"functionName":{"name":"array_dataslot_t_string_storage","nativeSrc":"5646:31:55","nodeType":"YulIdentifier","src":"5646:31:55"},"nativeSrc":"5646:37:55","nodeType":"YulFunctionCall","src":"5646:37:55"},"variables":[{"name":"dstPtr","nativeSrc":"5636:6:55","nodeType":"YulTypedName","src":"5636:6:55","type":""}]},{"nativeSrc":"5696:10:55","nodeType":"YulVariableDeclaration","src":"5696:10:55","value":{"kind":"number","nativeSrc":"5705:1:55","nodeType":"YulLiteral","src":"5705:1:55","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"5700:1:55","nodeType":"YulTypedName","src":"5700:1:55","type":""}]},{"body":{"nativeSrc":"5764:163:55","nodeType":"YulBlock","src":"5764:163:55","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"5789:6:55","nodeType":"YulIdentifier","src":"5789:6:55"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"5807:3:55","nodeType":"YulIdentifier","src":"5807:3:55"},{"name":"srcOffset","nativeSrc":"5812:9:55","nodeType":"YulIdentifier","src":"5812:9:55"}],"functionName":{"name":"add","nativeSrc":"5803:3:55","nodeType":"YulIdentifier","src":"5803:3:55"},"nativeSrc":"5803:19:55","nodeType":"YulFunctionCall","src":"5803:19:55"}],"functionName":{"name":"mload","nativeSrc":"5797:5:55","nodeType":"YulIdentifier","src":"5797:5:55"},"nativeSrc":"5797:26:55","nodeType":"YulFunctionCall","src":"5797:26:55"}],"functionName":{"name":"sstore","nativeSrc":"5782:6:55","nodeType":"YulIdentifier","src":"5782:6:55"},"nativeSrc":"5782:42:55","nodeType":"YulFunctionCall","src":"5782:42:55"},"nativeSrc":"5782:42:55","nodeType":"YulExpressionStatement","src":"5782:42:55"},{"nativeSrc":"5841:24:55","nodeType":"YulAssignment","src":"5841:24:55","value":{"arguments":[{"name":"dstPtr","nativeSrc":"5855:6:55","nodeType":"YulIdentifier","src":"5855:6:55"},{"kind":"number","nativeSrc":"5863:1:55","nodeType":"YulLiteral","src":"5863:1:55","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"5851:3:55","nodeType":"YulIdentifier","src":"5851:3:55"},"nativeSrc":"5851:14:55","nodeType":"YulFunctionCall","src":"5851:14:55"},"variableNames":[{"name":"dstPtr","nativeSrc":"5841:6:55","nodeType":"YulIdentifier","src":"5841:6:55"}]},{"nativeSrc":"5882:31:55","nodeType":"YulAssignment","src":"5882:31:55","value":{"arguments":[{"name":"srcOffset","nativeSrc":"5899:9:55","nodeType":"YulIdentifier","src":"5899:9:55"},{"kind":"number","nativeSrc":"5910:2:55","nodeType":"YulLiteral","src":"5910:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5895:3:55","nodeType":"YulIdentifier","src":"5895:3:55"},"nativeSrc":"5895:18:55","nodeType":"YulFunctionCall","src":"5895:18:55"},"variableNames":[{"name":"srcOffset","nativeSrc":"5882:9:55","nodeType":"YulIdentifier","src":"5882:9:55"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"5730:1:55","nodeType":"YulIdentifier","src":"5730:1:55"},{"name":"loopEnd","nativeSrc":"5733:7:55","nodeType":"YulIdentifier","src":"5733:7:55"}],"functionName":{"name":"lt","nativeSrc":"5727:2:55","nodeType":"YulIdentifier","src":"5727:2:55"},"nativeSrc":"5727:14:55","nodeType":"YulFunctionCall","src":"5727:14:55"},"nativeSrc":"5719:208:55","nodeType":"YulForLoop","post":{"nativeSrc":"5742:21:55","nodeType":"YulBlock","src":"5742:21:55","statements":[{"nativeSrc":"5744:17:55","nodeType":"YulAssignment","src":"5744:17:55","value":{"arguments":[{"name":"i","nativeSrc":"5753:1:55","nodeType":"YulIdentifier","src":"5753:1:55"},{"kind":"number","nativeSrc":"5756:4:55","nodeType":"YulLiteral","src":"5756:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5749:3:55","nodeType":"YulIdentifier","src":"5749:3:55"},"nativeSrc":"5749:12:55","nodeType":"YulFunctionCall","src":"5749:12:55"},"variableNames":[{"name":"i","nativeSrc":"5744:1:55","nodeType":"YulIdentifier","src":"5744:1:55"}]}]},"pre":{"nativeSrc":"5723:3:55","nodeType":"YulBlock","src":"5723:3:55","statements":[]},"src":"5719:208:55"},{"body":{"nativeSrc":"5963:156:55","nodeType":"YulBlock","src":"5963:156:55","statements":[{"nativeSrc":"5981:43:55","nodeType":"YulVariableDeclaration","src":"5981:43:55","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"6008:3:55","nodeType":"YulIdentifier","src":"6008:3:55"},{"name":"srcOffset","nativeSrc":"6013:9:55","nodeType":"YulIdentifier","src":"6013:9:55"}],"functionName":{"name":"add","nativeSrc":"6004:3:55","nodeType":"YulIdentifier","src":"6004:3:55"},"nativeSrc":"6004:19:55","nodeType":"YulFunctionCall","src":"6004:19:55"}],"functionName":{"name":"mload","nativeSrc":"5998:5:55","nodeType":"YulIdentifier","src":"5998:5:55"},"nativeSrc":"5998:26:55","nodeType":"YulFunctionCall","src":"5998:26:55"},"variables":[{"name":"lastValue","nativeSrc":"5985:9:55","nodeType":"YulTypedName","src":"5985:9:55","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"6048:6:55","nodeType":"YulIdentifier","src":"6048:6:55"},{"arguments":[{"name":"lastValue","nativeSrc":"6075:9:55","nodeType":"YulIdentifier","src":"6075:9:55"},{"arguments":[{"name":"newLen","nativeSrc":"6090:6:55","nodeType":"YulIdentifier","src":"6090:6:55"},{"kind":"number","nativeSrc":"6098:4:55","nodeType":"YulLiteral","src":"6098:4:55","type":"","value":"0x1f"}],"functionName":{"name":"and","nativeSrc":"6086:3:55","nodeType":"YulIdentifier","src":"6086:3:55"},"nativeSrc":"6086:17:55","nodeType":"YulFunctionCall","src":"6086:17:55"}],"functionName":{"name":"mask_bytes_dynamic","nativeSrc":"6056:18:55","nodeType":"YulIdentifier","src":"6056:18:55"},"nativeSrc":"6056:48:55","nodeType":"YulFunctionCall","src":"6056:48:55"}],"functionName":{"name":"sstore","nativeSrc":"6041:6:55","nodeType":"YulIdentifier","src":"6041:6:55"},"nativeSrc":"6041:64:55","nodeType":"YulFunctionCall","src":"6041:64:55"},"nativeSrc":"6041:64:55","nodeType":"YulExpressionStatement","src":"6041:64:55"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"5946:7:55","nodeType":"YulIdentifier","src":"5946:7:55"},{"name":"newLen","nativeSrc":"5955:6:55","nodeType":"YulIdentifier","src":"5955:6:55"}],"functionName":{"name":"lt","nativeSrc":"5943:2:55","nodeType":"YulIdentifier","src":"5943:2:55"},"nativeSrc":"5943:19:55","nodeType":"YulFunctionCall","src":"5943:19:55"},"nativeSrc":"5940:179:55","nodeType":"YulIf","src":"5940:179:55"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"6139:4:55","nodeType":"YulIdentifier","src":"6139:4:55"},{"arguments":[{"arguments":[{"name":"newLen","nativeSrc":"6153:6:55","nodeType":"YulIdentifier","src":"6153:6:55"},{"kind":"number","nativeSrc":"6161:1:55","nodeType":"YulLiteral","src":"6161:1:55","type":"","value":"2"}],"functionName":{"name":"mul","nativeSrc":"6149:3:55","nodeType":"YulIdentifier","src":"6149:3:55"},"nativeSrc":"6149:14:55","nodeType":"YulFunctionCall","src":"6149:14:55"},{"kind":"number","nativeSrc":"6165:1:55","nodeType":"YulLiteral","src":"6165:1:55","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"6145:3:55","nodeType":"YulIdentifier","src":"6145:3:55"},"nativeSrc":"6145:22:55","nodeType":"YulFunctionCall","src":"6145:22:55"}],"functionName":{"name":"sstore","nativeSrc":"6132:6:55","nodeType":"YulIdentifier","src":"6132:6:55"},"nativeSrc":"6132:36:55","nodeType":"YulFunctionCall","src":"6132:36:55"},"nativeSrc":"6132:36:55","nodeType":"YulExpressionStatement","src":"6132:36:55"}]},"nativeSrc":"5560:618:55","nodeType":"YulCase","src":"5560:618:55","value":{"kind":"number","nativeSrc":"5565:1:55","nodeType":"YulLiteral","src":"5565:1:55","type":"","value":"1"}},{"body":{"nativeSrc":"6195:222:55","nodeType":"YulBlock","src":"6195:222:55","statements":[{"nativeSrc":"6209:14:55","nodeType":"YulVariableDeclaration","src":"6209:14:55","value":{"kind":"number","nativeSrc":"6222:1:55","nodeType":"YulLiteral","src":"6222:1:55","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"6213:5:55","nodeType":"YulTypedName","src":"6213:5:55","type":""}]},{"body":{"nativeSrc":"6246:67:55","nodeType":"YulBlock","src":"6246:67:55","statements":[{"nativeSrc":"6264:35:55","nodeType":"YulAssignment","src":"6264:35:55","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"6283:3:55","nodeType":"YulIdentifier","src":"6283:3:55"},{"name":"srcOffset","nativeSrc":"6288:9:55","nodeType":"YulIdentifier","src":"6288:9:55"}],"functionName":{"name":"add","nativeSrc":"6279:3:55","nodeType":"YulIdentifier","src":"6279:3:55"},"nativeSrc":"6279:19:55","nodeType":"YulFunctionCall","src":"6279:19:55"}],"functionName":{"name":"mload","nativeSrc":"6273:5:55","nodeType":"YulIdentifier","src":"6273:5:55"},"nativeSrc":"6273:26:55","nodeType":"YulFunctionCall","src":"6273:26:55"},"variableNames":[{"name":"value","nativeSrc":"6264:5:55","nodeType":"YulIdentifier","src":"6264:5:55"}]}]},"condition":{"name":"newLen","nativeSrc":"6239:6:55","nodeType":"YulIdentifier","src":"6239:6:55"},"nativeSrc":"6236:77:55","nodeType":"YulIf","src":"6236:77:55"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"6333:4:55","nodeType":"YulIdentifier","src":"6333:4:55"},{"arguments":[{"name":"value","nativeSrc":"6392:5:55","nodeType":"YulIdentifier","src":"6392:5:55"},{"name":"newLen","nativeSrc":"6399:6:55","nodeType":"YulIdentifier","src":"6399:6:55"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"6339:52:55","nodeType":"YulIdentifier","src":"6339:52:55"},"nativeSrc":"6339:67:55","nodeType":"YulFunctionCall","src":"6339:67:55"}],"functionName":{"name":"sstore","nativeSrc":"6326:6:55","nodeType":"YulIdentifier","src":"6326:6:55"},"nativeSrc":"6326:81:55","nodeType":"YulFunctionCall","src":"6326:81:55"},"nativeSrc":"6326:81:55","nodeType":"YulExpressionStatement","src":"6326:81:55"}]},"nativeSrc":"6187:230:55","nodeType":"YulCase","src":"6187:230:55","value":"default"}],"expression":{"arguments":[{"name":"newLen","nativeSrc":"5540:6:55","nodeType":"YulIdentifier","src":"5540:6:55"},{"kind":"number","nativeSrc":"5548:2:55","nodeType":"YulLiteral","src":"5548:2:55","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"5537:2:55","nodeType":"YulIdentifier","src":"5537:2:55"},"nativeSrc":"5537:14:55","nodeType":"YulFunctionCall","src":"5537:14:55"},"nativeSrc":"5530:887:55","nodeType":"YulSwitch","src":"5530:887:55"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nativeSrc":"5028:1395:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"5109:4:55","nodeType":"YulTypedName","src":"5109:4:55","type":""},{"name":"src","nativeSrc":"5115:3:55","nodeType":"YulTypedName","src":"5115:3:55","type":""}],"src":"5028:1395:55"},{"body":{"nativeSrc":"6474:32:55","nodeType":"YulBlock","src":"6474:32:55","statements":[{"nativeSrc":"6484:16:55","nodeType":"YulAssignment","src":"6484:16:55","value":{"name":"value","nativeSrc":"6495:5:55","nodeType":"YulIdentifier","src":"6495:5:55"},"variableNames":[{"name":"cleaned","nativeSrc":"6484:7:55","nodeType":"YulIdentifier","src":"6484:7:55"}]}]},"name":"cleanup_t_bytes32","nativeSrc":"6429:77:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"6456:5:55","nodeType":"YulTypedName","src":"6456:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"6466:7:55","nodeType":"YulTypedName","src":"6466:7:55","type":""}],"src":"6429:77:55"},{"body":{"nativeSrc":"6577:53:55","nodeType":"YulBlock","src":"6577:53:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"6594:3:55","nodeType":"YulIdentifier","src":"6594:3:55"},{"arguments":[{"name":"value","nativeSrc":"6617:5:55","nodeType":"YulIdentifier","src":"6617:5:55"}],"functionName":{"name":"cleanup_t_bytes32","nativeSrc":"6599:17:55","nodeType":"YulIdentifier","src":"6599:17:55"},"nativeSrc":"6599:24:55","nodeType":"YulFunctionCall","src":"6599:24:55"}],"functionName":{"name":"mstore","nativeSrc":"6587:6:55","nodeType":"YulIdentifier","src":"6587:6:55"},"nativeSrc":"6587:37:55","nodeType":"YulFunctionCall","src":"6587:37:55"},"nativeSrc":"6587:37:55","nodeType":"YulExpressionStatement","src":"6587:37:55"}]},"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nativeSrc":"6512:118:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"6565:5:55","nodeType":"YulTypedName","src":"6565:5:55","type":""},{"name":"pos","nativeSrc":"6572:3:55","nodeType":"YulTypedName","src":"6572:3:55","type":""}],"src":"6512:118:55"},{"body":{"nativeSrc":"6701:53:55","nodeType":"YulBlock","src":"6701:53:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"6718:3:55","nodeType":"YulIdentifier","src":"6718:3:55"},{"arguments":[{"name":"value","nativeSrc":"6741:5:55","nodeType":"YulIdentifier","src":"6741:5:55"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"6723:17:55","nodeType":"YulIdentifier","src":"6723:17:55"},"nativeSrc":"6723:24:55","nodeType":"YulFunctionCall","src":"6723:24:55"}],"functionName":{"name":"mstore","nativeSrc":"6711:6:55","nodeType":"YulIdentifier","src":"6711:6:55"},"nativeSrc":"6711:37:55","nodeType":"YulFunctionCall","src":"6711:37:55"},"nativeSrc":"6711:37:55","nodeType":"YulExpressionStatement","src":"6711:37:55"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"6636:118:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"6689:5:55","nodeType":"YulTypedName","src":"6689:5:55","type":""},{"name":"pos","nativeSrc":"6696:3:55","nodeType":"YulTypedName","src":"6696:3:55","type":""}],"src":"6636:118:55"},{"body":{"nativeSrc":"6825:53:55","nodeType":"YulBlock","src":"6825:53:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"6842:3:55","nodeType":"YulIdentifier","src":"6842:3:55"},{"arguments":[{"name":"value","nativeSrc":"6865:5:55","nodeType":"YulIdentifier","src":"6865:5:55"}],"functionName":{"name":"cleanup_t_address","nativeSrc":"6847:17:55","nodeType":"YulIdentifier","src":"6847:17:55"},"nativeSrc":"6847:24:55","nodeType":"YulFunctionCall","src":"6847:24:55"}],"functionName":{"name":"mstore","nativeSrc":"6835:6:55","nodeType":"YulIdentifier","src":"6835:6:55"},"nativeSrc":"6835:37:55","nodeType":"YulFunctionCall","src":"6835:37:55"},"nativeSrc":"6835:37:55","nodeType":"YulExpressionStatement","src":"6835:37:55"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"6760:118:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"6813:5:55","nodeType":"YulTypedName","src":"6813:5:55","type":""},{"name":"pos","nativeSrc":"6820:3:55","nodeType":"YulTypedName","src":"6820:3:55","type":""}],"src":"6760:118:55"},{"body":{"nativeSrc":"7094:454:55","nodeType":"YulBlock","src":"7094:454:55","statements":[{"nativeSrc":"7104:27:55","nodeType":"YulAssignment","src":"7104:27:55","value":{"arguments":[{"name":"headStart","nativeSrc":"7116:9:55","nodeType":"YulIdentifier","src":"7116:9:55"},{"kind":"number","nativeSrc":"7127:3:55","nodeType":"YulLiteral","src":"7127:3:55","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"7112:3:55","nodeType":"YulIdentifier","src":"7112:3:55"},"nativeSrc":"7112:19:55","nodeType":"YulFunctionCall","src":"7112:19:55"},"variableNames":[{"name":"tail","nativeSrc":"7104:4:55","nodeType":"YulIdentifier","src":"7104:4:55"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"7185:6:55","nodeType":"YulIdentifier","src":"7185:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"7198:9:55","nodeType":"YulIdentifier","src":"7198:9:55"},{"kind":"number","nativeSrc":"7209:1:55","nodeType":"YulLiteral","src":"7209:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"7194:3:55","nodeType":"YulIdentifier","src":"7194:3:55"},"nativeSrc":"7194:17:55","nodeType":"YulFunctionCall","src":"7194:17:55"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nativeSrc":"7141:43:55","nodeType":"YulIdentifier","src":"7141:43:55"},"nativeSrc":"7141:71:55","nodeType":"YulFunctionCall","src":"7141:71:55"},"nativeSrc":"7141:71:55","nodeType":"YulExpressionStatement","src":"7141:71:55"},{"expression":{"arguments":[{"name":"value1","nativeSrc":"7266:6:55","nodeType":"YulIdentifier","src":"7266:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"7279:9:55","nodeType":"YulIdentifier","src":"7279:9:55"},{"kind":"number","nativeSrc":"7290:2:55","nodeType":"YulLiteral","src":"7290:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7275:3:55","nodeType":"YulIdentifier","src":"7275:3:55"},"nativeSrc":"7275:18:55","nodeType":"YulFunctionCall","src":"7275:18:55"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nativeSrc":"7222:43:55","nodeType":"YulIdentifier","src":"7222:43:55"},"nativeSrc":"7222:72:55","nodeType":"YulFunctionCall","src":"7222:72:55"},"nativeSrc":"7222:72:55","nodeType":"YulExpressionStatement","src":"7222:72:55"},{"expression":{"arguments":[{"name":"value2","nativeSrc":"7348:6:55","nodeType":"YulIdentifier","src":"7348:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"7361:9:55","nodeType":"YulIdentifier","src":"7361:9:55"},{"kind":"number","nativeSrc":"7372:2:55","nodeType":"YulLiteral","src":"7372:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"7357:3:55","nodeType":"YulIdentifier","src":"7357:3:55"},"nativeSrc":"7357:18:55","nodeType":"YulFunctionCall","src":"7357:18:55"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nativeSrc":"7304:43:55","nodeType":"YulIdentifier","src":"7304:43:55"},"nativeSrc":"7304:72:55","nodeType":"YulFunctionCall","src":"7304:72:55"},"nativeSrc":"7304:72:55","nodeType":"YulExpressionStatement","src":"7304:72:55"},{"expression":{"arguments":[{"name":"value3","nativeSrc":"7430:6:55","nodeType":"YulIdentifier","src":"7430:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"7443:9:55","nodeType":"YulIdentifier","src":"7443:9:55"},{"kind":"number","nativeSrc":"7454:2:55","nodeType":"YulLiteral","src":"7454:2:55","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"7439:3:55","nodeType":"YulIdentifier","src":"7439:3:55"},"nativeSrc":"7439:18:55","nodeType":"YulFunctionCall","src":"7439:18:55"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"7386:43:55","nodeType":"YulIdentifier","src":"7386:43:55"},"nativeSrc":"7386:72:55","nodeType":"YulFunctionCall","src":"7386:72:55"},"nativeSrc":"7386:72:55","nodeType":"YulExpressionStatement","src":"7386:72:55"},{"expression":{"arguments":[{"name":"value4","nativeSrc":"7512:6:55","nodeType":"YulIdentifier","src":"7512:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"7525:9:55","nodeType":"YulIdentifier","src":"7525:9:55"},{"kind":"number","nativeSrc":"7536:3:55","nodeType":"YulLiteral","src":"7536:3:55","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"7521:3:55","nodeType":"YulIdentifier","src":"7521:3:55"},"nativeSrc":"7521:19:55","nodeType":"YulFunctionCall","src":"7521:19:55"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"7468:43:55","nodeType":"YulIdentifier","src":"7468:43:55"},"nativeSrc":"7468:73:55","nodeType":"YulFunctionCall","src":"7468:73:55"},"nativeSrc":"7468:73:55","nodeType":"YulExpressionStatement","src":"7468:73:55"}]},"name":"abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed","nativeSrc":"6884:664:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7034:9:55","nodeType":"YulTypedName","src":"7034:9:55","type":""},{"name":"value4","nativeSrc":"7046:6:55","nodeType":"YulTypedName","src":"7046:6:55","type":""},{"name":"value3","nativeSrc":"7054:6:55","nodeType":"YulTypedName","src":"7054:6:55","type":""},{"name":"value2","nativeSrc":"7062:6:55","nodeType":"YulTypedName","src":"7062:6:55","type":""},{"name":"value1","nativeSrc":"7070:6:55","nodeType":"YulTypedName","src":"7070:6:55","type":""},{"name":"value0","nativeSrc":"7078:6:55","nodeType":"YulTypedName","src":"7078:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"7089:4:55","nodeType":"YulTypedName","src":"7089:4:55","type":""}],"src":"6884:664:55"},{"body":{"nativeSrc":"7650:73:55","nodeType":"YulBlock","src":"7650:73:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"7667:3:55","nodeType":"YulIdentifier","src":"7667:3:55"},{"name":"length","nativeSrc":"7672:6:55","nodeType":"YulIdentifier","src":"7672:6:55"}],"functionName":{"name":"mstore","nativeSrc":"7660:6:55","nodeType":"YulIdentifier","src":"7660:6:55"},"nativeSrc":"7660:19:55","nodeType":"YulFunctionCall","src":"7660:19:55"},"nativeSrc":"7660:19:55","nodeType":"YulExpressionStatement","src":"7660:19:55"},{"nativeSrc":"7688:29:55","nodeType":"YulAssignment","src":"7688:29:55","value":{"arguments":[{"name":"pos","nativeSrc":"7707:3:55","nodeType":"YulIdentifier","src":"7707:3:55"},{"kind":"number","nativeSrc":"7712:4:55","nodeType":"YulLiteral","src":"7712:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"7703:3:55","nodeType":"YulIdentifier","src":"7703:3:55"},"nativeSrc":"7703:14:55","nodeType":"YulFunctionCall","src":"7703:14:55"},"variableNames":[{"name":"updated_pos","nativeSrc":"7688:11:55","nodeType":"YulIdentifier","src":"7688:11:55"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"7554:169:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"7622:3:55","nodeType":"YulTypedName","src":"7622:3:55","type":""},{"name":"length","nativeSrc":"7627:6:55","nodeType":"YulTypedName","src":"7627:6:55","type":""}],"returnVariables":[{"name":"updated_pos","nativeSrc":"7638:11:55","nodeType":"YulTypedName","src":"7638:11:55","type":""}],"src":"7554:169:55"},{"body":{"nativeSrc":"7791:77:55","nodeType":"YulBlock","src":"7791:77:55","statements":[{"expression":{"arguments":[{"name":"dst","nativeSrc":"7808:3:55","nodeType":"YulIdentifier","src":"7808:3:55"},{"name":"src","nativeSrc":"7813:3:55","nodeType":"YulIdentifier","src":"7813:3:55"},{"name":"length","nativeSrc":"7818:6:55","nodeType":"YulIdentifier","src":"7818:6:55"}],"functionName":{"name":"mcopy","nativeSrc":"7802:5:55","nodeType":"YulIdentifier","src":"7802:5:55"},"nativeSrc":"7802:23:55","nodeType":"YulFunctionCall","src":"7802:23:55"},"nativeSrc":"7802:23:55","nodeType":"YulExpressionStatement","src":"7802:23:55"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"7845:3:55","nodeType":"YulIdentifier","src":"7845:3:55"},{"name":"length","nativeSrc":"7850:6:55","nodeType":"YulIdentifier","src":"7850:6:55"}],"functionName":{"name":"add","nativeSrc":"7841:3:55","nodeType":"YulIdentifier","src":"7841:3:55"},"nativeSrc":"7841:16:55","nodeType":"YulFunctionCall","src":"7841:16:55"},{"kind":"number","nativeSrc":"7859:1:55","nodeType":"YulLiteral","src":"7859:1:55","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"7834:6:55","nodeType":"YulIdentifier","src":"7834:6:55"},"nativeSrc":"7834:27:55","nodeType":"YulFunctionCall","src":"7834:27:55"},"nativeSrc":"7834:27:55","nodeType":"YulExpressionStatement","src":"7834:27:55"}]},"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"7729:139:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nativeSrc":"7773:3:55","nodeType":"YulTypedName","src":"7773:3:55","type":""},{"name":"dst","nativeSrc":"7778:3:55","nodeType":"YulTypedName","src":"7778:3:55","type":""},{"name":"length","nativeSrc":"7783:6:55","nodeType":"YulTypedName","src":"7783:6:55","type":""}],"src":"7729:139:55"},{"body":{"nativeSrc":"7922:54:55","nodeType":"YulBlock","src":"7922:54:55","statements":[{"nativeSrc":"7932:38:55","nodeType":"YulAssignment","src":"7932:38:55","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"7950:5:55","nodeType":"YulIdentifier","src":"7950:5:55"},{"kind":"number","nativeSrc":"7957:2:55","nodeType":"YulLiteral","src":"7957:2:55","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"7946:3:55","nodeType":"YulIdentifier","src":"7946:3:55"},"nativeSrc":"7946:14:55","nodeType":"YulFunctionCall","src":"7946:14:55"},{"arguments":[{"kind":"number","nativeSrc":"7966:2:55","nodeType":"YulLiteral","src":"7966:2:55","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"7962:3:55","nodeType":"YulIdentifier","src":"7962:3:55"},"nativeSrc":"7962:7:55","nodeType":"YulFunctionCall","src":"7962:7:55"}],"functionName":{"name":"and","nativeSrc":"7942:3:55","nodeType":"YulIdentifier","src":"7942:3:55"},"nativeSrc":"7942:28:55","nodeType":"YulFunctionCall","src":"7942:28:55"},"variableNames":[{"name":"result","nativeSrc":"7932:6:55","nodeType":"YulIdentifier","src":"7932:6:55"}]}]},"name":"round_up_to_mul_of_32","nativeSrc":"7874:102:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"7905:5:55","nodeType":"YulTypedName","src":"7905:5:55","type":""}],"returnVariables":[{"name":"result","nativeSrc":"7915:6:55","nodeType":"YulTypedName","src":"7915:6:55","type":""}],"src":"7874:102:55"},{"body":{"nativeSrc":"8074:285:55","nodeType":"YulBlock","src":"8074:285:55","statements":[{"nativeSrc":"8084:53:55","nodeType":"YulVariableDeclaration","src":"8084:53:55","value":{"arguments":[{"name":"value","nativeSrc":"8131:5:55","nodeType":"YulIdentifier","src":"8131:5:55"}],"functionName":{"name":"array_length_t_string_memory_ptr","nativeSrc":"8098:32:55","nodeType":"YulIdentifier","src":"8098:32:55"},"nativeSrc":"8098:39:55","nodeType":"YulFunctionCall","src":"8098:39:55"},"variables":[{"name":"length","nativeSrc":"8088:6:55","nodeType":"YulTypedName","src":"8088:6:55","type":""}]},{"nativeSrc":"8146:78:55","nodeType":"YulAssignment","src":"8146:78:55","value":{"arguments":[{"name":"pos","nativeSrc":"8212:3:55","nodeType":"YulIdentifier","src":"8212:3:55"},{"name":"length","nativeSrc":"8217:6:55","nodeType":"YulIdentifier","src":"8217:6:55"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"8153:58:55","nodeType":"YulIdentifier","src":"8153:58:55"},"nativeSrc":"8153:71:55","nodeType":"YulFunctionCall","src":"8153:71:55"},"variableNames":[{"name":"pos","nativeSrc":"8146:3:55","nodeType":"YulIdentifier","src":"8146:3:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"8272:5:55","nodeType":"YulIdentifier","src":"8272:5:55"},{"kind":"number","nativeSrc":"8279:4:55","nodeType":"YulLiteral","src":"8279:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8268:3:55","nodeType":"YulIdentifier","src":"8268:3:55"},"nativeSrc":"8268:16:55","nodeType":"YulFunctionCall","src":"8268:16:55"},{"name":"pos","nativeSrc":"8286:3:55","nodeType":"YulIdentifier","src":"8286:3:55"},{"name":"length","nativeSrc":"8291:6:55","nodeType":"YulIdentifier","src":"8291:6:55"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"8233:34:55","nodeType":"YulIdentifier","src":"8233:34:55"},"nativeSrc":"8233:65:55","nodeType":"YulFunctionCall","src":"8233:65:55"},"nativeSrc":"8233:65:55","nodeType":"YulExpressionStatement","src":"8233:65:55"},{"nativeSrc":"8307:46:55","nodeType":"YulAssignment","src":"8307:46:55","value":{"arguments":[{"name":"pos","nativeSrc":"8318:3:55","nodeType":"YulIdentifier","src":"8318:3:55"},{"arguments":[{"name":"length","nativeSrc":"8345:6:55","nodeType":"YulIdentifier","src":"8345:6:55"}],"functionName":{"name":"round_up_to_mul_of_32","nativeSrc":"8323:21:55","nodeType":"YulIdentifier","src":"8323:21:55"},"nativeSrc":"8323:29:55","nodeType":"YulFunctionCall","src":"8323:29:55"}],"functionName":{"name":"add","nativeSrc":"8314:3:55","nodeType":"YulIdentifier","src":"8314:3:55"},"nativeSrc":"8314:39:55","nodeType":"YulFunctionCall","src":"8314:39:55"},"variableNames":[{"name":"end","nativeSrc":"8307:3:55","nodeType":"YulIdentifier","src":"8307:3:55"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nativeSrc":"7982:377:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"8055:5:55","nodeType":"YulTypedName","src":"8055:5:55","type":""},{"name":"pos","nativeSrc":"8062:3:55","nodeType":"YulTypedName","src":"8062:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"8070:3:55","nodeType":"YulTypedName","src":"8070:3:55","type":""}],"src":"7982:377:55"},{"body":{"nativeSrc":"8483:195:55","nodeType":"YulBlock","src":"8483:195:55","statements":[{"nativeSrc":"8493:26:55","nodeType":"YulAssignment","src":"8493:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"8505:9:55","nodeType":"YulIdentifier","src":"8505:9:55"},{"kind":"number","nativeSrc":"8516:2:55","nodeType":"YulLiteral","src":"8516:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8501:3:55","nodeType":"YulIdentifier","src":"8501:3:55"},"nativeSrc":"8501:18:55","nodeType":"YulFunctionCall","src":"8501:18:55"},"variableNames":[{"name":"tail","nativeSrc":"8493:4:55","nodeType":"YulIdentifier","src":"8493:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8540:9:55","nodeType":"YulIdentifier","src":"8540:9:55"},{"kind":"number","nativeSrc":"8551:1:55","nodeType":"YulLiteral","src":"8551:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"8536:3:55","nodeType":"YulIdentifier","src":"8536:3:55"},"nativeSrc":"8536:17:55","nodeType":"YulFunctionCall","src":"8536:17:55"},{"arguments":[{"name":"tail","nativeSrc":"8559:4:55","nodeType":"YulIdentifier","src":"8559:4:55"},{"name":"headStart","nativeSrc":"8565:9:55","nodeType":"YulIdentifier","src":"8565:9:55"}],"functionName":{"name":"sub","nativeSrc":"8555:3:55","nodeType":"YulIdentifier","src":"8555:3:55"},"nativeSrc":"8555:20:55","nodeType":"YulFunctionCall","src":"8555:20:55"}],"functionName":{"name":"mstore","nativeSrc":"8529:6:55","nodeType":"YulIdentifier","src":"8529:6:55"},"nativeSrc":"8529:47:55","nodeType":"YulFunctionCall","src":"8529:47:55"},"nativeSrc":"8529:47:55","nodeType":"YulExpressionStatement","src":"8529:47:55"},{"nativeSrc":"8585:86:55","nodeType":"YulAssignment","src":"8585:86:55","value":{"arguments":[{"name":"value0","nativeSrc":"8657:6:55","nodeType":"YulIdentifier","src":"8657:6:55"},{"name":"tail","nativeSrc":"8666:4:55","nodeType":"YulIdentifier","src":"8666:4:55"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nativeSrc":"8593:63:55","nodeType":"YulIdentifier","src":"8593:63:55"},"nativeSrc":"8593:78:55","nodeType":"YulFunctionCall","src":"8593:78:55"},"variableNames":[{"name":"tail","nativeSrc":"8585:4:55","nodeType":"YulIdentifier","src":"8585:4:55"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"8365:313:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8455:9:55","nodeType":"YulTypedName","src":"8455:9:55","type":""},{"name":"value0","nativeSrc":"8467:6:55","nodeType":"YulTypedName","src":"8467:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8478:4:55","nodeType":"YulTypedName","src":"8478:4:55","type":""}],"src":"8365:313:55"},{"body":{"nativeSrc":"8742:40:55","nodeType":"YulBlock","src":"8742:40:55","statements":[{"nativeSrc":"8753:22:55","nodeType":"YulAssignment","src":"8753:22:55","value":{"arguments":[{"name":"value","nativeSrc":"8769:5:55","nodeType":"YulIdentifier","src":"8769:5:55"}],"functionName":{"name":"mload","nativeSrc":"8763:5:55","nodeType":"YulIdentifier","src":"8763:5:55"},"nativeSrc":"8763:12:55","nodeType":"YulFunctionCall","src":"8763:12:55"},"variableNames":[{"name":"length","nativeSrc":"8753:6:55","nodeType":"YulIdentifier","src":"8753:6:55"}]}]},"name":"array_length_t_bytes_memory_ptr","nativeSrc":"8684:98:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"8725:5:55","nodeType":"YulTypedName","src":"8725:5:55","type":""}],"returnVariables":[{"name":"length","nativeSrc":"8735:6:55","nodeType":"YulTypedName","src":"8735:6:55","type":""}],"src":"8684:98:55"},{"body":{"nativeSrc":"8844:60:55","nodeType":"YulBlock","src":"8844:60:55","statements":[{"nativeSrc":"8854:11:55","nodeType":"YulAssignment","src":"8854:11:55","value":{"name":"ptr","nativeSrc":"8862:3:55","nodeType":"YulIdentifier","src":"8862:3:55"},"variableNames":[{"name":"data","nativeSrc":"8854:4:55","nodeType":"YulIdentifier","src":"8854:4:55"}]},{"nativeSrc":"8875:22:55","nodeType":"YulAssignment","src":"8875:22:55","value":{"arguments":[{"name":"ptr","nativeSrc":"8887:3:55","nodeType":"YulIdentifier","src":"8887:3:55"},{"kind":"number","nativeSrc":"8892:4:55","nodeType":"YulLiteral","src":"8892:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8883:3:55","nodeType":"YulIdentifier","src":"8883:3:55"},"nativeSrc":"8883:14:55","nodeType":"YulFunctionCall","src":"8883:14:55"},"variableNames":[{"name":"data","nativeSrc":"8875:4:55","nodeType":"YulIdentifier","src":"8875:4:55"}]}]},"name":"array_dataslot_t_bytes_memory_ptr","nativeSrc":"8788:116:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"8831:3:55","nodeType":"YulTypedName","src":"8831:3:55","type":""}],"returnVariables":[{"name":"data","nativeSrc":"8839:4:55","nodeType":"YulTypedName","src":"8839:4:55","type":""}],"src":"8788:116:55"},{"body":{"nativeSrc":"8965:99:55","nodeType":"YulBlock","src":"8965:99:55","statements":[{"nativeSrc":"8976:42:55","nodeType":"YulVariableDeclaration","src":"8976:42:55","value":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"9013:3:55","nodeType":"YulIdentifier","src":"9013:3:55"}],"functionName":{"name":"mload","nativeSrc":"9007:5:55","nodeType":"YulIdentifier","src":"9007:5:55"},"nativeSrc":"9007:10:55","nodeType":"YulFunctionCall","src":"9007:10:55"}],"functionName":{"name":"cleanup_t_bytes32","nativeSrc":"8989:17:55","nodeType":"YulIdentifier","src":"8989:17:55"},"nativeSrc":"8989:29:55","nodeType":"YulFunctionCall","src":"8989:29:55"},"variables":[{"name":"value","nativeSrc":"8980:5:55","nodeType":"YulTypedName","src":"8980:5:55","type":""}]},{"nativeSrc":"9028:29:55","nodeType":"YulAssignment","src":"9028:29:55","value":{"name":"value","nativeSrc":"9052:5:55","nodeType":"YulIdentifier","src":"9052:5:55"},"variableNames":[{"name":"returnValue","nativeSrc":"9028:11:55","nodeType":"YulIdentifier","src":"9028:11:55"}]}]},"name":"read_from_memoryt_bytes32","nativeSrc":"8910:154:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"8945:3:55","nodeType":"YulTypedName","src":"8945:3:55","type":""}],"returnVariables":[{"name":"returnValue","nativeSrc":"8953:11:55","nodeType":"YulTypedName","src":"8953:11:55","type":""}],"src":"8910:154:55"},{"body":{"nativeSrc":"9160:504:55","nodeType":"YulBlock","src":"9160:504:55","statements":[{"nativeSrc":"9171:52:55","nodeType":"YulVariableDeclaration","src":"9171:52:55","value":{"arguments":[{"name":"array","nativeSrc":"9217:5:55","nodeType":"YulIdentifier","src":"9217:5:55"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nativeSrc":"9185:31:55","nodeType":"YulIdentifier","src":"9185:31:55"},"nativeSrc":"9185:38:55","nodeType":"YulFunctionCall","src":"9185:38:55"},"variables":[{"name":"length","nativeSrc":"9175:6:55","nodeType":"YulTypedName","src":"9175:6:55","type":""}]},{"nativeSrc":"9232:21:55","nodeType":"YulVariableDeclaration","src":"9232:21:55","value":{"name":"array","nativeSrc":"9248:5:55","nodeType":"YulIdentifier","src":"9248:5:55"},"variables":[{"name":"dataArea","nativeSrc":"9236:8:55","nodeType":"YulTypedName","src":"9236:8:55","type":""}]},{"nativeSrc":"9263:52:55","nodeType":"YulAssignment","src":"9263:52:55","value":{"arguments":[{"name":"array","nativeSrc":"9309:5:55","nodeType":"YulIdentifier","src":"9309:5:55"}],"functionName":{"name":"array_dataslot_t_bytes_memory_ptr","nativeSrc":"9275:33:55","nodeType":"YulIdentifier","src":"9275:33:55"},"nativeSrc":"9275:40:55","nodeType":"YulFunctionCall","src":"9275:40:55"},"variableNames":[{"name":"dataArea","nativeSrc":"9263:8:55","nodeType":"YulIdentifier","src":"9263:8:55"}]},{"nativeSrc":"9325:44:55","nodeType":"YulAssignment","src":"9325:44:55","value":{"arguments":[{"name":"dataArea","nativeSrc":"9360:8:55","nodeType":"YulIdentifier","src":"9360:8:55"}],"functionName":{"name":"read_from_memoryt_bytes32","nativeSrc":"9334:25:55","nodeType":"YulIdentifier","src":"9334:25:55"},"nativeSrc":"9334:35:55","nodeType":"YulFunctionCall","src":"9334:35:55"},"variableNames":[{"name":"value","nativeSrc":"9325:5:55","nodeType":"YulIdentifier","src":"9325:5:55"}]},{"body":{"nativeSrc":"9397:260:55","nodeType":"YulBlock","src":"9397:260:55","statements":[{"nativeSrc":"9411:236:55","nodeType":"YulAssignment","src":"9411:236:55","value":{"arguments":[{"name":"value","nativeSrc":"9441:5:55","nodeType":"YulIdentifier","src":"9441:5:55"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9508:1:55","nodeType":"YulLiteral","src":"9508:1:55","type":"","value":"8"},{"arguments":[{"kind":"number","nativeSrc":"9515:2:55","nodeType":"YulLiteral","src":"9515:2:55","type":"","value":"32"},{"name":"length","nativeSrc":"9519:6:55","nodeType":"YulIdentifier","src":"9519:6:55"}],"functionName":{"name":"sub","nativeSrc":"9511:3:55","nodeType":"YulIdentifier","src":"9511:3:55"},"nativeSrc":"9511:15:55","nodeType":"YulFunctionCall","src":"9511:15:55"}],"functionName":{"name":"mul","nativeSrc":"9504:3:55","nodeType":"YulIdentifier","src":"9504:3:55"},"nativeSrc":"9504:23:55","nodeType":"YulFunctionCall","src":"9504:23:55"},{"kind":"number","nativeSrc":"9549:66:55","nodeType":"YulLiteral","src":"9549:66:55","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"shift_left_dynamic","nativeSrc":"9464:18:55","nodeType":"YulIdentifier","src":"9464:18:55"},"nativeSrc":"9464:169:55","nodeType":"YulFunctionCall","src":"9464:169:55"}],"functionName":{"name":"and","nativeSrc":"9420:3:55","nodeType":"YulIdentifier","src":"9420:3:55"},"nativeSrc":"9420:227:55","nodeType":"YulFunctionCall","src":"9420:227:55"},"variableNames":[{"name":"value","nativeSrc":"9411:5:55","nodeType":"YulIdentifier","src":"9411:5:55"}]}]},"condition":{"arguments":[{"name":"length","nativeSrc":"9385:6:55","nodeType":"YulIdentifier","src":"9385:6:55"},{"kind":"number","nativeSrc":"9393:2:55","nodeType":"YulLiteral","src":"9393:2:55","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"9382:2:55","nodeType":"YulIdentifier","src":"9382:2:55"},"nativeSrc":"9382:14:55","nodeType":"YulFunctionCall","src":"9382:14:55"},"nativeSrc":"9379:278:55","nodeType":"YulIf","src":"9379:278:55"}]},"name":"convert_bytes_to_fixedbytes_from_t_bytes_memory_ptr_to_t_bytes32","nativeSrc":"9070:594:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"9144:5:55","nodeType":"YulTypedName","src":"9144:5:55","type":""}],"returnVariables":[{"name":"value","nativeSrc":"9154:5:55","nodeType":"YulTypedName","src":"9154:5:55","type":""}],"src":"9070:594:55"}]},"contents":"{\n\n    function allocate_unbounded() -> memPtr {\n        memPtr := mload(64)\n    }\n\n    function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n        revert(0, 0)\n    }\n\n    function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n        revert(0, 0)\n    }\n\n    function cleanup_t_uint160(value) -> cleaned {\n        cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n    }\n\n    function cleanup_t_address(value) -> cleaned {\n        cleaned := cleanup_t_uint160(value)\n    }\n\n    function validator_revert_t_address(value) {\n        if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n    }\n\n    function abi_decode_t_address_fromMemory(offset, end) -> value {\n        value := mload(offset)\n        validator_revert_t_address(value)\n    }\n\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0 {\n        if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function array_length_t_string_memory_ptr(value) -> length {\n\n        length := mload(value)\n\n    }\n\n    function panic_error_0x41() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n\n    function panic_error_0x22() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x22)\n        revert(0, 0x24)\n    }\n\n    function extract_byte_array_length(data) -> length {\n        length := div(data, 2)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) {\n            length := and(length, 0x7f)\n        }\n\n        if eq(outOfPlaceEncoding, lt(length, 32)) {\n            panic_error_0x22()\n        }\n    }\n\n    function array_dataslot_t_string_storage(ptr) -> data {\n        data := ptr\n\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n\n    }\n\n    function divide_by_32_ceil(value) -> result {\n        result := div(add(value, 31), 32)\n    }\n\n    function shift_left_dynamic(bits, value) -> newValue {\n        newValue :=\n\n        shl(bits, value)\n\n    }\n\n    function update_byte_slice_dynamic32(value, shiftBytes, toInsert) -> result {\n        let shiftBits := mul(shiftBytes, 8)\n        let mask := shift_left_dynamic(shiftBits, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n        toInsert := shift_left_dynamic(shiftBits, toInsert)\n        value := and(value, not(mask))\n        result := or(value, and(toInsert, mask))\n    }\n\n    function cleanup_t_uint256(value) -> cleaned {\n        cleaned := value\n    }\n\n    function identity(value) -> ret {\n        ret := value\n    }\n\n    function convert_t_uint256_to_t_uint256(value) -> converted {\n        converted := cleanup_t_uint256(identity(cleanup_t_uint256(value)))\n    }\n\n    function prepare_store_t_uint256(value) -> ret {\n        ret := value\n    }\n\n    function update_storage_value_t_uint256_to_t_uint256(slot, offset, value_0) {\n        let convertedValue_0 := convert_t_uint256_to_t_uint256(value_0)\n        sstore(slot, update_byte_slice_dynamic32(sload(slot), offset, prepare_store_t_uint256(convertedValue_0)))\n    }\n\n    function zero_value_for_split_t_uint256() -> ret {\n        ret := 0\n    }\n\n    function storage_set_to_zero_t_uint256(slot, offset) {\n        let zero_0 := zero_value_for_split_t_uint256()\n        update_storage_value_t_uint256_to_t_uint256(slot, offset, zero_0)\n    }\n\n    function clear_storage_range_t_bytes1(start, end) {\n        for {} lt(start, end) { start := add(start, 1) }\n        {\n            storage_set_to_zero_t_uint256(start, 0)\n        }\n    }\n\n    function clean_up_bytearray_end_slots_t_string_storage(array, len, startIndex) {\n\n        if gt(len, 31) {\n            let dataArea := array_dataslot_t_string_storage(array)\n            let deleteStart := add(dataArea, divide_by_32_ceil(startIndex))\n            // If we are clearing array to be short byte array, we want to clear only data starting from array data area.\n            if lt(startIndex, 32) { deleteStart := dataArea }\n            clear_storage_range_t_bytes1(deleteStart, add(dataArea, divide_by_32_ceil(len)))\n        }\n\n    }\n\n    function shift_right_unsigned_dynamic(bits, value) -> newValue {\n        newValue :=\n\n        shr(bits, value)\n\n    }\n\n    function mask_bytes_dynamic(data, bytes) -> result {\n        let mask := not(shift_right_unsigned_dynamic(mul(8, bytes), not(0)))\n        result := and(data, mask)\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used {\n        // we want to save only elements that are part of the array after resizing\n        // others should be set to zero\n        data := mask_bytes_dynamic(data, len)\n        used := or(data, mul(2, len))\n    }\n    function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src) {\n\n        let newLen := array_length_t_string_memory_ptr(src)\n        // Make sure array length is sane\n        if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n\n        let oldLen := extract_byte_array_length(sload(slot))\n\n        // potentially truncate data\n        clean_up_bytearray_end_slots_t_string_storage(slot, oldLen, newLen)\n\n        let srcOffset := 0\n\n        srcOffset := 0x20\n\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(0x1f))\n\n            let dstPtr := array_dataslot_t_string_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, 0x20) } {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, 32)\n            }\n            if lt(loopEnd, newLen) {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, mask_bytes_dynamic(lastValue, and(newLen, 0x1f)))\n            }\n            sstore(slot, add(mul(newLen, 2), 1))\n        }\n        default {\n            let value := 0\n            if newLen {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n\n    function cleanup_t_bytes32(value) -> cleaned {\n        cleaned := value\n    }\n\n    function abi_encode_t_bytes32_to_t_bytes32_fromStack(value, pos) {\n        mstore(pos, cleanup_t_bytes32(value))\n    }\n\n    function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n        mstore(pos, cleanup_t_uint256(value))\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_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart , value4, value3, value2, value1, value0) -> tail {\n        tail := add(headStart, 160)\n\n        abi_encode_t_bytes32_to_t_bytes32_fromStack(value0,  add(headStart, 0))\n\n        abi_encode_t_bytes32_to_t_bytes32_fromStack(value1,  add(headStart, 32))\n\n        abi_encode_t_bytes32_to_t_bytes32_fromStack(value2,  add(headStart, 64))\n\n        abi_encode_t_uint256_to_t_uint256_fromStack(value3,  add(headStart, 96))\n\n        abi_encode_t_address_to_t_address_fromStack(value4,  add(headStart, 128))\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\n        mcopy(dst, src, length)\n        mstore(add(dst, length), 0)\n\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 array_length_t_bytes_memory_ptr(value) -> length {\n\n        length := mload(value)\n\n    }\n\n    function array_dataslot_t_bytes_memory_ptr(ptr) -> data {\n        data := ptr\n\n        data := add(ptr, 0x20)\n\n    }\n\n    function read_from_memoryt_bytes32(ptr) -> returnValue {\n\n        let value := cleanup_t_bytes32(mload(ptr))\n\n        returnValue :=\n\n        value\n\n    }\n\n    function convert_bytes_to_fixedbytes_from_t_bytes_memory_ptr_to_t_bytes32(array) -> value {\n\n        let length := array_length_t_bytes_memory_ptr(array)\n        let dataArea := array\n\n        dataArea := array_dataslot_t_bytes_memory_ptr(array)\n\n        value := read_from_memoryt_bytes32(dataArea)\n\n        if lt(length, 32) {\n            value := and(\n                value,\n                shift_left_dynamic(\n                    mul(8, sub(32, length)),\n                    0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n                )\n            )\n        }\n\n    }\n\n}\n","id":55,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"610160604052348015610010575f5ffd5b5060405161218938038061218983398101604081905261002f9161027b565b6040805180820182526009815268056656e7573537761760bc1b602080830191909152825180840190935260018352603160f81b9083015290610072825f61010c565b6101205261008181600161010c565b61014052815160208084019190912060e052815190820120610100524660a0526100a961013e565b60805250503060c0526100bb33610197565b60016004556001600160a01b0381166100e75760405163d92e233d60e01b815260040160405180910390fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055610547565b5f60208351101561012757610120836101b3565b9050610138565b816101328482610391565b5060ff90505b92915050565b60e051610100516040515f9261017c927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f9246903090602001610461565b60405160208183030381529060405280519060200120905090565b600380546001600160a01b03191690556101b0816101fc565b50565b5f5f829050601f815111156101e6578260405163305a27a960e01b81526004016101dd91906104e9565b60405180910390fd5b80516101f18261050a565b179392505050565b90565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6001600160a01b038216610138565b6102668161024d565b81146101b0575f5ffd5b80516101388161025d565b5f6020828403121561028e5761028e5f5ffd5b5f6102998484610270565b949350505050565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52602260045260245ffd5b6002810460018216806102dd57607f821691505b6020821081036102ef576102ef6102b5565b50919050565b5f6101386101f98381565b610309836102f5565b81545f1960089490940293841b1916921b91909117905550565b5f61032f818484610300565b505050565b8181101561034e576103465f82610323565b600101610334565b5050565b601f82111561032f575f818152602090206020601f850104810160208510156103785750805b61038a6020601f860104830182610334565b5050505050565b81516001600160401b038111156103aa576103aa6102a1565b6103b482546102c9565b6103bf828285610352565b6020601f8311600181146103f1575f84156103da5750858201515b5f19600886021c1981166002860217865550610448565b5f85815260208120601f198616915b828110156104205788850151825560209485019460019092019101610400565b8683101561043b57848901515f19601f89166008021c191682555b6001600288020188555050505b505050505050565b805b82525050565b6104528161024d565b60a0810161046f8288610450565b61047c6020830187610450565b6104896040830186610450565b6104966060830185610450565b6104a36080830184610458565b9695505050505050565b8281835e505f910152565b5f6104c1825190565b8084526020840193506104d88185602086016104ad565b601f01601f19169290920192915050565b602080825281016104fa81846104b8565b9392505050565b5f610138825190565b5f610513825190565b6020830161052081610501565b925060208210156105405761053b5f19836020036008021b90565b831692505b5050919050565b60805160a05160c05160e051610100516101205161014051611bf16105985f395f6103c801525f61039e01525f6111cf01525f6111ae01525f61101601525f61104001525f61106a0152611bf15ff3fe608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c806384b0196e11610088578063aec42a1711610063578063aec42a171461019e578063b8dc491b146101b1578063e30c3978146101c4578063f2fde38b146101d5575f5ffd5b806384b0196e1461015f5780638da5cb5b1461017a578063a0e069091461018b575f5ffd5b80630b0fdb3d146100cf57806336f95670146101075780634650c3081461011c57806365d65e861461012f578063715018a61461014f57806379ba509714610157575b5f5ffd5b6100f16100dd366004611236565b60066020525f908152604090205460ff1681565b6040516100fe919061125e565b60405180910390f35b61011a610115366004611290565b6101e8565b005b61011a61012a3660046112f5565b610272565b600554610142906001600160a01b031681565b6040516100fe9190611355565b61011a61033d565b61011a610350565b610167610391565b6040516100fe9796959493929190611411565b6002546001600160a01b0316610142565b61011a6101993660046114d4565b610417565b61011a6101ac36600461158d565b610634565b61011a6101bf36600461158d565b6106c6565b6003546001600160a01b0316610142565b61011a6101e3366004611290565b610813565b6101f0610884565b6001600160a01b0381166102175760405163d92e233d60e01b815260040160405180910390fd5b6005546040516001600160a01b038084169216907f93f9d0472cb0fc12887bf8f1f15cc7a197a5acd122ab23b8dcc25de0191e0d5e905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6002546001600160a01b0316331480159061028d5750333014155b156102ab5760405163c183bcef60e01b815260040160405180910390fd5b6102f482828080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250506001600160a01b038716929150506108ae565b50826001600160a01b03167f9bef3e449f25221aa6ab339a3eb184cfc318ea4ac85512f02e6c22b913324eb283836040516103309291906115f4565b60405180910390a2505050565b610345610884565b61034e5f6108fa565b565b60035433906001600160a01b031681146103855760405162461bcd60e51b815260040161037c9061164e565b60405180910390fd5b61038e816108fa565b50565b5f606080828080836103c37f000000000000000000000000000000000000000000000000000000000000000083610913565b6103ee7f00000000000000000000000000000000000000000000000000000000000000006001610913565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b61041f6109bc565b5f85900361044057604051633ce6169160e11b815260040160405180910390fd5b834211156104615760405163b08ce5b360e01b815260040160405180910390fd5b5f8190036104825760405163166c700d60e21b815260040160405180910390fd5b5f8381526006602052604090205460ff16156104b157604051630ced304360e01b815260040160405180910390fd5b5f838152600660205260408120805460ff191660011790556104d633888888886109e5565b90505f6105188285858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610b2092505050565b6005549091506001600160a01b03808316911614610548576040516282b42960e81b815260040160405180910390fd5b5f5b878110156105e1575f80308b8b8581811061056757610567611672565b90506020028101906105799190611686565b6040516105879291906116f3565b5f604051808303815f865af19150503d805f81146105c0576040519150601f19603f3d011682016040523d82523d5f602084013e6105c5565b606091505b5091509150816105d757805160208201fd5b505060010161054a565b5060405133907f704d392ae0677a1e26b4358b06346bfa8e93d60615e56c3764c867b35c14746390610618908a908a908a906116ff565b60405180910390a2505061062c6001600455565b505050505050565b6002546001600160a01b0316331480159061064f5750333014155b1561066d5760405163c183bcef60e01b815260040160405180910390fd5b6106826001600160a01b038316825f19610b42565b806001600160a01b0316826001600160a01b03167fc98957213fcf2b4a542a2f88d854c847b00e87d84fc4a7e66a009196f1cf224060405160405180910390a35050565b6002546001600160a01b031633148015906106e15750333014155b156106ff5760405163c183bcef60e01b815260040160405180910390fd5b6001600160a01b038216158061071c57506001600160a01b038116155b1561073a5760405163d92e233d60e01b815260040160405180910390fd5b6040516370a0823160e01b81525f906001600160a01b038416906370a0823190610768903090600401611355565b602060405180830381865afa158015610783573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107a79190611732565b905080156107c3576107c36001600160a01b0384168383610c06565b816001600160a01b0316836001600160a01b03167f7b09c29f9106defeccc9ac3b823f3aad0b470d120e5df7aed033b5c43a4bf718836040516108069190611750565b60405180910390a3505050565b61081b610884565b600380546001600160a01b0383166001600160a01b0319909116811790915561084c6002546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6002546001600160a01b0316331461034e5760405162461bcd60e51b815260040161037c90611792565b60606108f183835f6040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c65640000815250610c2a565b90505b92915050565b600380546001600160a01b031916905561038e81610cc4565b606060ff831461092d5761092683610d15565b90506108f4565b818054610939906117b6565b80601f0160208091040260200160405190810160405280929190818152602001828054610965906117b6565b80156109b05780601f10610987576101008083540402835291602001916109b0565b820191905f5260205f20905b81548152906001019060200180831161099357829003601f168201915b505050505090506108f4565b6002600454036109de5760405162461bcd60e51b815260040161037c90611815565b6002600455565b5f808467ffffffffffffffff811115610a0057610a0061165e565b604051908082528060200260200182016040528015610a29578160200160208202803683370190505b5090505f5b85811015610a9557868682818110610a4857610a48611672565b9050602002810190610a5a9190611686565b604051610a689291906116f3565b6040518091039020828281518110610a8257610a82611672565b6020908102919091010152600101610a2e565b50610b137f0c545221cb71dea46b10349167d787bba14b050610e9eab8d78f64fe47b581368883604051602001610acc919061185a565b604051602081830303815290604052805190602001208787604051602001610af8959493929190611865565b60405160208183030381529060405280519060200120610d52565b9150505b95945050505050565b5f5f5f610b2d8585610d7e565b91509150610b3a81610dc0565b509392505050565b5f63095ea7b360e01b8383604051602401610b5e9291906118b1565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529050610b9c8482610e6e565b610c0057610bf68463095ea7b360e01b855f604051602401610bbf9291906118df565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610f0b565b610c008482610f0b565b50505050565b610c258363a9059cbb60e01b8484604051602401610bbf9291906118b1565b505050565b606082471015610c4c5760405162461bcd60e51b815260040161037c9061193c565b5f5f866001600160a01b03168587604051610c67919061196d565b5f6040518083038185875af1925050503d805f8114610ca1576040519150601f19603f3d011682016040523d82523d5f602084013e610ca6565b606091505b5091509150610cb787838387610f9b565b925050505b949350505050565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60605f610d2183610fe3565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f6108f4610d5e61100a565b8360405161190160f01b8152600281019290925260228201526042902090565b5f5f8251604103610db2576020830151604084015160608501515f1a610da687828585611099565b94509450505050610db9565b505f905060025b9250929050565b5f816004811115610dd357610dd3611978565b03610ddb5750565b6001816004811115610def57610def611978565b03610e0c5760405162461bcd60e51b815260040161037c906119bf565b6002816004811115610e2057610e20611978565b03610e3d5760405162461bcd60e51b815260040161037c90611a02565b6003816004811115610e5157610e51611978565b0361038e5760405162461bcd60e51b815260040161037c90611a50565b5f5f5f846001600160a01b031684604051610e89919061196d565b5f604051808303815f865af19150503d805f8114610ec2576040519150601f19603f3d011682016040523d82523d5f602084013e610ec7565b606091505b5091509150818015610ef1575080511580610ef1575080806020019051810190610ef19190611a73565b8015610b175750505050506001600160a01b03163b151590565b5f610f5f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166111489092919063ffffffff16565b905080515f1480610f7f575080806020019051810190610f7f9190611a73565b610c255760405162461bcd60e51b815260040161037c90611ad7565b60608315610fd95782515f03610fd2576001600160a01b0385163b610fd25760405162461bcd60e51b815260040161037c90611b1a565b5081610cbc565b610cbc8383611160565b5f60ff8216601f8111156108f457604051632cd44ac360e21b815260040160405180910390fd5b5f306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561106257507f000000000000000000000000000000000000000000000000000000000000000046145b1561108c57507f000000000000000000000000000000000000000000000000000000000000000090565b61109461118a565b905090565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156110ce57505f9050600361113f565b5f6001878787876040515f81526020016040526040516110f19493929190611b33565b6020604051602081039080840390855afa158015611111573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611139575f6001925092505061113f565b91505f90505b94509492505050565b606061115684845f85610c2a565b90505b9392505050565b8151156111705781518083602001fd5b8060405162461bcd60e51b815260040161037c9190611b68565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000004630604051602001611204959493929190611b79565b60405160208183030381529060405280519060200120905090565b805b811461038e575f5ffd5b80356108f48161121f565b5f60208284031215611249576112495f5ffd5b5f610cbc848461122b565b8015155b82525050565b602081016108f48284611254565b5f6001600160a01b0382166108f4565b6112218161126c565b80356108f48161127c565b5f602082840312156112a3576112a35f5ffd5b5f610cbc8484611285565b5f5f83601f8401126112c1576112c15f5ffd5b50813567ffffffffffffffff8111156112db576112db5f5ffd5b602083019150836001820283011115610db957610db95f5ffd5b5f5f5f6040848603121561130a5761130a5f5ffd5b5f6113158686611285565b935050602084013567ffffffffffffffff811115611334576113345f5ffd5b611340868287016112ae565b92509250509250925092565b6112588161126c565b602081016108f4828461134c565b6001600160f81b03198116611258565b8281835e505f910152565b5f611387825190565b80845260208401935061139e818560208601611373565b601f19601f8201165b9093019392505050565b80611258565b5f6113c283836113b1565b505060200190565b5f6113d3825190565b8084526020938401938301805f5b838110156114065781516113f588826113b7565b9750602083019250506001016113e1565b509495945050505050565b60e0810161141f828a611363565b8181036020830152611431818961137e565b90508181036040830152611445818861137e565b905061145460608301876113b1565b611461608083018661134c565b61146e60a08301856113b1565b81810360c083015261148081846113ca565b9998505050505050505050565b5f5f83601f8401126114a0576114a05f5ffd5b50813567ffffffffffffffff8111156114ba576114ba5f5ffd5b602083019150836020820283011115610db957610db95f5ffd5b5f5f5f5f5f5f608087890312156114ec576114ec5f5ffd5b863567ffffffffffffffff811115611505576115055f5ffd5b61151189828a0161148d565b9650965050602061152489828a0161122b565b945050604061153589828a0161122b565b935050606087013567ffffffffffffffff811115611554576115545f5ffd5b61156089828a016112ae565b92509250509295509295509295565b5f6108f48261126c565b6112218161156f565b80356108f481611579565b5f5f604083850312156115a1576115a15f5ffd5b5f6115ac8585611582565b92505060206115bd85828601611285565b9150509250929050565b82818337505f910152565b8183525f6020840193506115e78385846115c7565b601f19601f8401166113a7565b602080825281016111568184866115d2565b602981525f602082017f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865208152683732bb9037bbb732b960b91b602082015291505b5060400190565b602080825281016108f481611606565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f808335601e193685900301811261169f5761169f5f5ffd5b80840192508235915067ffffffffffffffff8211156116bf576116bf5f5ffd5b6020830192506001820236038313156116d9576116d95f5ffd5b509250929050565b5f6116ed8385846115c7565b50500190565b5f610cbc8284866116e1565b6060810161170d82866113b1565b61171a60208301856113b1565b610cbc60408301846113b1565b80516108f48161121f565b5f60208284031215611745576117455f5ffd5b5f610cbc8484611727565b602081016108f482846113b1565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657291019081525f5b5060200190565b602080825281016108f48161175e565b634e487b7160e01b5f52602260045260245ffd5b6002810460018216806117ca57607f821691505b6020821081036117dc576117dc6117a2565b50919050565b601f81525f602082017f5265656e7472616e637947756172643a207265656e7472616e742063616c6c008152915061178b565b602080825281016108f4816117e2565b5f61182e825190565b60208301805f5b8381101561140657815161184988826113b7565b975060208301925050600101611835565b5f6111598284611825565b60a0810161187382886113b1565b611880602083018761134c565b61188d60408301866113b1565b61189a60608301856113b1565b6118a760808301846113b1565b9695505050505050565b604081016118bf828561134c565b61115960208301846113b1565b5f60ff82166108f4565b611258816118cc565b604081016118ed828561134c565b61115960208301846118d6565b602681525f602082017f416464726573733a20696e73756666696369656e742062616c616e636520666f8152651c8818d85b1b60d21b60208201529150611647565b602080825281016108f4816118fa565b5f611955825190565b611963818560208601611373565b9290920192915050565b5f611159828461194c565b634e487b7160e01b5f52602160045260245ffd5b601881525f602082017f45434453413a20696e76616c6964207369676e617475726500000000000000008152915061178b565b602080825281016108f48161198c565b601f81525f602082017f45434453413a20696e76616c6964207369676e6174757265206c656e677468008152915061178b565b602080825281016108f4816119cf565b602281525f602082017f45434453413a20696e76616c6964207369676e6174757265202773272076616c815261756560f01b60208201529150611647565b602080825281016108f481611a12565b801515611221565b80516108f481611a60565b5f60208284031215611a8657611a865f5ffd5b5f610cbc8484611a68565b602a81525f602082017f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b60208201529150611647565b602080825281016108f481611a91565b601d81525f602082017f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000008152915061178b565b602080825281016108f481611ae7565b60ff8116611258565b60808101611b4182876113b1565b611b4e6020830186611b2a565b611b5b60408301856113b1565b610b1760608301846113b1565b602080825281016108f1818461137e565b60a08101611b8782886113b1565b611b9460208301876113b1565b611ba160408301866113b1565b611bae60608301856113b1565b6118a7608083018461134c56fea2646970667358221220e9fdb211ce64c20212021c9e5de9fcfc940a1c512fe7fccef3a30715695d872b64736f6c634300081c0033","opcodes":"PUSH2 0x160 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x2189 CODESIZE SUB DUP1 PUSH2 0x2189 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x27B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x9 DUP2 MSTORE PUSH9 0x56656E75735377617 PUSH1 0xBC SHL PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x1 DUP4 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP4 ADD MSTORE SWAP1 PUSH2 0x72 DUP3 PUSH0 PUSH2 0x10C JUMP JUMPDEST PUSH2 0x120 MSTORE PUSH2 0x81 DUP2 PUSH1 0x1 PUSH2 0x10C JUMP JUMPDEST PUSH2 0x140 MSTORE DUP2 MLOAD PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0xE0 MSTORE DUP2 MLOAD SWAP1 DUP3 ADD KECCAK256 PUSH2 0x100 MSTORE CHAINID PUSH1 0xA0 MSTORE PUSH2 0xA9 PUSH2 0x13E JUMP JUMPDEST PUSH1 0x80 MSTORE POP POP ADDRESS PUSH1 0xC0 MSTORE PUSH2 0xBB CALLER PUSH2 0x197 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x4 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xE7 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x547 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP4 MLOAD LT ISZERO PUSH2 0x127 JUMPI PUSH2 0x120 DUP4 PUSH2 0x1B3 JUMP JUMPDEST SWAP1 POP PUSH2 0x138 JUMP JUMPDEST DUP2 PUSH2 0x132 DUP5 DUP3 PUSH2 0x391 JUMP JUMPDEST POP PUSH1 0xFF SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH1 0x40 MLOAD PUSH0 SWAP3 PUSH2 0x17C SWAP3 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F SWAP3 CHAINID SWAP1 ADDRESS SWAP1 PUSH1 0x20 ADD PUSH2 0x461 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH2 0x1B0 DUP2 PUSH2 0x1FC JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH0 DUP3 SWAP1 POP PUSH1 0x1F DUP2 MLOAD GT ISZERO PUSH2 0x1E6 JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0x305A27A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1DD SWAP2 SWAP1 PUSH2 0x4E9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x1F1 DUP3 PUSH2 0x50A JUMP JUMPDEST OR SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x138 JUMP JUMPDEST PUSH2 0x266 DUP2 PUSH2 0x24D JUMP JUMPDEST DUP2 EQ PUSH2 0x1B0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x138 DUP2 PUSH2 0x25D JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x28E JUMPI PUSH2 0x28E PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x299 DUP5 DUP5 PUSH2 0x270 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x2 DUP2 DIV PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x2DD JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2EF JUMPI PUSH2 0x2EF PUSH2 0x2B5 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x138 PUSH2 0x1F9 DUP4 DUP2 JUMP JUMPDEST PUSH2 0x309 DUP4 PUSH2 0x2F5 JUMP JUMPDEST DUP2 SLOAD PUSH0 NOT PUSH1 0x8 SWAP5 SWAP1 SWAP5 MUL SWAP4 DUP5 SHL NOT AND SWAP3 SHL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x32F DUP2 DUP5 DUP5 PUSH2 0x300 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x34E JUMPI PUSH2 0x346 PUSH0 DUP3 PUSH2 0x323 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x334 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x32F JUMPI PUSH0 DUP2 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH1 0x20 PUSH1 0x1F DUP6 ADD DIV DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x378 JUMPI POP DUP1 JUMPDEST PUSH2 0x38A PUSH1 0x20 PUSH1 0x1F DUP7 ADD DIV DUP4 ADD DUP3 PUSH2 0x334 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3AA JUMPI PUSH2 0x3AA PUSH2 0x2A1 JUMP JUMPDEST PUSH2 0x3B4 DUP3 SLOAD PUSH2 0x2C9 JUMP JUMPDEST PUSH2 0x3BF DUP3 DUP3 DUP6 PUSH2 0x352 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x3F1 JUMPI PUSH0 DUP5 ISZERO PUSH2 0x3DA JUMPI POP DUP6 DUP3 ADD MLOAD JUMPDEST PUSH0 NOT PUSH1 0x8 DUP7 MUL SHR NOT DUP2 AND PUSH1 0x2 DUP7 MUL OR DUP7 SSTORE POP PUSH2 0x448 JUMP JUMPDEST PUSH0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x420 JUMPI DUP9 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x400 JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH2 0x43B JUMPI DUP5 DUP10 ADD MLOAD PUSH0 NOT PUSH1 0x1F DUP10 AND PUSH1 0x8 MUL SHR NOT AND DUP3 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP1 JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x452 DUP2 PUSH2 0x24D JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x46F DUP3 DUP9 PUSH2 0x450 JUMP JUMPDEST PUSH2 0x47C PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x450 JUMP JUMPDEST PUSH2 0x489 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x450 JUMP JUMPDEST PUSH2 0x496 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x450 JUMP JUMPDEST PUSH2 0x4A3 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x458 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP3 DUP2 DUP4 MCOPY POP PUSH0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH0 PUSH2 0x4C1 DUP3 MLOAD SWAP1 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH2 0x4D8 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x4AD JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x4FA DUP2 DUP5 PUSH2 0x4B8 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x138 DUP3 MLOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x513 DUP3 MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD PUSH2 0x520 DUP2 PUSH2 0x501 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP3 LT ISZERO PUSH2 0x540 JUMPI PUSH2 0x53B PUSH0 NOT DUP4 PUSH1 0x20 SUB PUSH1 0x8 MUL SHL SWAP1 JUMP JUMPDEST DUP4 AND SWAP3 POP JUMPDEST POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x1BF1 PUSH2 0x598 PUSH0 CODECOPY PUSH0 PUSH2 0x3C8 ADD MSTORE PUSH0 PUSH2 0x39E ADD MSTORE PUSH0 PUSH2 0x11CF ADD MSTORE PUSH0 PUSH2 0x11AE ADD MSTORE PUSH0 PUSH2 0x1016 ADD MSTORE PUSH0 PUSH2 0x1040 ADD MSTORE PUSH0 PUSH2 0x106A ADD MSTORE PUSH2 0x1BF1 PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCB JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x84B0196E GT PUSH2 0x88 JUMPI DUP1 PUSH4 0xAEC42A17 GT PUSH2 0x63 JUMPI DUP1 PUSH4 0xAEC42A17 EQ PUSH2 0x19E JUMPI DUP1 PUSH4 0xB8DC491B EQ PUSH2 0x1B1 JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH2 0x1C4 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x1D5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x84B0196E EQ PUSH2 0x15F JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x17A JUMPI DUP1 PUSH4 0xA0E06909 EQ PUSH2 0x18B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xB0FDB3D EQ PUSH2 0xCF JUMPI DUP1 PUSH4 0x36F95670 EQ PUSH2 0x107 JUMPI DUP1 PUSH4 0x4650C308 EQ PUSH2 0x11C JUMPI DUP1 PUSH4 0x65D65E86 EQ PUSH2 0x12F JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x14F JUMPI DUP1 PUSH4 0x79BA5097 EQ PUSH2 0x157 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xF1 PUSH2 0xDD CALLDATASIZE PUSH1 0x4 PUSH2 0x1236 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFE SWAP2 SWAP1 PUSH2 0x125E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x11A PUSH2 0x115 CALLDATASIZE PUSH1 0x4 PUSH2 0x1290 JUMP JUMPDEST PUSH2 0x1E8 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11A PUSH2 0x12A CALLDATASIZE PUSH1 0x4 PUSH2 0x12F5 JUMP JUMPDEST PUSH2 0x272 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x142 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFE SWAP2 SWAP1 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0x11A PUSH2 0x33D JUMP JUMPDEST PUSH2 0x11A PUSH2 0x350 JUMP JUMPDEST PUSH2 0x167 PUSH2 0x391 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFE SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1411 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x142 JUMP JUMPDEST PUSH2 0x11A PUSH2 0x199 CALLDATASIZE PUSH1 0x4 PUSH2 0x14D4 JUMP JUMPDEST PUSH2 0x417 JUMP JUMPDEST PUSH2 0x11A PUSH2 0x1AC CALLDATASIZE PUSH1 0x4 PUSH2 0x158D JUMP JUMPDEST PUSH2 0x634 JUMP JUMPDEST PUSH2 0x11A PUSH2 0x1BF CALLDATASIZE PUSH1 0x4 PUSH2 0x158D JUMP JUMPDEST PUSH2 0x6C6 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x142 JUMP JUMPDEST PUSH2 0x11A PUSH2 0x1E3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1290 JUMP JUMPDEST PUSH2 0x813 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x884 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x217 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x93F9D0472CB0FC12887BF8F1F15CC7A197A5ACD122AB23B8DCC25DE0191E0D5E SWAP1 PUSH0 SWAP1 LOG3 PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 ISZERO SWAP1 PUSH2 0x28D JUMPI POP CALLER ADDRESS EQ ISZERO JUMPDEST ISZERO PUSH2 0x2AB JUMPI PUSH1 0x40 MLOAD PUSH4 0xC183BCEF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2F4 DUP3 DUP3 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP3 SWAP2 POP POP PUSH2 0x8AE JUMP JUMPDEST POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x9BEF3E449F25221AA6AB339A3EB184CFC318EA4AC85512F02E6C22B913324EB2 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x330 SWAP3 SWAP2 SWAP1 PUSH2 0x15F4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH2 0x345 PUSH2 0x884 JUMP JUMPDEST PUSH2 0x34E PUSH0 PUSH2 0x8FA JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x3 SLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 EQ PUSH2 0x385 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x37C SWAP1 PUSH2 0x164E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x38E DUP2 PUSH2 0x8FA JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP1 DUP3 DUP1 DUP1 DUP4 PUSH2 0x3C3 PUSH32 0x0 DUP4 PUSH2 0x913 JUMP JUMPDEST PUSH2 0x3EE PUSH32 0x0 PUSH1 0x1 PUSH2 0x913 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0xF PUSH1 0xF8 SHL SWAP12 SWAP4 SWAP11 POP SWAP2 SWAP9 POP CHAINID SWAP8 POP ADDRESS SWAP7 POP SWAP5 POP SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH2 0x41F PUSH2 0x9BC JUMP JUMPDEST PUSH0 DUP6 SWAP1 SUB PUSH2 0x440 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3CE61691 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 TIMESTAMP GT ISZERO PUSH2 0x461 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB08CE5B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP2 SWAP1 SUB PUSH2 0x482 JUMPI PUSH1 0x40 MLOAD PUSH4 0x166C700D PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP4 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x4B1 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCED3043 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP4 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x4D6 CALLER DUP9 DUP9 DUP9 DUP9 PUSH2 0x9E5 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x518 DUP3 DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0xB20 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP2 AND EQ PUSH2 0x548 JUMPI PUSH1 0x40 MLOAD PUSH3 0x82B429 PUSH1 0xE8 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x5E1 JUMPI PUSH0 DUP1 ADDRESS DUP12 DUP12 DUP6 DUP2 DUP2 LT PUSH2 0x567 JUMPI PUSH2 0x567 PUSH2 0x1672 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x579 SWAP2 SWAP1 PUSH2 0x1686 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x587 SWAP3 SWAP2 SWAP1 PUSH2 0x16F3 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x5C0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x5C5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x5D7 JUMPI DUP1 MLOAD PUSH1 0x20 DUP3 ADD REVERT JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x54A JUMP JUMPDEST POP PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0x704D392AE0677A1E26B4358B06346BFA8E93D60615E56C3764C867B35C147463 SWAP1 PUSH2 0x618 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH2 0x16FF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP PUSH2 0x62C PUSH1 0x1 PUSH1 0x4 SSTORE JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 ISZERO SWAP1 PUSH2 0x64F JUMPI POP CALLER ADDRESS EQ ISZERO JUMPDEST ISZERO PUSH2 0x66D JUMPI PUSH1 0x40 MLOAD PUSH4 0xC183BCEF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x682 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP3 PUSH0 NOT PUSH2 0xB42 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC98957213FCF2B4A542A2F88D854C847B00E87D84FC4A7E66A009196F1CF2240 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 ISZERO SWAP1 PUSH2 0x6E1 JUMPI POP CALLER ADDRESS EQ ISZERO JUMPDEST ISZERO PUSH2 0x6FF JUMPI PUSH1 0x40 MLOAD PUSH4 0xC183BCEF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO DUP1 PUSH2 0x71C JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO JUMPDEST ISZERO PUSH2 0x73A JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x768 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x1355 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x783 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7A7 SWAP2 SWAP1 PUSH2 0x1732 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x7C3 JUMPI PUSH2 0x7C3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 DUP4 PUSH2 0xC06 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x7B09C29F9106DEFECCC9AC3B823F3AAD0B470D120E5DF7AED033B5C43A4BF718 DUP4 PUSH1 0x40 MLOAD PUSH2 0x806 SWAP2 SWAP1 PUSH2 0x1750 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x81B PUSH2 0x884 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH2 0x84C PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x38D16B8CAC22D99FC7C124B9CD0DE2D3FA1FAEF420BFE791D8C362D765E22700 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x34E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x37C SWAP1 PUSH2 0x1792 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x8F1 DUP4 DUP4 PUSH0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x416464726573733A206C6F772D6C6576656C2063616C6C206661696C65640000 DUP2 MSTORE POP PUSH2 0xC2A JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH2 0x38E DUP2 PUSH2 0xCC4 JUMP JUMPDEST PUSH1 0x60 PUSH1 0xFF DUP4 EQ PUSH2 0x92D JUMPI PUSH2 0x926 DUP4 PUSH2 0xD15 JUMP JUMPDEST SWAP1 POP PUSH2 0x8F4 JUMP JUMPDEST DUP2 DUP1 SLOAD PUSH2 0x939 SWAP1 PUSH2 0x17B6 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 0x965 SWAP1 PUSH2 0x17B6 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x9B0 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x987 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x9B0 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x993 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP PUSH2 0x8F4 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x4 SLOAD SUB PUSH2 0x9DE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x37C SWAP1 PUSH2 0x1815 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x4 SSTORE JUMP JUMPDEST PUSH0 DUP1 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA00 JUMPI PUSH2 0xA00 PUSH2 0x165E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xA29 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0xA95 JUMPI DUP7 DUP7 DUP3 DUP2 DUP2 LT PUSH2 0xA48 JUMPI PUSH2 0xA48 PUSH2 0x1672 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0xA5A SWAP2 SWAP1 PUSH2 0x1686 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA68 SWAP3 SWAP2 SWAP1 PUSH2 0x16F3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xA82 JUMPI PUSH2 0xA82 PUSH2 0x1672 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xA2E JUMP JUMPDEST POP PUSH2 0xB13 PUSH32 0xC545221CB71DEA46B10349167D787BBA14B050610E9EAB8D78F64FE47B58136 DUP9 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xACC SWAP2 SWAP1 PUSH2 0x185A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xAF8 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1865 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xD52 JUMP JUMPDEST SWAP2 POP POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0xB2D DUP6 DUP6 PUSH2 0xD7E JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0xB3A DUP2 PUSH2 0xDC0 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0xB5E SWAP3 SWAP2 SWAP1 PUSH2 0x18B1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE SWAP1 POP PUSH2 0xB9C DUP5 DUP3 PUSH2 0xE6E JUMP JUMPDEST PUSH2 0xC00 JUMPI PUSH2 0xBF6 DUP5 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP6 PUSH0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0xBBF SWAP3 SWAP2 SWAP1 PUSH2 0x18DF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0xF0B JUMP JUMPDEST PUSH2 0xC00 DUP5 DUP3 PUSH2 0xF0B JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xC25 DUP4 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0xBBF SWAP3 SWAP2 SWAP1 PUSH2 0x18B1 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0xC4C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x37C SWAP1 PUSH2 0x193C JUMP JUMPDEST PUSH0 PUSH0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0xC67 SWAP2 SWAP1 PUSH2 0x196D JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0xCA1 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xCA6 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xCB7 DUP8 DUP4 DUP4 DUP8 PUSH2 0xF9B JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH2 0xD21 DUP4 PUSH2 0xFE3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP2 SWAP3 POP PUSH0 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP POP POP SWAP2 DUP3 MSTORE POP PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x8F4 PUSH2 0xD5E PUSH2 0x100A JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD PUSH2 0x1901 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH0 PUSH0 DUP3 MLOAD PUSH1 0x41 SUB PUSH2 0xDB2 JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH0 BYTE PUSH2 0xDA6 DUP8 DUP3 DUP6 DUP6 PUSH2 0x1099 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP PUSH2 0xDB9 JUMP JUMPDEST POP PUSH0 SWAP1 POP PUSH1 0x2 JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0xDD3 JUMPI PUSH2 0xDD3 PUSH2 0x1978 JUMP JUMPDEST SUB PUSH2 0xDDB JUMPI POP JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0xDEF JUMPI PUSH2 0xDEF PUSH2 0x1978 JUMP JUMPDEST SUB PUSH2 0xE0C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x37C SWAP1 PUSH2 0x19BF JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0xE20 JUMPI PUSH2 0xE20 PUSH2 0x1978 JUMP JUMPDEST SUB PUSH2 0xE3D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x37C SWAP1 PUSH2 0x1A02 JUMP JUMPDEST PUSH1 0x3 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0xE51 JUMPI PUSH2 0xE51 PUSH2 0x1978 JUMP JUMPDEST SUB PUSH2 0x38E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x37C SWAP1 PUSH2 0x1A50 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0xE89 SWAP2 SWAP1 PUSH2 0x196D JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0xEC2 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xEC7 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0xEF1 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0xEF1 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xEF1 SWAP2 SWAP1 PUSH2 0x1A73 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xB17 JUMPI POP POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0xF5F DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1148 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH0 EQ DUP1 PUSH2 0xF7F JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xF7F SWAP2 SWAP1 PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0xC25 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x37C SWAP1 PUSH2 0x1AD7 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xFD9 JUMPI DUP3 MLOAD PUSH0 SUB PUSH2 0xFD2 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xFD2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x37C SWAP1 PUSH2 0x1B1A JUMP JUMPDEST POP DUP2 PUSH2 0xCBC JUMP JUMPDEST PUSH2 0xCBC DUP4 DUP4 PUSH2 0x1160 JUMP JUMPDEST PUSH0 PUSH1 0xFF DUP3 AND PUSH1 0x1F DUP2 GT ISZERO PUSH2 0x8F4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2CD44AC3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 ISZERO PUSH2 0x1062 JUMPI POP PUSH32 0x0 CHAINID EQ JUMPDEST ISZERO PUSH2 0x108C JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x1094 PUSH2 0x118A JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP4 GT ISZERO PUSH2 0x10CE JUMPI POP PUSH0 SWAP1 POP PUSH1 0x3 PUSH2 0x113F JUMP JUMPDEST PUSH0 PUSH1 0x1 DUP8 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x10F1 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1B33 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1111 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1139 JUMPI PUSH0 PUSH1 0x1 SWAP3 POP SWAP3 POP POP PUSH2 0x113F JUMP JUMPDEST SWAP2 POP PUSH0 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1156 DUP5 DUP5 PUSH0 DUP6 PUSH2 0xC2A JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x1170 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x37C SWAP2 SWAP1 PUSH2 0x1B68 JUMP JUMPDEST PUSH0 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH32 0x0 PUSH32 0x0 CHAINID ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1204 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1B79 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP1 JUMPDEST DUP2 EQ PUSH2 0x38E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x8F4 DUP2 PUSH2 0x121F JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1249 JUMPI PUSH2 0x1249 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0xCBC DUP5 DUP5 PUSH2 0x122B JUMP JUMPDEST DUP1 ISZERO ISZERO JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x8F4 DUP3 DUP5 PUSH2 0x1254 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x8F4 JUMP JUMPDEST PUSH2 0x1221 DUP2 PUSH2 0x126C JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x8F4 DUP2 PUSH2 0x127C JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x12A3 JUMPI PUSH2 0x12A3 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0xCBC DUP5 DUP5 PUSH2 0x1285 JUMP JUMPDEST PUSH0 PUSH0 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x12C1 JUMPI PUSH2 0x12C1 PUSH0 PUSH0 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x12DB JUMPI PUSH2 0x12DB PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0xDB9 JUMPI PUSH2 0xDB9 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x130A JUMPI PUSH2 0x130A PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x1315 DUP7 DUP7 PUSH2 0x1285 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1334 JUMPI PUSH2 0x1334 PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1340 DUP7 DUP3 DUP8 ADD PUSH2 0x12AE JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x1258 DUP2 PUSH2 0x126C JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x8F4 DUP3 DUP5 PUSH2 0x134C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT DUP2 AND PUSH2 0x1258 JUMP JUMPDEST DUP3 DUP2 DUP4 MCOPY POP PUSH0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH0 PUSH2 0x1387 DUP3 MLOAD SWAP1 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH2 0x139E DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1373 JUMP JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 PUSH2 0x1258 JUMP JUMPDEST PUSH0 PUSH2 0x13C2 DUP4 DUP4 PUSH2 0x13B1 JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x13D3 DUP3 MLOAD SWAP1 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 DUP4 ADD DUP1 PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1406 JUMPI DUP2 MLOAD PUSH2 0x13F5 DUP9 DUP3 PUSH2 0x13B7 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP4 ADD SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x13E1 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD PUSH2 0x141F DUP3 DUP11 PUSH2 0x1363 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x1431 DUP2 DUP10 PUSH2 0x137E JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x1445 DUP2 DUP9 PUSH2 0x137E JUMP JUMPDEST SWAP1 POP PUSH2 0x1454 PUSH1 0x60 DUP4 ADD DUP8 PUSH2 0x13B1 JUMP JUMPDEST PUSH2 0x1461 PUSH1 0x80 DUP4 ADD DUP7 PUSH2 0x134C JUMP JUMPDEST PUSH2 0x146E PUSH1 0xA0 DUP4 ADD DUP6 PUSH2 0x13B1 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0xC0 DUP4 ADD MSTORE PUSH2 0x1480 DUP2 DUP5 PUSH2 0x13CA JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x14A0 JUMPI PUSH2 0x14A0 PUSH0 PUSH0 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x14BA JUMPI PUSH2 0x14BA PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0xDB9 JUMPI PUSH2 0xDB9 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x80 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x14EC JUMPI PUSH2 0x14EC PUSH0 PUSH0 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1505 JUMPI PUSH2 0x1505 PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1511 DUP10 DUP3 DUP11 ADD PUSH2 0x148D JUMP JUMPDEST SWAP7 POP SWAP7 POP POP PUSH1 0x20 PUSH2 0x1524 DUP10 DUP3 DUP11 ADD PUSH2 0x122B JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x1535 DUP10 DUP3 DUP11 ADD PUSH2 0x122B JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1554 JUMPI PUSH2 0x1554 PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1560 DUP10 DUP3 DUP11 ADD PUSH2 0x12AE JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH0 PUSH2 0x8F4 DUP3 PUSH2 0x126C JUMP JUMPDEST PUSH2 0x1221 DUP2 PUSH2 0x156F JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x8F4 DUP2 PUSH2 0x1579 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x15A1 JUMPI PUSH2 0x15A1 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x15AC DUP6 DUP6 PUSH2 0x1582 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x15BD DUP6 DUP3 DUP7 ADD PUSH2 0x1285 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH0 SWAP2 ADD MSTORE JUMP JUMPDEST DUP2 DUP4 MSTORE PUSH0 PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH2 0x15E7 DUP4 DUP6 DUP5 PUSH2 0x15C7 JUMP JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND PUSH2 0x13A7 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1156 DUP2 DUP5 DUP7 PUSH2 0x15D2 JUMP JUMPDEST PUSH1 0x29 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x4F776E61626C6532537465703A2063616C6C6572206973206E6F742074686520 DUP2 MSTORE PUSH9 0x3732BB9037BBB732B9 PUSH1 0xB9 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP2 POP JUMPDEST POP PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x8F4 DUP2 PUSH2 0x1606 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT CALLDATASIZE DUP6 SWAP1 SUB ADD DUP2 SLT PUSH2 0x169F JUMPI PUSH2 0x169F PUSH0 PUSH0 REVERT JUMPDEST DUP1 DUP5 ADD SWAP3 POP DUP3 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x16BF JUMPI PUSH2 0x16BF PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP3 POP PUSH1 0x1 DUP3 MUL CALLDATASIZE SUB DUP4 SGT ISZERO PUSH2 0x16D9 JUMPI PUSH2 0x16D9 PUSH0 PUSH0 REVERT JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x16ED DUP4 DUP6 DUP5 PUSH2 0x15C7 JUMP JUMPDEST POP POP ADD SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0xCBC DUP3 DUP5 DUP7 PUSH2 0x16E1 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x170D DUP3 DUP7 PUSH2 0x13B1 JUMP JUMPDEST PUSH2 0x171A PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x13B1 JUMP JUMPDEST PUSH2 0xCBC PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x13B1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x8F4 DUP2 PUSH2 0x121F JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1745 JUMPI PUSH2 0x1745 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0xCBC DUP5 DUP5 PUSH2 0x1727 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x8F4 DUP3 DUP5 PUSH2 0x13B1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 SWAP2 ADD SWAP1 DUP2 MSTORE PUSH0 JUMPDEST POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x8F4 DUP2 PUSH2 0x175E JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x2 DUP2 DIV PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x17CA JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x17DC JUMPI PUSH2 0x17DC PUSH2 0x17A2 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 DUP2 MSTORE SWAP2 POP PUSH2 0x178B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x8F4 DUP2 PUSH2 0x17E2 JUMP JUMPDEST PUSH0 PUSH2 0x182E DUP3 MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD DUP1 PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1406 JUMPI DUP2 MLOAD PUSH2 0x1849 DUP9 DUP3 PUSH2 0x13B7 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP4 ADD SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x1835 JUMP JUMPDEST PUSH0 PUSH2 0x1159 DUP3 DUP5 PUSH2 0x1825 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x1873 DUP3 DUP9 PUSH2 0x13B1 JUMP JUMPDEST PUSH2 0x1880 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x134C JUMP JUMPDEST PUSH2 0x188D PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x13B1 JUMP JUMPDEST PUSH2 0x189A PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x13B1 JUMP JUMPDEST PUSH2 0x18A7 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x13B1 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x18BF DUP3 DUP6 PUSH2 0x134C JUMP JUMPDEST PUSH2 0x1159 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x13B1 JUMP JUMPDEST PUSH0 PUSH1 0xFF DUP3 AND PUSH2 0x8F4 JUMP JUMPDEST PUSH2 0x1258 DUP2 PUSH2 0x18CC JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x18ED DUP3 DUP6 PUSH2 0x134C JUMP JUMPDEST PUSH2 0x1159 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x18D6 JUMP JUMPDEST PUSH1 0x26 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F DUP2 MSTORE PUSH6 0x1C8818D85B1B PUSH1 0xD2 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP2 POP PUSH2 0x1647 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x8F4 DUP2 PUSH2 0x18FA JUMP JUMPDEST PUSH0 PUSH2 0x1955 DUP3 MLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1963 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1373 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x1159 DUP3 DUP5 PUSH2 0x194C JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x18 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x45434453413A20696E76616C6964207369676E61747572650000000000000000 DUP2 MSTORE SWAP2 POP PUSH2 0x178B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x8F4 DUP2 PUSH2 0x198C JUMP JUMPDEST PUSH1 0x1F DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x45434453413A20696E76616C6964207369676E6174757265206C656E67746800 DUP2 MSTORE SWAP2 POP PUSH2 0x178B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x8F4 DUP2 PUSH2 0x19CF JUMP JUMPDEST PUSH1 0x22 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202773272076616C DUP2 MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP2 POP PUSH2 0x1647 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x8F4 DUP2 PUSH2 0x1A12 JUMP JUMPDEST DUP1 ISZERO ISZERO PUSH2 0x1221 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x8F4 DUP2 PUSH2 0x1A60 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A86 JUMPI PUSH2 0x1A86 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0xCBC DUP5 DUP5 PUSH2 0x1A68 JUMP JUMPDEST PUSH1 0x2A DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E DUP2 MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP2 POP PUSH2 0x1647 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x8F4 DUP2 PUSH2 0x1A91 JUMP JUMPDEST PUSH1 0x1D DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 DUP2 MSTORE SWAP2 POP PUSH2 0x178B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x8F4 DUP2 PUSH2 0x1AE7 JUMP JUMPDEST PUSH1 0xFF DUP2 AND PUSH2 0x1258 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x1B41 DUP3 DUP8 PUSH2 0x13B1 JUMP JUMPDEST PUSH2 0x1B4E PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x1B2A JUMP JUMPDEST PUSH2 0x1B5B PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x13B1 JUMP JUMPDEST PUSH2 0xB17 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x13B1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x8F1 DUP2 DUP5 PUSH2 0x137E JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x1B87 DUP3 DUP9 PUSH2 0x13B1 JUMP JUMPDEST PUSH2 0x1B94 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x13B1 JUMP JUMPDEST PUSH2 0x1BA1 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x13B1 JUMP JUMPDEST PUSH2 0x1BAE PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x13B1 JUMP JUMPDEST PUSH2 0x18A7 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x134C JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE9 REVERT 0xB2 GT 0xCE PUSH5 0xC20212021C SWAP15 TSTORE 0xE9 0xFC 0xFC SWAP5 EXP SHR MLOAD 0x2F 0xE7 0xFC 0xCE RETURN LOG3 SMOD ISZERO PUSH10 0x5D872B64736F6C634300 ADDMOD SHR STOP CALLER ","sourceMap":"1132:11199:40:-:0;;;4897:197;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3178:431:25;;;;;;;;;;;-1:-1:-1;;;3178:431:25;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3178:431:25;;;;;3251:45;3178:431;-1:-1:-1;3251:30:25;:45::i;:::-;3243:53;;3317:51;:7;3351:16;3317:33;:51::i;:::-;3306:62;;3392:22;;;;;;;;;;3378:36;;3441:25;;;;;;3424:42;;3494:13;3477:30;;3542:23;:21;:23::i;:::-;3517:48;;-1:-1:-1;;3597:4:25;3575:27;;936:32:11;734:10:20;936:18:11;:32::i;:::-;1716:1:14;1821:7;:22;-1:-1:-1;;;;;4972:28:40;::::1;4968:79;;5023:13;;-1:-1:-1::0;;;5023:13:40::1;;;;;;;;;;;4968:79;5057:13;:30:::0;;-1:-1:-1;;;;;;5057:30:40::1;-1:-1:-1::0;;;;;5057:30:40;;;::::1;::::0;;;::::1;::::0;;1132:11199;;2895:341:21;2991:11;3040:2;3024:5;3018:19;:24;3014:216;;;3065:20;3079:5;3065:13;:20::i;:::-;3058:27;;;;3014:216;3142:5;3116:46;3157:5;3142;3116:46;:::i;:::-;-1:-1:-1;1371:66:21;;-1:-1:-1;3014:216:21;2895:341;;;;:::o;3963:180:25:-;4077:11;;4090:14;;4054:81;;4018:7;;4054:81;;1929:95;;4106:13;;4129:4;;4054:81;;;:::i;:::-;;;;;;;;;;;;;4044:92;;;;;;4037:99;;3963:180;:::o;1501:153:12:-;1590:13;1583:20;;-1:-1:-1;;;;;;1583:20:12;;;1613:34;1638:8;1613:24;:34::i;:::-;1501:153;:::o;1689:286:21:-;1754:11;1777:17;1803:3;1777:30;;1835:2;1821:4;:11;:16;1817:72;;;1874:3;1860:18;;-1:-1:-1;;;1860:18:21;;;;;;;;:::i;:::-;;;;;;;;1817:72;1955:11;;1938:13;1955:4;1938:13;:::i;:::-;1930:36;;1689:286;-1:-1:-1;;;1689:286:21:o;3310:202:22:-;3486:10;3310:202::o;2426:187:11:-;2518:6;;;-1:-1:-1;;;;;2534:17:11;;;-1:-1:-1;;;;;;2534:17:11;;;;;;;2566:40;;2518:6;;;2534:17;2518:6;;2566:40;;2499:16;;2566:40;2489:124;2426:187;:::o;466:96:55:-;503:7;-1:-1:-1;;;;;400:54:55;;532:24;334:126;568:122;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;696:143;778:13;;800:33;778:13;800:33;:::i;845:351::-;915:6;964:2;952:9;943:7;939:23;935:32;932:119;;;970:79;197:1;194;187:12;970:79;1090:1;1115:64;1171:7;1151:9;1115:64;:::i;:::-;1105:74;845:351;-1:-1:-1;;;;845:351:55:o;1307:180::-;-1:-1:-1;;;1352:1:55;1345:88;1452:4;1449:1;1442:15;1476:4;1473:1;1466:15;1493:180;-1:-1:-1;;;1538:1:55;1531:88;1638:4;1635:1;1628:15;1662:4;1659:1;1652:15;1679:320;1760:1;1750:12;;1807:1;1797:12;;;1818:81;;1884:4;1876:6;1872:17;1862:27;;1818:81;1946:2;1938:6;1935:14;1915:18;1912:38;1909:84;;1965:18;;:::i;:::-;1730:269;1679:320;;;:::o;2912:142::-;2962:9;2995:53;3013:34;3040:5;3013:34;3310:202:22;3141:269:55;3251:39;3282:7;3251:39;:::i;:::-;3340:11;;-1:-1:-1;;2483:1:55;2467:18;;;;2335:16;;;2692:9;2681:21;2335:16;;2721:30;;;;3299:105;;-1:-1:-1;3141:269:55:o;3495:189::-;3461:3;3613:65;3671:6;3663;3657:4;3613:65;:::i;:::-;3548:136;3495:189;;:::o;3690:186::-;3767:3;3760:5;3757:14;3750:120;;;3821:39;3858:1;3851:5;3821:39;:::i;:::-;3794:1;3783:13;3750:120;;;3690:186;;:::o;3882:543::-;3983:2;3978:3;3975:11;3972:446;;;2054:4;2090:14;;;2134:4;2121:18;;2236:2;2231;2220:14;;2216:23;4091:8;4087:44;4284:2;4272:10;4269:18;4266:49;;;-1:-1:-1;4305:8:55;4266:49;4328:80;2236:2;2231;2220:14;;2216:23;4374:8;4370:37;4357:11;4328:80;:::i;:::-;3987:431;;3882:543;;;:::o;5028:1395::-;1282:12;;-1:-1:-1;;;;;5239:6:55;5236:30;5233:56;;;5269:18;;:::i;:::-;5313:38;5345:4;5339:11;5313:38;:::i;:::-;5398:67;5458:6;5450;5444:4;5398:67;:::i;:::-;5516:4;5548:2;5537:14;;5565:1;5560:618;;;;6222:1;6239:6;6236:77;;;-1:-1:-1;6279:19:55;;;6273:26;6236:77;-1:-1:-1;;4664:1:55;4660:13;;4525:16;4627:56;4702:15;;5009:1;5005:11;;4996:21;6333:4;6326:81;6195:222;5530:887;;5560:618;2054:4;2090:14;;;2134:4;2121:18;;-1:-1:-1;;5596:22:55;;;5719:208;5733:7;5730:1;5727:14;5719:208;;;5803:19;;;5797:26;5782:42;;5910:2;5895:18;;;;5863:1;5851:14;;;;5749:12;5719:208;;;5955:6;5946:7;5943:19;5940:179;;;6004:19;;;5998:26;-1:-1:-1;;6098:4:55;6086:17;;4664:1;4660:13;4525:16;4627:56;4702:15;6041:64;;5940:179;6165:1;6161;6153:6;6149:14;6145:22;6139:4;6132:36;5567:611;;;5530:887;;5120:1303;;;5028:1395;;:::o;6512:118::-;6617:5;6599:24;6594:3;6587:37;6512:118;;:::o;6760:::-;6847:24;6865:5;6847:24;:::i;6884:664::-;7127:3;7112:19;;7141:71;7116:9;7185:6;7141:71;:::i;:::-;7222:72;7290:2;7279:9;7275:18;7266:6;7222:72;:::i;:::-;7304;7372:2;7361:9;7357:18;7348:6;7304:72;:::i;:::-;7386;7454:2;7443:9;7439:18;7430:6;7386:72;:::i;:::-;7468:73;7536:3;7525:9;7521:19;7512:6;7468:73;:::i;:::-;6884:664;;;;;;;;:::o;7729:139::-;7818:6;7813:3;7808;7802:23;-1:-1:-1;7859:1:55;7841:16;;7834:27;7729:139::o;7982:377::-;8070:3;8098:39;8131:5;1282:12;;1202:99;8098:39;7660:19;;;7712:4;7703:14;;8146:78;;8233:65;8291:6;8286:3;8279:4;8272:5;8268:16;8233:65;:::i;:::-;7966:2;7946:14;-1:-1:-1;;7942:28:55;8314:39;;;;;;-1:-1:-1;;7982:377:55:o;8365:313::-;8516:2;8529:47;;;8501:18;;8593:78;8501:18;8657:6;8593:78;:::i;:::-;8585:86;8365:313;-1:-1:-1;;;8365:313:55:o;8910:154::-;8953:11;8989:29;9013:3;9007:10;3486::22;3310:202;9070:594:55;9154:5;9185:38;9217:5;1282:12;;1202:99;9185:38;8892:4;8883:14;;9334:35;8883:14;9334:35;:::i;:::-;9325:44;;9393:2;9385:6;9382:14;9379:278;;;9464:169;-1:-1:-1;;9519:6:55;9515:2;9511:15;9508:1;9504:23;2335:16;;2251:107;9464:169;9441:5;9420:227;9411:236;;9379:278;9160:504;;9070:594;;;:::o;:::-;1132:11199:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_buildDomainSeparator_3705":{"entryPoint":4490,"id":3705,"parameterSlots":0,"returnSlots":1},"@_callOptionalReturnBool_1028":{"entryPoint":3694,"id":1028,"parameterSlots":2,"returnSlots":1},"@_callOptionalReturn_980":{"entryPoint":3851,"id":980,"parameterSlots":2,"returnSlots":0},"@_checkOwner_1538":{"entryPoint":2180,"id":1538,"parameterSlots":0,"returnSlots":0},"@_domainSeparatorV4_3684":{"entryPoint":4106,"id":3684,"parameterSlots":0,"returnSlots":1},"@_hashMulticall_8321":{"entryPoint":2533,"id":8321,"parameterSlots":5,"returnSlots":1},"@_hashTypedDataV4_3721":{"entryPoint":3410,"id":3721,"parameterSlots":1,"returnSlots":1},"@_msgSender_2626":{"entryPoint":null,"id":2626,"parameterSlots":0,"returnSlots":1},"@_nonReentrantAfter_1757":{"entryPoint":null,"id":1757,"parameterSlots":0,"returnSlots":0},"@_nonReentrantBefore_1749":{"entryPoint":2492,"id":1749,"parameterSlots":0,"returnSlots":0},"@_revert_1358":{"entryPoint":4448,"id":1358,"parameterSlots":2,"returnSlots":0},"@_throwError_3253":{"entryPoint":3520,"id":3253,"parameterSlots":1,"returnSlots":0},"@_transferOwnership_1595":{"entryPoint":3268,"id":1595,"parameterSlots":1,"returnSlots":0},"@_transferOwnership_1656":{"entryPoint":2298,"id":1656,"parameterSlots":1,"returnSlots":0},"@acceptOwnership_1678":{"entryPoint":848,"id":1678,"parameterSlots":0,"returnSlots":0},"@approveMax_8223":{"entryPoint":1588,"id":8223,"parameterSlots":2,"returnSlots":0},"@backendSigner_7866":{"entryPoint":null,"id":7866,"parameterSlots":0,"returnSlots":0},"@byteLength_2761":{"entryPoint":4067,"id":2761,"parameterSlots":1,"returnSlots":1},"@eip712Domain_3768":{"entryPoint":913,"id":3768,"parameterSlots":0,"returnSlots":7},"@forceApprove_886":{"entryPoint":2882,"id":886,"parameterSlots":3,"returnSlots":0},"@functionCallWithValue_1183":{"entryPoint":3114,"id":1183,"parameterSlots":4,"returnSlots":1},"@functionCall_1099":{"entryPoint":2222,"id":1099,"parameterSlots":2,"returnSlots":1},"@functionCall_1119":{"entryPoint":4424,"id":1119,"parameterSlots":3,"returnSlots":1},"@genericCall_8128":{"entryPoint":626,"id":8128,"parameterSlots":3,"returnSlots":0},"@isContract_1047":{"entryPoint":null,"id":1047,"parameterSlots":1,"returnSlots":1},"@multicall_8106":{"entryPoint":1047,"id":8106,"parameterSlots":6,"returnSlots":0},"@owner_1524":{"entryPoint":null,"id":1524,"parameterSlots":0,"returnSlots":1},"@pendingOwner_1619":{"entryPoint":null,"id":1619,"parameterSlots":0,"returnSlots":1},"@recover_3326":{"entryPoint":2848,"id":3326,"parameterSlots":2,"returnSlots":1},"@renounceOwnership_1552":{"entryPoint":829,"id":1552,"parameterSlots":0,"returnSlots":0},"@safeTransfer_686":{"entryPoint":3078,"id":686,"parameterSlots":3,"returnSlots":0},"@setBackendSigner_8252":{"entryPoint":488,"id":8252,"parameterSlots":1,"returnSlots":0},"@sweep_8192":{"entryPoint":1734,"id":8192,"parameterSlots":2,"returnSlots":0},"@toStringWithFallback_2828":{"entryPoint":2323,"id":2828,"parameterSlots":2,"returnSlots":1},"@toString_2729":{"entryPoint":3349,"id":2729,"parameterSlots":1,"returnSlots":1},"@toTypedDataHash_3544":{"entryPoint":null,"id":3544,"parameterSlots":2,"returnSlots":1},"@transferOwnership_1639":{"entryPoint":2067,"id":1639,"parameterSlots":1,"returnSlots":0},"@tryRecover_3299":{"entryPoint":3454,"id":3299,"parameterSlots":2,"returnSlots":2},"@tryRecover_3467":{"entryPoint":4249,"id":3467,"parameterSlots":4,"returnSlots":2},"@usedSalts_7871":{"entryPoint":null,"id":7871,"parameterSlots":0,"returnSlots":0},"@verifyCallResultFromTarget_1314":{"entryPoint":3995,"id":1314,"parameterSlots":4,"returnSlots":1},"abi_decode_t_address":{"entryPoint":4741,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr":{"entryPoint":5261,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_t_bool_fromMemory":{"entryPoint":6760,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes32":{"entryPoint":4651,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes_calldata_ptr":{"entryPoint":4782,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_t_contract$_IERC20Upgradeable_$617":{"entryPoint":5506,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256_fromMemory":{"entryPoint":5927,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":4752,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_calldata_ptr":{"entryPoint":4853,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptrt_uint256t_bytes32t_bytes_calldata_ptr":{"entryPoint":5332,"id":null,"parameterSlots":2,"returnSlots":6},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":6771,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32":{"entryPoint":4662,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IERC20Upgradeable_$617t_address":{"entryPoint":5517,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":5938,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_t_bytes32_to_t_bytes32_inplace":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_t_uint256_to_t_uint256":{"entryPoint":5047,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":4940,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_array$_t_bytes32_$dyn_memory_ptr_to_t_array$_t_bytes32_$dyn_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":6181,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack":{"entryPoint":5066,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_bool_to_t_bool_fromStack":{"entryPoint":4692,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes1_to_t_bytes1_fromStack":{"entryPoint":4963,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes32_to_t_bytes32_fromStack":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes32_to_t_bytes32_inplace":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack":{"entryPoint":5586,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":5857,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":6476,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_rational_0_by_1_to_t_uint8_fromStack":{"entryPoint":6358,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack":{"entryPoint":4990,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be_to_t_string_memory_ptr_fromStack":{"entryPoint":6540,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77_to_t_string_memory_ptr_fromStack":{"entryPoint":6607,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_225559eb8402045bea7ff07c35d0ad8c0547830223ac1c21d44fb948d6896ebc_to_t_string_memory_ptr_fromStack":{"entryPoint":5638,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd_to_t_string_memory_ptr_fromStack":{"entryPoint":6674,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c_to_t_string_memory_ptr_fromStack":{"entryPoint":6394,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack":{"entryPoint":5982,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad_to_t_string_memory_ptr_fromStack":{"entryPoint":6887,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd_to_t_string_memory_ptr_fromStack":{"entryPoint":6801,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619_to_t_string_memory_ptr_fromStack":{"entryPoint":6114,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_uint256_to_t_uint256":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint256_to_t_uint256_fromStack":{"entryPoint":5041,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint8_to_t_uint8_fromStack":{"entryPoint":6954,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_packed_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":6234,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":5875,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":6509,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":4949,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_rational_0_by_1__to_t_address_t_uint8__fromStack_reversed":{"entryPoint":6367,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed":{"entryPoint":6321,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":4702,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes1_t_string_memory_ptr_t_string_memory_ptr_t_uint256_t_address_t_bytes32_t_array$_t_uint256_$dyn_memory_ptr__to_t_bytes1_t_string_memory_ptr_t_string_memory_ptr_t_uint256_t_address_t_bytes32_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":5137,"id":null,"parameterSlots":8,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_address_t_bytes32_t_uint256_t_bytes32__to_t_bytes32_t_address_t_bytes32_t_uint256_t_bytes32__fromStack_reversed":{"entryPoint":6245,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed":{"entryPoint":7033,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed":{"entryPoint":6963,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":5620,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":7016,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":6591,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":6658,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_225559eb8402045bea7ff07c35d0ad8c0547830223ac1c21d44fb948d6896ebc__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":5710,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":6736,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":6460,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":6034,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":6938,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":6871,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":6165,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":5968,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256_t_uint256_t_bytes32__to_t_uint256_t_uint256_t_bytes32__fromStack_reversed":{"entryPoint":5887,"id":null,"parameterSlots":4,"returnSlots":1},"access_calldata_tail_t_bytes_calldata_ptr":{"entryPoint":5766,"id":null,"parameterSlots":2,"returnSlots":2},"allocate_unbounded":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"array_dataslot_t_array$_t_bytes32_$dyn_memory_ptr":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_t_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_array$_t_bytes32_$dyn_memory_ptr":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_bytes_memory_ptr":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_string_memory_ptr":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_t_array$_t_bytes32_$dyn_memory_ptr":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_t_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_array$_t_bytes32_$dyn_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_address":{"entryPoint":4716,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bool":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bytes1":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bytes32":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_contract$_IERC20Upgradeable_$617":{"entryPoint":5487,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_0_by_1":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint8":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_rational_0_by_1_to_t_uint8":{"entryPoint":6348,"id":null,"parameterSlots":1,"returnSlots":1},"copy_calldata_to_memory_with_cleanup":{"entryPoint":5575,"id":null,"parameterSlots":3,"returnSlots":0},"copy_memory_to_memory_with_cleanup":{"entryPoint":4979,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":6070,"id":null,"parameterSlots":1,"returnSlots":1},"identity":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x21":{"entryPoint":6520,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x22":{"entryPoint":6050,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":5746,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":5726,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1e55d03107e9c4f1b5e21c76a16fba166a461117ab153bcce65e6a4ea8e5fc8a":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_356d538aaf70fba12156cc466564b792649f8f3befb07b071c91142253e175ad":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_977805620ff29572292dee35f70b0f3f3f73d3fdd0e9f4d7a901c2e43ab18a2e":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"store_literal_in_memory_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_225559eb8402045bea7ff07c35d0ad8c0547830223ac1c21d44fb948d6896ebc":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_address":{"entryPoint":4732,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bool":{"entryPoint":6752,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bytes32":{"entryPoint":4639,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_contract$_IERC20Upgradeable_$617":{"entryPoint":5497,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:32936:55","nodeType":"YulBlock","src":"0:32936:55","statements":[{"body":{"nativeSrc":"47:35:55","nodeType":"YulBlock","src":"47:35:55","statements":[{"nativeSrc":"57:19:55","nodeType":"YulAssignment","src":"57:19:55","value":{"arguments":[{"kind":"number","nativeSrc":"73:2:55","nodeType":"YulLiteral","src":"73:2:55","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"67:5:55","nodeType":"YulIdentifier","src":"67:5:55"},"nativeSrc":"67:9:55","nodeType":"YulFunctionCall","src":"67:9:55"},"variableNames":[{"name":"memPtr","nativeSrc":"57:6:55","nodeType":"YulIdentifier","src":"57:6:55"}]}]},"name":"allocate_unbounded","nativeSrc":"7:75:55","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"40:6:55","nodeType":"YulTypedName","src":"40:6:55","type":""}],"src":"7:75:55"},{"body":{"nativeSrc":"177:28:55","nodeType":"YulBlock","src":"177:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"194:1:55","nodeType":"YulLiteral","src":"194:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"197:1:55","nodeType":"YulLiteral","src":"197:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"187:6:55","nodeType":"YulIdentifier","src":"187:6:55"},"nativeSrc":"187:12:55","nodeType":"YulFunctionCall","src":"187:12:55"},"nativeSrc":"187:12:55","nodeType":"YulExpressionStatement","src":"187:12:55"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"88:117:55","nodeType":"YulFunctionDefinition","src":"88:117:55"},{"body":{"nativeSrc":"300:28:55","nodeType":"YulBlock","src":"300:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"317:1:55","nodeType":"YulLiteral","src":"317:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"320:1:55","nodeType":"YulLiteral","src":"320:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"310:6:55","nodeType":"YulIdentifier","src":"310:6:55"},"nativeSrc":"310:12:55","nodeType":"YulFunctionCall","src":"310:12:55"},"nativeSrc":"310:12:55","nodeType":"YulExpressionStatement","src":"310:12:55"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"211:117:55","nodeType":"YulFunctionDefinition","src":"211:117:55"},{"body":{"nativeSrc":"379:32:55","nodeType":"YulBlock","src":"379:32:55","statements":[{"nativeSrc":"389:16:55","nodeType":"YulAssignment","src":"389:16:55","value":{"name":"value","nativeSrc":"400:5:55","nodeType":"YulIdentifier","src":"400:5:55"},"variableNames":[{"name":"cleaned","nativeSrc":"389:7:55","nodeType":"YulIdentifier","src":"389:7:55"}]}]},"name":"cleanup_t_bytes32","nativeSrc":"334:77:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"361:5:55","nodeType":"YulTypedName","src":"361:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"371:7:55","nodeType":"YulTypedName","src":"371:7:55","type":""}],"src":"334:77:55"},{"body":{"nativeSrc":"460:79:55","nodeType":"YulBlock","src":"460:79:55","statements":[{"body":{"nativeSrc":"517:16:55","nodeType":"YulBlock","src":"517:16:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"526:1:55","nodeType":"YulLiteral","src":"526:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"529:1:55","nodeType":"YulLiteral","src":"529:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"519:6:55","nodeType":"YulIdentifier","src":"519:6:55"},"nativeSrc":"519:12:55","nodeType":"YulFunctionCall","src":"519:12:55"},"nativeSrc":"519:12:55","nodeType":"YulExpressionStatement","src":"519:12:55"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"483:5:55","nodeType":"YulIdentifier","src":"483:5:55"},{"arguments":[{"name":"value","nativeSrc":"508:5:55","nodeType":"YulIdentifier","src":"508:5:55"}],"functionName":{"name":"cleanup_t_bytes32","nativeSrc":"490:17:55","nodeType":"YulIdentifier","src":"490:17:55"},"nativeSrc":"490:24:55","nodeType":"YulFunctionCall","src":"490:24:55"}],"functionName":{"name":"eq","nativeSrc":"480:2:55","nodeType":"YulIdentifier","src":"480:2:55"},"nativeSrc":"480:35:55","nodeType":"YulFunctionCall","src":"480:35:55"}],"functionName":{"name":"iszero","nativeSrc":"473:6:55","nodeType":"YulIdentifier","src":"473:6:55"},"nativeSrc":"473:43:55","nodeType":"YulFunctionCall","src":"473:43:55"},"nativeSrc":"470:63:55","nodeType":"YulIf","src":"470:63:55"}]},"name":"validator_revert_t_bytes32","nativeSrc":"417:122:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"453:5:55","nodeType":"YulTypedName","src":"453:5:55","type":""}],"src":"417:122:55"},{"body":{"nativeSrc":"597:87:55","nodeType":"YulBlock","src":"597:87:55","statements":[{"nativeSrc":"607:29:55","nodeType":"YulAssignment","src":"607:29:55","value":{"arguments":[{"name":"offset","nativeSrc":"629:6:55","nodeType":"YulIdentifier","src":"629:6:55"}],"functionName":{"name":"calldataload","nativeSrc":"616:12:55","nodeType":"YulIdentifier","src":"616:12:55"},"nativeSrc":"616:20:55","nodeType":"YulFunctionCall","src":"616:20:55"},"variableNames":[{"name":"value","nativeSrc":"607:5:55","nodeType":"YulIdentifier","src":"607:5:55"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"672:5:55","nodeType":"YulIdentifier","src":"672:5:55"}],"functionName":{"name":"validator_revert_t_bytes32","nativeSrc":"645:26:55","nodeType":"YulIdentifier","src":"645:26:55"},"nativeSrc":"645:33:55","nodeType":"YulFunctionCall","src":"645:33:55"},"nativeSrc":"645:33:55","nodeType":"YulExpressionStatement","src":"645:33:55"}]},"name":"abi_decode_t_bytes32","nativeSrc":"545:139:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"575:6:55","nodeType":"YulTypedName","src":"575:6:55","type":""},{"name":"end","nativeSrc":"583:3:55","nodeType":"YulTypedName","src":"583:3:55","type":""}],"returnVariables":[{"name":"value","nativeSrc":"591:5:55","nodeType":"YulTypedName","src":"591:5:55","type":""}],"src":"545:139:55"},{"body":{"nativeSrc":"756:263:55","nodeType":"YulBlock","src":"756:263:55","statements":[{"body":{"nativeSrc":"802:83:55","nodeType":"YulBlock","src":"802:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"804:77:55","nodeType":"YulIdentifier","src":"804:77:55"},"nativeSrc":"804:79:55","nodeType":"YulFunctionCall","src":"804:79:55"},"nativeSrc":"804:79:55","nodeType":"YulExpressionStatement","src":"804:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"777:7:55","nodeType":"YulIdentifier","src":"777:7:55"},{"name":"headStart","nativeSrc":"786:9:55","nodeType":"YulIdentifier","src":"786:9:55"}],"functionName":{"name":"sub","nativeSrc":"773:3:55","nodeType":"YulIdentifier","src":"773:3:55"},"nativeSrc":"773:23:55","nodeType":"YulFunctionCall","src":"773:23:55"},{"kind":"number","nativeSrc":"798:2:55","nodeType":"YulLiteral","src":"798:2:55","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"769:3:55","nodeType":"YulIdentifier","src":"769:3:55"},"nativeSrc":"769:32:55","nodeType":"YulFunctionCall","src":"769:32:55"},"nativeSrc":"766:119:55","nodeType":"YulIf","src":"766:119:55"},{"nativeSrc":"895:117:55","nodeType":"YulBlock","src":"895:117:55","statements":[{"nativeSrc":"910:15:55","nodeType":"YulVariableDeclaration","src":"910:15:55","value":{"kind":"number","nativeSrc":"924:1:55","nodeType":"YulLiteral","src":"924:1:55","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"914:6:55","nodeType":"YulTypedName","src":"914:6:55","type":""}]},{"nativeSrc":"939:63:55","nodeType":"YulAssignment","src":"939:63:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"974:9:55","nodeType":"YulIdentifier","src":"974:9:55"},{"name":"offset","nativeSrc":"985:6:55","nodeType":"YulIdentifier","src":"985:6:55"}],"functionName":{"name":"add","nativeSrc":"970:3:55","nodeType":"YulIdentifier","src":"970:3:55"},"nativeSrc":"970:22:55","nodeType":"YulFunctionCall","src":"970:22:55"},{"name":"dataEnd","nativeSrc":"994:7:55","nodeType":"YulIdentifier","src":"994:7:55"}],"functionName":{"name":"abi_decode_t_bytes32","nativeSrc":"949:20:55","nodeType":"YulIdentifier","src":"949:20:55"},"nativeSrc":"949:53:55","nodeType":"YulFunctionCall","src":"949:53:55"},"variableNames":[{"name":"value0","nativeSrc":"939:6:55","nodeType":"YulIdentifier","src":"939:6:55"}]}]}]},"name":"abi_decode_tuple_t_bytes32","nativeSrc":"690:329:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"726:9:55","nodeType":"YulTypedName","src":"726:9:55","type":""},{"name":"dataEnd","nativeSrc":"737:7:55","nodeType":"YulTypedName","src":"737:7:55","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"749:6:55","nodeType":"YulTypedName","src":"749:6:55","type":""}],"src":"690:329:55"},{"body":{"nativeSrc":"1067:48:55","nodeType":"YulBlock","src":"1067:48:55","statements":[{"nativeSrc":"1077:32:55","nodeType":"YulAssignment","src":"1077:32:55","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1102:5:55","nodeType":"YulIdentifier","src":"1102:5:55"}],"functionName":{"name":"iszero","nativeSrc":"1095:6:55","nodeType":"YulIdentifier","src":"1095:6:55"},"nativeSrc":"1095:13:55","nodeType":"YulFunctionCall","src":"1095:13:55"}],"functionName":{"name":"iszero","nativeSrc":"1088:6:55","nodeType":"YulIdentifier","src":"1088:6:55"},"nativeSrc":"1088:21:55","nodeType":"YulFunctionCall","src":"1088:21:55"},"variableNames":[{"name":"cleaned","nativeSrc":"1077:7:55","nodeType":"YulIdentifier","src":"1077:7:55"}]}]},"name":"cleanup_t_bool","nativeSrc":"1025:90:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1049:5:55","nodeType":"YulTypedName","src":"1049:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"1059:7:55","nodeType":"YulTypedName","src":"1059:7:55","type":""}],"src":"1025:90:55"},{"body":{"nativeSrc":"1180:50:55","nodeType":"YulBlock","src":"1180:50:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"1197:3:55","nodeType":"YulIdentifier","src":"1197:3:55"},{"arguments":[{"name":"value","nativeSrc":"1217:5:55","nodeType":"YulIdentifier","src":"1217:5:55"}],"functionName":{"name":"cleanup_t_bool","nativeSrc":"1202:14:55","nodeType":"YulIdentifier","src":"1202:14:55"},"nativeSrc":"1202:21:55","nodeType":"YulFunctionCall","src":"1202:21:55"}],"functionName":{"name":"mstore","nativeSrc":"1190:6:55","nodeType":"YulIdentifier","src":"1190:6:55"},"nativeSrc":"1190:34:55","nodeType":"YulFunctionCall","src":"1190:34:55"},"nativeSrc":"1190:34:55","nodeType":"YulExpressionStatement","src":"1190:34:55"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nativeSrc":"1121:109:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1168:5:55","nodeType":"YulTypedName","src":"1168:5:55","type":""},{"name":"pos","nativeSrc":"1175:3:55","nodeType":"YulTypedName","src":"1175:3:55","type":""}],"src":"1121:109:55"},{"body":{"nativeSrc":"1328:118:55","nodeType":"YulBlock","src":"1328:118:55","statements":[{"nativeSrc":"1338:26:55","nodeType":"YulAssignment","src":"1338:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"1350:9:55","nodeType":"YulIdentifier","src":"1350:9:55"},{"kind":"number","nativeSrc":"1361:2:55","nodeType":"YulLiteral","src":"1361:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1346:3:55","nodeType":"YulIdentifier","src":"1346:3:55"},"nativeSrc":"1346:18:55","nodeType":"YulFunctionCall","src":"1346:18:55"},"variableNames":[{"name":"tail","nativeSrc":"1338:4:55","nodeType":"YulIdentifier","src":"1338:4:55"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"1412:6:55","nodeType":"YulIdentifier","src":"1412:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"1425:9:55","nodeType":"YulIdentifier","src":"1425:9:55"},{"kind":"number","nativeSrc":"1436:1:55","nodeType":"YulLiteral","src":"1436:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"1421:3:55","nodeType":"YulIdentifier","src":"1421:3:55"},"nativeSrc":"1421:17:55","nodeType":"YulFunctionCall","src":"1421:17:55"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nativeSrc":"1374:37:55","nodeType":"YulIdentifier","src":"1374:37:55"},"nativeSrc":"1374:65:55","nodeType":"YulFunctionCall","src":"1374:65:55"},"nativeSrc":"1374:65:55","nodeType":"YulExpressionStatement","src":"1374:65:55"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nativeSrc":"1236:210:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1300:9:55","nodeType":"YulTypedName","src":"1300:9:55","type":""},{"name":"value0","nativeSrc":"1312:6:55","nodeType":"YulTypedName","src":"1312:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1323:4:55","nodeType":"YulTypedName","src":"1323:4:55","type":""}],"src":"1236:210:55"},{"body":{"nativeSrc":"1497:81:55","nodeType":"YulBlock","src":"1497:81:55","statements":[{"nativeSrc":"1507:65:55","nodeType":"YulAssignment","src":"1507:65:55","value":{"arguments":[{"name":"value","nativeSrc":"1522:5:55","nodeType":"YulIdentifier","src":"1522:5:55"},{"kind":"number","nativeSrc":"1529:42:55","nodeType":"YulLiteral","src":"1529:42:55","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"1518:3:55","nodeType":"YulIdentifier","src":"1518:3:55"},"nativeSrc":"1518:54:55","nodeType":"YulFunctionCall","src":"1518:54:55"},"variableNames":[{"name":"cleaned","nativeSrc":"1507:7:55","nodeType":"YulIdentifier","src":"1507:7:55"}]}]},"name":"cleanup_t_uint160","nativeSrc":"1452:126:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1479:5:55","nodeType":"YulTypedName","src":"1479:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"1489:7:55","nodeType":"YulTypedName","src":"1489:7:55","type":""}],"src":"1452:126:55"},{"body":{"nativeSrc":"1629:51:55","nodeType":"YulBlock","src":"1629:51:55","statements":[{"nativeSrc":"1639:35:55","nodeType":"YulAssignment","src":"1639:35:55","value":{"arguments":[{"name":"value","nativeSrc":"1668:5:55","nodeType":"YulIdentifier","src":"1668:5:55"}],"functionName":{"name":"cleanup_t_uint160","nativeSrc":"1650:17:55","nodeType":"YulIdentifier","src":"1650:17:55"},"nativeSrc":"1650:24:55","nodeType":"YulFunctionCall","src":"1650:24:55"},"variableNames":[{"name":"cleaned","nativeSrc":"1639:7:55","nodeType":"YulIdentifier","src":"1639:7:55"}]}]},"name":"cleanup_t_address","nativeSrc":"1584:96:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1611:5:55","nodeType":"YulTypedName","src":"1611:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"1621:7:55","nodeType":"YulTypedName","src":"1621:7:55","type":""}],"src":"1584:96:55"},{"body":{"nativeSrc":"1729:79:55","nodeType":"YulBlock","src":"1729:79:55","statements":[{"body":{"nativeSrc":"1786:16:55","nodeType":"YulBlock","src":"1786:16:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1795:1:55","nodeType":"YulLiteral","src":"1795:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"1798:1:55","nodeType":"YulLiteral","src":"1798:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1788:6:55","nodeType":"YulIdentifier","src":"1788:6:55"},"nativeSrc":"1788:12:55","nodeType":"YulFunctionCall","src":"1788:12:55"},"nativeSrc":"1788:12:55","nodeType":"YulExpressionStatement","src":"1788:12:55"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1752:5:55","nodeType":"YulIdentifier","src":"1752:5:55"},{"arguments":[{"name":"value","nativeSrc":"1777:5:55","nodeType":"YulIdentifier","src":"1777:5:55"}],"functionName":{"name":"cleanup_t_address","nativeSrc":"1759:17:55","nodeType":"YulIdentifier","src":"1759:17:55"},"nativeSrc":"1759:24:55","nodeType":"YulFunctionCall","src":"1759:24:55"}],"functionName":{"name":"eq","nativeSrc":"1749:2:55","nodeType":"YulIdentifier","src":"1749:2:55"},"nativeSrc":"1749:35:55","nodeType":"YulFunctionCall","src":"1749:35:55"}],"functionName":{"name":"iszero","nativeSrc":"1742:6:55","nodeType":"YulIdentifier","src":"1742:6:55"},"nativeSrc":"1742:43:55","nodeType":"YulFunctionCall","src":"1742:43:55"},"nativeSrc":"1739:63:55","nodeType":"YulIf","src":"1739:63:55"}]},"name":"validator_revert_t_address","nativeSrc":"1686:122:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1722:5:55","nodeType":"YulTypedName","src":"1722:5:55","type":""}],"src":"1686:122:55"},{"body":{"nativeSrc":"1866:87:55","nodeType":"YulBlock","src":"1866:87:55","statements":[{"nativeSrc":"1876:29:55","nodeType":"YulAssignment","src":"1876:29:55","value":{"arguments":[{"name":"offset","nativeSrc":"1898:6:55","nodeType":"YulIdentifier","src":"1898:6:55"}],"functionName":{"name":"calldataload","nativeSrc":"1885:12:55","nodeType":"YulIdentifier","src":"1885:12:55"},"nativeSrc":"1885:20:55","nodeType":"YulFunctionCall","src":"1885:20:55"},"variableNames":[{"name":"value","nativeSrc":"1876:5:55","nodeType":"YulIdentifier","src":"1876:5:55"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"1941:5:55","nodeType":"YulIdentifier","src":"1941:5:55"}],"functionName":{"name":"validator_revert_t_address","nativeSrc":"1914:26:55","nodeType":"YulIdentifier","src":"1914:26:55"},"nativeSrc":"1914:33:55","nodeType":"YulFunctionCall","src":"1914:33:55"},"nativeSrc":"1914:33:55","nodeType":"YulExpressionStatement","src":"1914:33:55"}]},"name":"abi_decode_t_address","nativeSrc":"1814:139:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1844:6:55","nodeType":"YulTypedName","src":"1844:6:55","type":""},{"name":"end","nativeSrc":"1852:3:55","nodeType":"YulTypedName","src":"1852:3:55","type":""}],"returnVariables":[{"name":"value","nativeSrc":"1860:5:55","nodeType":"YulTypedName","src":"1860:5:55","type":""}],"src":"1814:139:55"},{"body":{"nativeSrc":"2025:263:55","nodeType":"YulBlock","src":"2025:263:55","statements":[{"body":{"nativeSrc":"2071:83:55","nodeType":"YulBlock","src":"2071:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"2073:77:55","nodeType":"YulIdentifier","src":"2073:77:55"},"nativeSrc":"2073:79:55","nodeType":"YulFunctionCall","src":"2073:79:55"},"nativeSrc":"2073:79:55","nodeType":"YulExpressionStatement","src":"2073:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2046:7:55","nodeType":"YulIdentifier","src":"2046:7:55"},{"name":"headStart","nativeSrc":"2055:9:55","nodeType":"YulIdentifier","src":"2055:9:55"}],"functionName":{"name":"sub","nativeSrc":"2042:3:55","nodeType":"YulIdentifier","src":"2042:3:55"},"nativeSrc":"2042:23:55","nodeType":"YulFunctionCall","src":"2042:23:55"},{"kind":"number","nativeSrc":"2067:2:55","nodeType":"YulLiteral","src":"2067:2:55","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2038:3:55","nodeType":"YulIdentifier","src":"2038:3:55"},"nativeSrc":"2038:32:55","nodeType":"YulFunctionCall","src":"2038:32:55"},"nativeSrc":"2035:119:55","nodeType":"YulIf","src":"2035:119:55"},{"nativeSrc":"2164:117:55","nodeType":"YulBlock","src":"2164:117:55","statements":[{"nativeSrc":"2179:15:55","nodeType":"YulVariableDeclaration","src":"2179:15:55","value":{"kind":"number","nativeSrc":"2193:1:55","nodeType":"YulLiteral","src":"2193:1:55","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"2183:6:55","nodeType":"YulTypedName","src":"2183:6:55","type":""}]},{"nativeSrc":"2208:63:55","nodeType":"YulAssignment","src":"2208:63:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2243:9:55","nodeType":"YulIdentifier","src":"2243:9:55"},{"name":"offset","nativeSrc":"2254:6:55","nodeType":"YulIdentifier","src":"2254:6:55"}],"functionName":{"name":"add","nativeSrc":"2239:3:55","nodeType":"YulIdentifier","src":"2239:3:55"},"nativeSrc":"2239:22:55","nodeType":"YulFunctionCall","src":"2239:22:55"},{"name":"dataEnd","nativeSrc":"2263:7:55","nodeType":"YulIdentifier","src":"2263:7:55"}],"functionName":{"name":"abi_decode_t_address","nativeSrc":"2218:20:55","nodeType":"YulIdentifier","src":"2218:20:55"},"nativeSrc":"2218:53:55","nodeType":"YulFunctionCall","src":"2218:53:55"},"variableNames":[{"name":"value0","nativeSrc":"2208:6:55","nodeType":"YulIdentifier","src":"2208:6:55"}]}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"1959:329:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1995:9:55","nodeType":"YulTypedName","src":"1995:9:55","type":""},{"name":"dataEnd","nativeSrc":"2006:7:55","nodeType":"YulTypedName","src":"2006:7:55","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2018:6:55","nodeType":"YulTypedName","src":"2018:6:55","type":""}],"src":"1959:329:55"},{"body":{"nativeSrc":"2383:28:55","nodeType":"YulBlock","src":"2383:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2400:1:55","nodeType":"YulLiteral","src":"2400:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"2403:1:55","nodeType":"YulLiteral","src":"2403:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2393:6:55","nodeType":"YulIdentifier","src":"2393:6:55"},"nativeSrc":"2393:12:55","nodeType":"YulFunctionCall","src":"2393:12:55"},"nativeSrc":"2393:12:55","nodeType":"YulExpressionStatement","src":"2393:12:55"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nativeSrc":"2294:117:55","nodeType":"YulFunctionDefinition","src":"2294:117:55"},{"body":{"nativeSrc":"2506:28:55","nodeType":"YulBlock","src":"2506:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2523:1:55","nodeType":"YulLiteral","src":"2523:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"2526:1:55","nodeType":"YulLiteral","src":"2526:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2516:6:55","nodeType":"YulIdentifier","src":"2516:6:55"},"nativeSrc":"2516:12:55","nodeType":"YulFunctionCall","src":"2516:12:55"},"nativeSrc":"2516:12:55","nodeType":"YulExpressionStatement","src":"2516:12:55"}]},"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nativeSrc":"2417:117:55","nodeType":"YulFunctionDefinition","src":"2417:117:55"},{"body":{"nativeSrc":"2629:28:55","nodeType":"YulBlock","src":"2629:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2646:1:55","nodeType":"YulLiteral","src":"2646:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"2649:1:55","nodeType":"YulLiteral","src":"2649:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2639:6:55","nodeType":"YulIdentifier","src":"2639:6:55"},"nativeSrc":"2639:12:55","nodeType":"YulFunctionCall","src":"2639:12:55"},"nativeSrc":"2639:12:55","nodeType":"YulExpressionStatement","src":"2639:12:55"}]},"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nativeSrc":"2540:117:55","nodeType":"YulFunctionDefinition","src":"2540:117:55"},{"body":{"nativeSrc":"2750:478:55","nodeType":"YulBlock","src":"2750:478:55","statements":[{"body":{"nativeSrc":"2799:83:55","nodeType":"YulBlock","src":"2799:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nativeSrc":"2801:77:55","nodeType":"YulIdentifier","src":"2801:77:55"},"nativeSrc":"2801:79:55","nodeType":"YulFunctionCall","src":"2801:79:55"},"nativeSrc":"2801:79:55","nodeType":"YulExpressionStatement","src":"2801:79:55"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"2778:6:55","nodeType":"YulIdentifier","src":"2778:6:55"},{"kind":"number","nativeSrc":"2786:4:55","nodeType":"YulLiteral","src":"2786:4:55","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"2774:3:55","nodeType":"YulIdentifier","src":"2774:3:55"},"nativeSrc":"2774:17:55","nodeType":"YulFunctionCall","src":"2774:17:55"},{"name":"end","nativeSrc":"2793:3:55","nodeType":"YulIdentifier","src":"2793:3:55"}],"functionName":{"name":"slt","nativeSrc":"2770:3:55","nodeType":"YulIdentifier","src":"2770:3:55"},"nativeSrc":"2770:27:55","nodeType":"YulFunctionCall","src":"2770:27:55"}],"functionName":{"name":"iszero","nativeSrc":"2763:6:55","nodeType":"YulIdentifier","src":"2763:6:55"},"nativeSrc":"2763:35:55","nodeType":"YulFunctionCall","src":"2763:35:55"},"nativeSrc":"2760:122:55","nodeType":"YulIf","src":"2760:122:55"},{"nativeSrc":"2891:30:55","nodeType":"YulAssignment","src":"2891:30:55","value":{"arguments":[{"name":"offset","nativeSrc":"2914:6:55","nodeType":"YulIdentifier","src":"2914:6:55"}],"functionName":{"name":"calldataload","nativeSrc":"2901:12:55","nodeType":"YulIdentifier","src":"2901:12:55"},"nativeSrc":"2901:20:55","nodeType":"YulFunctionCall","src":"2901:20:55"},"variableNames":[{"name":"length","nativeSrc":"2891:6:55","nodeType":"YulIdentifier","src":"2891:6:55"}]},{"body":{"nativeSrc":"2964:83:55","nodeType":"YulBlock","src":"2964:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nativeSrc":"2966:77:55","nodeType":"YulIdentifier","src":"2966:77:55"},"nativeSrc":"2966:79:55","nodeType":"YulFunctionCall","src":"2966:79:55"},"nativeSrc":"2966:79:55","nodeType":"YulExpressionStatement","src":"2966:79:55"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"2936:6:55","nodeType":"YulIdentifier","src":"2936:6:55"},{"kind":"number","nativeSrc":"2944:18:55","nodeType":"YulLiteral","src":"2944:18:55","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"2933:2:55","nodeType":"YulIdentifier","src":"2933:2:55"},"nativeSrc":"2933:30:55","nodeType":"YulFunctionCall","src":"2933:30:55"},"nativeSrc":"2930:117:55","nodeType":"YulIf","src":"2930:117:55"},{"nativeSrc":"3056:29:55","nodeType":"YulAssignment","src":"3056:29:55","value":{"arguments":[{"name":"offset","nativeSrc":"3072:6:55","nodeType":"YulIdentifier","src":"3072:6:55"},{"kind":"number","nativeSrc":"3080:4:55","nodeType":"YulLiteral","src":"3080:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3068:3:55","nodeType":"YulIdentifier","src":"3068:3:55"},"nativeSrc":"3068:17:55","nodeType":"YulFunctionCall","src":"3068:17:55"},"variableNames":[{"name":"arrayPos","nativeSrc":"3056:8:55","nodeType":"YulIdentifier","src":"3056:8:55"}]},{"body":{"nativeSrc":"3139:83:55","nodeType":"YulBlock","src":"3139:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nativeSrc":"3141:77:55","nodeType":"YulIdentifier","src":"3141:77:55"},"nativeSrc":"3141:79:55","nodeType":"YulFunctionCall","src":"3141:79:55"},"nativeSrc":"3141:79:55","nodeType":"YulExpressionStatement","src":"3141:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"arrayPos","nativeSrc":"3104:8:55","nodeType":"YulIdentifier","src":"3104:8:55"},{"arguments":[{"name":"length","nativeSrc":"3118:6:55","nodeType":"YulIdentifier","src":"3118:6:55"},{"kind":"number","nativeSrc":"3126:4:55","nodeType":"YulLiteral","src":"3126:4:55","type":"","value":"0x01"}],"functionName":{"name":"mul","nativeSrc":"3114:3:55","nodeType":"YulIdentifier","src":"3114:3:55"},"nativeSrc":"3114:17:55","nodeType":"YulFunctionCall","src":"3114:17:55"}],"functionName":{"name":"add","nativeSrc":"3100:3:55","nodeType":"YulIdentifier","src":"3100:3:55"},"nativeSrc":"3100:32:55","nodeType":"YulFunctionCall","src":"3100:32:55"},{"name":"end","nativeSrc":"3134:3:55","nodeType":"YulIdentifier","src":"3134:3:55"}],"functionName":{"name":"gt","nativeSrc":"3097:2:55","nodeType":"YulIdentifier","src":"3097:2:55"},"nativeSrc":"3097:41:55","nodeType":"YulFunctionCall","src":"3097:41:55"},"nativeSrc":"3094:128:55","nodeType":"YulIf","src":"3094:128:55"}]},"name":"abi_decode_t_bytes_calldata_ptr","nativeSrc":"2676:552:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"2717:6:55","nodeType":"YulTypedName","src":"2717:6:55","type":""},{"name":"end","nativeSrc":"2725:3:55","nodeType":"YulTypedName","src":"2725:3:55","type":""}],"returnVariables":[{"name":"arrayPos","nativeSrc":"2733:8:55","nodeType":"YulTypedName","src":"2733:8:55","type":""},{"name":"length","nativeSrc":"2743:6:55","nodeType":"YulTypedName","src":"2743:6:55","type":""}],"src":"2676:552:55"},{"body":{"nativeSrc":"3336:570:55","nodeType":"YulBlock","src":"3336:570:55","statements":[{"body":{"nativeSrc":"3382:83:55","nodeType":"YulBlock","src":"3382:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"3384:77:55","nodeType":"YulIdentifier","src":"3384:77:55"},"nativeSrc":"3384:79:55","nodeType":"YulFunctionCall","src":"3384:79:55"},"nativeSrc":"3384:79:55","nodeType":"YulExpressionStatement","src":"3384:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3357:7:55","nodeType":"YulIdentifier","src":"3357:7:55"},{"name":"headStart","nativeSrc":"3366:9:55","nodeType":"YulIdentifier","src":"3366:9:55"}],"functionName":{"name":"sub","nativeSrc":"3353:3:55","nodeType":"YulIdentifier","src":"3353:3:55"},"nativeSrc":"3353:23:55","nodeType":"YulFunctionCall","src":"3353:23:55"},{"kind":"number","nativeSrc":"3378:2:55","nodeType":"YulLiteral","src":"3378:2:55","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"3349:3:55","nodeType":"YulIdentifier","src":"3349:3:55"},"nativeSrc":"3349:32:55","nodeType":"YulFunctionCall","src":"3349:32:55"},"nativeSrc":"3346:119:55","nodeType":"YulIf","src":"3346:119:55"},{"nativeSrc":"3475:117:55","nodeType":"YulBlock","src":"3475:117:55","statements":[{"nativeSrc":"3490:15:55","nodeType":"YulVariableDeclaration","src":"3490:15:55","value":{"kind":"number","nativeSrc":"3504:1:55","nodeType":"YulLiteral","src":"3504:1:55","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"3494:6:55","nodeType":"YulTypedName","src":"3494:6:55","type":""}]},{"nativeSrc":"3519:63:55","nodeType":"YulAssignment","src":"3519:63:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3554:9:55","nodeType":"YulIdentifier","src":"3554:9:55"},{"name":"offset","nativeSrc":"3565:6:55","nodeType":"YulIdentifier","src":"3565:6:55"}],"functionName":{"name":"add","nativeSrc":"3550:3:55","nodeType":"YulIdentifier","src":"3550:3:55"},"nativeSrc":"3550:22:55","nodeType":"YulFunctionCall","src":"3550:22:55"},{"name":"dataEnd","nativeSrc":"3574:7:55","nodeType":"YulIdentifier","src":"3574:7:55"}],"functionName":{"name":"abi_decode_t_address","nativeSrc":"3529:20:55","nodeType":"YulIdentifier","src":"3529:20:55"},"nativeSrc":"3529:53:55","nodeType":"YulFunctionCall","src":"3529:53:55"},"variableNames":[{"name":"value0","nativeSrc":"3519:6:55","nodeType":"YulIdentifier","src":"3519:6:55"}]}]},{"nativeSrc":"3602:297:55","nodeType":"YulBlock","src":"3602:297:55","statements":[{"nativeSrc":"3617:46:55","nodeType":"YulVariableDeclaration","src":"3617:46:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3648:9:55","nodeType":"YulIdentifier","src":"3648:9:55"},{"kind":"number","nativeSrc":"3659:2:55","nodeType":"YulLiteral","src":"3659:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3644:3:55","nodeType":"YulIdentifier","src":"3644:3:55"},"nativeSrc":"3644:18:55","nodeType":"YulFunctionCall","src":"3644:18:55"}],"functionName":{"name":"calldataload","nativeSrc":"3631:12:55","nodeType":"YulIdentifier","src":"3631:12:55"},"nativeSrc":"3631:32:55","nodeType":"YulFunctionCall","src":"3631:32:55"},"variables":[{"name":"offset","nativeSrc":"3621:6:55","nodeType":"YulTypedName","src":"3621:6:55","type":""}]},{"body":{"nativeSrc":"3710:83:55","nodeType":"YulBlock","src":"3710:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"3712:77:55","nodeType":"YulIdentifier","src":"3712:77:55"},"nativeSrc":"3712:79:55","nodeType":"YulFunctionCall","src":"3712:79:55"},"nativeSrc":"3712:79:55","nodeType":"YulExpressionStatement","src":"3712:79:55"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"3682:6:55","nodeType":"YulIdentifier","src":"3682:6:55"},{"kind":"number","nativeSrc":"3690:18:55","nodeType":"YulLiteral","src":"3690:18:55","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3679:2:55","nodeType":"YulIdentifier","src":"3679:2:55"},"nativeSrc":"3679:30:55","nodeType":"YulFunctionCall","src":"3679:30:55"},"nativeSrc":"3676:117:55","nodeType":"YulIf","src":"3676:117:55"},{"nativeSrc":"3807:82:55","nodeType":"YulAssignment","src":"3807:82:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3861:9:55","nodeType":"YulIdentifier","src":"3861:9:55"},{"name":"offset","nativeSrc":"3872:6:55","nodeType":"YulIdentifier","src":"3872:6:55"}],"functionName":{"name":"add","nativeSrc":"3857:3:55","nodeType":"YulIdentifier","src":"3857:3:55"},"nativeSrc":"3857:22:55","nodeType":"YulFunctionCall","src":"3857:22:55"},{"name":"dataEnd","nativeSrc":"3881:7:55","nodeType":"YulIdentifier","src":"3881:7:55"}],"functionName":{"name":"abi_decode_t_bytes_calldata_ptr","nativeSrc":"3825:31:55","nodeType":"YulIdentifier","src":"3825:31:55"},"nativeSrc":"3825:64:55","nodeType":"YulFunctionCall","src":"3825:64:55"},"variableNames":[{"name":"value1","nativeSrc":"3807:6:55","nodeType":"YulIdentifier","src":"3807:6:55"},{"name":"value2","nativeSrc":"3815:6:55","nodeType":"YulIdentifier","src":"3815:6:55"}]}]}]},"name":"abi_decode_tuple_t_addresst_bytes_calldata_ptr","nativeSrc":"3234:672:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3290:9:55","nodeType":"YulTypedName","src":"3290:9:55","type":""},{"name":"dataEnd","nativeSrc":"3301:7:55","nodeType":"YulTypedName","src":"3301:7:55","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3313:6:55","nodeType":"YulTypedName","src":"3313:6:55","type":""},{"name":"value1","nativeSrc":"3321:6:55","nodeType":"YulTypedName","src":"3321:6:55","type":""},{"name":"value2","nativeSrc":"3329:6:55","nodeType":"YulTypedName","src":"3329:6:55","type":""}],"src":"3234:672:55"},{"body":{"nativeSrc":"3977:53:55","nodeType":"YulBlock","src":"3977:53:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"3994:3:55","nodeType":"YulIdentifier","src":"3994:3:55"},{"arguments":[{"name":"value","nativeSrc":"4017:5:55","nodeType":"YulIdentifier","src":"4017:5:55"}],"functionName":{"name":"cleanup_t_address","nativeSrc":"3999:17:55","nodeType":"YulIdentifier","src":"3999:17:55"},"nativeSrc":"3999:24:55","nodeType":"YulFunctionCall","src":"3999:24:55"}],"functionName":{"name":"mstore","nativeSrc":"3987:6:55","nodeType":"YulIdentifier","src":"3987:6:55"},"nativeSrc":"3987:37:55","nodeType":"YulFunctionCall","src":"3987:37:55"},"nativeSrc":"3987:37:55","nodeType":"YulExpressionStatement","src":"3987:37:55"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"3912:118:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"3965:5:55","nodeType":"YulTypedName","src":"3965:5:55","type":""},{"name":"pos","nativeSrc":"3972:3:55","nodeType":"YulTypedName","src":"3972:3:55","type":""}],"src":"3912:118:55"},{"body":{"nativeSrc":"4134:124:55","nodeType":"YulBlock","src":"4134:124:55","statements":[{"nativeSrc":"4144:26:55","nodeType":"YulAssignment","src":"4144:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"4156:9:55","nodeType":"YulIdentifier","src":"4156:9:55"},{"kind":"number","nativeSrc":"4167:2:55","nodeType":"YulLiteral","src":"4167:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4152:3:55","nodeType":"YulIdentifier","src":"4152:3:55"},"nativeSrc":"4152:18:55","nodeType":"YulFunctionCall","src":"4152:18:55"},"variableNames":[{"name":"tail","nativeSrc":"4144:4:55","nodeType":"YulIdentifier","src":"4144:4:55"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"4224:6:55","nodeType":"YulIdentifier","src":"4224:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"4237:9:55","nodeType":"YulIdentifier","src":"4237:9:55"},{"kind":"number","nativeSrc":"4248:1:55","nodeType":"YulLiteral","src":"4248:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"4233:3:55","nodeType":"YulIdentifier","src":"4233:3:55"},"nativeSrc":"4233:17:55","nodeType":"YulFunctionCall","src":"4233:17:55"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"4180:43:55","nodeType":"YulIdentifier","src":"4180:43:55"},"nativeSrc":"4180:71:55","nodeType":"YulFunctionCall","src":"4180:71:55"},"nativeSrc":"4180:71:55","nodeType":"YulExpressionStatement","src":"4180:71:55"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"4036:222:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4106:9:55","nodeType":"YulTypedName","src":"4106:9:55","type":""},{"name":"value0","nativeSrc":"4118:6:55","nodeType":"YulTypedName","src":"4118:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4129:4:55","nodeType":"YulTypedName","src":"4129:4:55","type":""}],"src":"4036:222:55"},{"body":{"nativeSrc":"4308:105:55","nodeType":"YulBlock","src":"4308:105:55","statements":[{"nativeSrc":"4318:89:55","nodeType":"YulAssignment","src":"4318:89:55","value":{"arguments":[{"name":"value","nativeSrc":"4333:5:55","nodeType":"YulIdentifier","src":"4333:5:55"},{"kind":"number","nativeSrc":"4340:66:55","nodeType":"YulLiteral","src":"4340:66:55","type":"","value":"0xff00000000000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nativeSrc":"4329:3:55","nodeType":"YulIdentifier","src":"4329:3:55"},"nativeSrc":"4329:78:55","nodeType":"YulFunctionCall","src":"4329:78:55"},"variableNames":[{"name":"cleaned","nativeSrc":"4318:7:55","nodeType":"YulIdentifier","src":"4318:7:55"}]}]},"name":"cleanup_t_bytes1","nativeSrc":"4264:149:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"4290:5:55","nodeType":"YulTypedName","src":"4290:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"4300:7:55","nodeType":"YulTypedName","src":"4300:7:55","type":""}],"src":"4264:149:55"},{"body":{"nativeSrc":"4482:52:55","nodeType":"YulBlock","src":"4482:52:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"4499:3:55","nodeType":"YulIdentifier","src":"4499:3:55"},{"arguments":[{"name":"value","nativeSrc":"4521:5:55","nodeType":"YulIdentifier","src":"4521:5:55"}],"functionName":{"name":"cleanup_t_bytes1","nativeSrc":"4504:16:55","nodeType":"YulIdentifier","src":"4504:16:55"},"nativeSrc":"4504:23:55","nodeType":"YulFunctionCall","src":"4504:23:55"}],"functionName":{"name":"mstore","nativeSrc":"4492:6:55","nodeType":"YulIdentifier","src":"4492:6:55"},"nativeSrc":"4492:36:55","nodeType":"YulFunctionCall","src":"4492:36:55"},"nativeSrc":"4492:36:55","nodeType":"YulExpressionStatement","src":"4492:36:55"}]},"name":"abi_encode_t_bytes1_to_t_bytes1_fromStack","nativeSrc":"4419:115:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"4470:5:55","nodeType":"YulTypedName","src":"4470:5:55","type":""},{"name":"pos","nativeSrc":"4477:3:55","nodeType":"YulTypedName","src":"4477:3:55","type":""}],"src":"4419:115:55"},{"body":{"nativeSrc":"4599:40:55","nodeType":"YulBlock","src":"4599:40:55","statements":[{"nativeSrc":"4610:22:55","nodeType":"YulAssignment","src":"4610:22:55","value":{"arguments":[{"name":"value","nativeSrc":"4626:5:55","nodeType":"YulIdentifier","src":"4626:5:55"}],"functionName":{"name":"mload","nativeSrc":"4620:5:55","nodeType":"YulIdentifier","src":"4620:5:55"},"nativeSrc":"4620:12:55","nodeType":"YulFunctionCall","src":"4620:12:55"},"variableNames":[{"name":"length","nativeSrc":"4610:6:55","nodeType":"YulIdentifier","src":"4610:6:55"}]}]},"name":"array_length_t_string_memory_ptr","nativeSrc":"4540:99:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"4582:5:55","nodeType":"YulTypedName","src":"4582:5:55","type":""}],"returnVariables":[{"name":"length","nativeSrc":"4592:6:55","nodeType":"YulTypedName","src":"4592:6:55","type":""}],"src":"4540:99:55"},{"body":{"nativeSrc":"4741:73:55","nodeType":"YulBlock","src":"4741:73:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"4758:3:55","nodeType":"YulIdentifier","src":"4758:3:55"},{"name":"length","nativeSrc":"4763:6:55","nodeType":"YulIdentifier","src":"4763:6:55"}],"functionName":{"name":"mstore","nativeSrc":"4751:6:55","nodeType":"YulIdentifier","src":"4751:6:55"},"nativeSrc":"4751:19:55","nodeType":"YulFunctionCall","src":"4751:19:55"},"nativeSrc":"4751:19:55","nodeType":"YulExpressionStatement","src":"4751:19:55"},{"nativeSrc":"4779:29:55","nodeType":"YulAssignment","src":"4779:29:55","value":{"arguments":[{"name":"pos","nativeSrc":"4798:3:55","nodeType":"YulIdentifier","src":"4798:3:55"},{"kind":"number","nativeSrc":"4803:4:55","nodeType":"YulLiteral","src":"4803:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4794:3:55","nodeType":"YulIdentifier","src":"4794:3:55"},"nativeSrc":"4794:14:55","nodeType":"YulFunctionCall","src":"4794:14:55"},"variableNames":[{"name":"updated_pos","nativeSrc":"4779:11:55","nodeType":"YulIdentifier","src":"4779:11:55"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"4645:169:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"4713:3:55","nodeType":"YulTypedName","src":"4713:3:55","type":""},{"name":"length","nativeSrc":"4718:6:55","nodeType":"YulTypedName","src":"4718:6:55","type":""}],"returnVariables":[{"name":"updated_pos","nativeSrc":"4729:11:55","nodeType":"YulTypedName","src":"4729:11:55","type":""}],"src":"4645:169:55"},{"body":{"nativeSrc":"4882:77:55","nodeType":"YulBlock","src":"4882:77:55","statements":[{"expression":{"arguments":[{"name":"dst","nativeSrc":"4899:3:55","nodeType":"YulIdentifier","src":"4899:3:55"},{"name":"src","nativeSrc":"4904:3:55","nodeType":"YulIdentifier","src":"4904:3:55"},{"name":"length","nativeSrc":"4909:6:55","nodeType":"YulIdentifier","src":"4909:6:55"}],"functionName":{"name":"mcopy","nativeSrc":"4893:5:55","nodeType":"YulIdentifier","src":"4893:5:55"},"nativeSrc":"4893:23:55","nodeType":"YulFunctionCall","src":"4893:23:55"},"nativeSrc":"4893:23:55","nodeType":"YulExpressionStatement","src":"4893:23:55"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"4936:3:55","nodeType":"YulIdentifier","src":"4936:3:55"},{"name":"length","nativeSrc":"4941:6:55","nodeType":"YulIdentifier","src":"4941:6:55"}],"functionName":{"name":"add","nativeSrc":"4932:3:55","nodeType":"YulIdentifier","src":"4932:3:55"},"nativeSrc":"4932:16:55","nodeType":"YulFunctionCall","src":"4932:16:55"},{"kind":"number","nativeSrc":"4950:1:55","nodeType":"YulLiteral","src":"4950:1:55","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"4925:6:55","nodeType":"YulIdentifier","src":"4925:6:55"},"nativeSrc":"4925:27:55","nodeType":"YulFunctionCall","src":"4925:27:55"},"nativeSrc":"4925:27:55","nodeType":"YulExpressionStatement","src":"4925:27:55"}]},"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"4820:139:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nativeSrc":"4864:3:55","nodeType":"YulTypedName","src":"4864:3:55","type":""},{"name":"dst","nativeSrc":"4869:3:55","nodeType":"YulTypedName","src":"4869:3:55","type":""},{"name":"length","nativeSrc":"4874:6:55","nodeType":"YulTypedName","src":"4874:6:55","type":""}],"src":"4820:139:55"},{"body":{"nativeSrc":"5013:54:55","nodeType":"YulBlock","src":"5013:54:55","statements":[{"nativeSrc":"5023:38:55","nodeType":"YulAssignment","src":"5023:38:55","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"5041:5:55","nodeType":"YulIdentifier","src":"5041:5:55"},{"kind":"number","nativeSrc":"5048:2:55","nodeType":"YulLiteral","src":"5048:2:55","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"5037:3:55","nodeType":"YulIdentifier","src":"5037:3:55"},"nativeSrc":"5037:14:55","nodeType":"YulFunctionCall","src":"5037:14:55"},{"arguments":[{"kind":"number","nativeSrc":"5057:2:55","nodeType":"YulLiteral","src":"5057:2:55","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"5053:3:55","nodeType":"YulIdentifier","src":"5053:3:55"},"nativeSrc":"5053:7:55","nodeType":"YulFunctionCall","src":"5053:7:55"}],"functionName":{"name":"and","nativeSrc":"5033:3:55","nodeType":"YulIdentifier","src":"5033:3:55"},"nativeSrc":"5033:28:55","nodeType":"YulFunctionCall","src":"5033:28:55"},"variableNames":[{"name":"result","nativeSrc":"5023:6:55","nodeType":"YulIdentifier","src":"5023:6:55"}]}]},"name":"round_up_to_mul_of_32","nativeSrc":"4965:102:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"4996:5:55","nodeType":"YulTypedName","src":"4996:5:55","type":""}],"returnVariables":[{"name":"result","nativeSrc":"5006:6:55","nodeType":"YulTypedName","src":"5006:6:55","type":""}],"src":"4965:102:55"},{"body":{"nativeSrc":"5165:285:55","nodeType":"YulBlock","src":"5165:285:55","statements":[{"nativeSrc":"5175:53:55","nodeType":"YulVariableDeclaration","src":"5175:53:55","value":{"arguments":[{"name":"value","nativeSrc":"5222:5:55","nodeType":"YulIdentifier","src":"5222:5:55"}],"functionName":{"name":"array_length_t_string_memory_ptr","nativeSrc":"5189:32:55","nodeType":"YulIdentifier","src":"5189:32:55"},"nativeSrc":"5189:39:55","nodeType":"YulFunctionCall","src":"5189:39:55"},"variables":[{"name":"length","nativeSrc":"5179:6:55","nodeType":"YulTypedName","src":"5179:6:55","type":""}]},{"nativeSrc":"5237:78:55","nodeType":"YulAssignment","src":"5237:78:55","value":{"arguments":[{"name":"pos","nativeSrc":"5303:3:55","nodeType":"YulIdentifier","src":"5303:3:55"},{"name":"length","nativeSrc":"5308:6:55","nodeType":"YulIdentifier","src":"5308:6:55"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"5244:58:55","nodeType":"YulIdentifier","src":"5244:58:55"},"nativeSrc":"5244:71:55","nodeType":"YulFunctionCall","src":"5244:71:55"},"variableNames":[{"name":"pos","nativeSrc":"5237:3:55","nodeType":"YulIdentifier","src":"5237:3:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"5363:5:55","nodeType":"YulIdentifier","src":"5363:5:55"},{"kind":"number","nativeSrc":"5370:4:55","nodeType":"YulLiteral","src":"5370:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5359:3:55","nodeType":"YulIdentifier","src":"5359:3:55"},"nativeSrc":"5359:16:55","nodeType":"YulFunctionCall","src":"5359:16:55"},{"name":"pos","nativeSrc":"5377:3:55","nodeType":"YulIdentifier","src":"5377:3:55"},{"name":"length","nativeSrc":"5382:6:55","nodeType":"YulIdentifier","src":"5382:6:55"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"5324:34:55","nodeType":"YulIdentifier","src":"5324:34:55"},"nativeSrc":"5324:65:55","nodeType":"YulFunctionCall","src":"5324:65:55"},"nativeSrc":"5324:65:55","nodeType":"YulExpressionStatement","src":"5324:65:55"},{"nativeSrc":"5398:46:55","nodeType":"YulAssignment","src":"5398:46:55","value":{"arguments":[{"name":"pos","nativeSrc":"5409:3:55","nodeType":"YulIdentifier","src":"5409:3:55"},{"arguments":[{"name":"length","nativeSrc":"5436:6:55","nodeType":"YulIdentifier","src":"5436:6:55"}],"functionName":{"name":"round_up_to_mul_of_32","nativeSrc":"5414:21:55","nodeType":"YulIdentifier","src":"5414:21:55"},"nativeSrc":"5414:29:55","nodeType":"YulFunctionCall","src":"5414:29:55"}],"functionName":{"name":"add","nativeSrc":"5405:3:55","nodeType":"YulIdentifier","src":"5405:3:55"},"nativeSrc":"5405:39:55","nodeType":"YulFunctionCall","src":"5405:39:55"},"variableNames":[{"name":"end","nativeSrc":"5398:3:55","nodeType":"YulIdentifier","src":"5398:3:55"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nativeSrc":"5073:377:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"5146:5:55","nodeType":"YulTypedName","src":"5146:5:55","type":""},{"name":"pos","nativeSrc":"5153:3:55","nodeType":"YulTypedName","src":"5153:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"5161:3:55","nodeType":"YulTypedName","src":"5161:3:55","type":""}],"src":"5073:377:55"},{"body":{"nativeSrc":"5501:32:55","nodeType":"YulBlock","src":"5501:32:55","statements":[{"nativeSrc":"5511:16:55","nodeType":"YulAssignment","src":"5511:16:55","value":{"name":"value","nativeSrc":"5522:5:55","nodeType":"YulIdentifier","src":"5522:5:55"},"variableNames":[{"name":"cleaned","nativeSrc":"5511:7:55","nodeType":"YulIdentifier","src":"5511:7:55"}]}]},"name":"cleanup_t_uint256","nativeSrc":"5456:77:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"5483:5:55","nodeType":"YulTypedName","src":"5483:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"5493:7:55","nodeType":"YulTypedName","src":"5493:7:55","type":""}],"src":"5456:77:55"},{"body":{"nativeSrc":"5604:53:55","nodeType":"YulBlock","src":"5604:53:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"5621:3:55","nodeType":"YulIdentifier","src":"5621:3:55"},{"arguments":[{"name":"value","nativeSrc":"5644:5:55","nodeType":"YulIdentifier","src":"5644:5:55"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"5626:17:55","nodeType":"YulIdentifier","src":"5626:17:55"},"nativeSrc":"5626:24:55","nodeType":"YulFunctionCall","src":"5626:24:55"}],"functionName":{"name":"mstore","nativeSrc":"5614:6:55","nodeType":"YulIdentifier","src":"5614:6:55"},"nativeSrc":"5614:37:55","nodeType":"YulFunctionCall","src":"5614:37:55"},"nativeSrc":"5614:37:55","nodeType":"YulExpressionStatement","src":"5614:37:55"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"5539:118:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"5592:5:55","nodeType":"YulTypedName","src":"5592:5:55","type":""},{"name":"pos","nativeSrc":"5599:3:55","nodeType":"YulTypedName","src":"5599:3:55","type":""}],"src":"5539:118:55"},{"body":{"nativeSrc":"5728:53:55","nodeType":"YulBlock","src":"5728:53:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"5745:3:55","nodeType":"YulIdentifier","src":"5745:3:55"},{"arguments":[{"name":"value","nativeSrc":"5768:5:55","nodeType":"YulIdentifier","src":"5768:5:55"}],"functionName":{"name":"cleanup_t_bytes32","nativeSrc":"5750:17:55","nodeType":"YulIdentifier","src":"5750:17:55"},"nativeSrc":"5750:24:55","nodeType":"YulFunctionCall","src":"5750:24:55"}],"functionName":{"name":"mstore","nativeSrc":"5738:6:55","nodeType":"YulIdentifier","src":"5738:6:55"},"nativeSrc":"5738:37:55","nodeType":"YulFunctionCall","src":"5738:37:55"},"nativeSrc":"5738:37:55","nodeType":"YulExpressionStatement","src":"5738:37:55"}]},"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nativeSrc":"5663:118:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"5716:5:55","nodeType":"YulTypedName","src":"5716:5:55","type":""},{"name":"pos","nativeSrc":"5723:3:55","nodeType":"YulTypedName","src":"5723:3:55","type":""}],"src":"5663:118:55"},{"body":{"nativeSrc":"5861:40:55","nodeType":"YulBlock","src":"5861:40:55","statements":[{"nativeSrc":"5872:22:55","nodeType":"YulAssignment","src":"5872:22:55","value":{"arguments":[{"name":"value","nativeSrc":"5888:5:55","nodeType":"YulIdentifier","src":"5888:5:55"}],"functionName":{"name":"mload","nativeSrc":"5882:5:55","nodeType":"YulIdentifier","src":"5882:5:55"},"nativeSrc":"5882:12:55","nodeType":"YulFunctionCall","src":"5882:12:55"},"variableNames":[{"name":"length","nativeSrc":"5872:6:55","nodeType":"YulIdentifier","src":"5872:6:55"}]}]},"name":"array_length_t_array$_t_uint256_$dyn_memory_ptr","nativeSrc":"5787:114:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"5844:5:55","nodeType":"YulTypedName","src":"5844:5:55","type":""}],"returnVariables":[{"name":"length","nativeSrc":"5854:6:55","nodeType":"YulTypedName","src":"5854:6:55","type":""}],"src":"5787:114:55"},{"body":{"nativeSrc":"6018:73:55","nodeType":"YulBlock","src":"6018:73:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"6035:3:55","nodeType":"YulIdentifier","src":"6035:3:55"},{"name":"length","nativeSrc":"6040:6:55","nodeType":"YulIdentifier","src":"6040:6:55"}],"functionName":{"name":"mstore","nativeSrc":"6028:6:55","nodeType":"YulIdentifier","src":"6028:6:55"},"nativeSrc":"6028:19:55","nodeType":"YulFunctionCall","src":"6028:19:55"},"nativeSrc":"6028:19:55","nodeType":"YulExpressionStatement","src":"6028:19:55"},{"nativeSrc":"6056:29:55","nodeType":"YulAssignment","src":"6056:29:55","value":{"arguments":[{"name":"pos","nativeSrc":"6075:3:55","nodeType":"YulIdentifier","src":"6075:3:55"},{"kind":"number","nativeSrc":"6080:4:55","nodeType":"YulLiteral","src":"6080:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"6071:3:55","nodeType":"YulIdentifier","src":"6071:3:55"},"nativeSrc":"6071:14:55","nodeType":"YulFunctionCall","src":"6071:14:55"},"variableNames":[{"name":"updated_pos","nativeSrc":"6056:11:55","nodeType":"YulIdentifier","src":"6056:11:55"}]}]},"name":"array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack","nativeSrc":"5907:184:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"5990:3:55","nodeType":"YulTypedName","src":"5990:3:55","type":""},{"name":"length","nativeSrc":"5995:6:55","nodeType":"YulTypedName","src":"5995:6:55","type":""}],"returnVariables":[{"name":"updated_pos","nativeSrc":"6006:11:55","nodeType":"YulTypedName","src":"6006:11:55","type":""}],"src":"5907:184:55"},{"body":{"nativeSrc":"6169:60:55","nodeType":"YulBlock","src":"6169:60:55","statements":[{"nativeSrc":"6179:11:55","nodeType":"YulAssignment","src":"6179:11:55","value":{"name":"ptr","nativeSrc":"6187:3:55","nodeType":"YulIdentifier","src":"6187:3:55"},"variableNames":[{"name":"data","nativeSrc":"6179:4:55","nodeType":"YulIdentifier","src":"6179:4:55"}]},{"nativeSrc":"6200:22:55","nodeType":"YulAssignment","src":"6200:22:55","value":{"arguments":[{"name":"ptr","nativeSrc":"6212:3:55","nodeType":"YulIdentifier","src":"6212:3:55"},{"kind":"number","nativeSrc":"6217:4:55","nodeType":"YulLiteral","src":"6217:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"6208:3:55","nodeType":"YulIdentifier","src":"6208:3:55"},"nativeSrc":"6208:14:55","nodeType":"YulFunctionCall","src":"6208:14:55"},"variableNames":[{"name":"data","nativeSrc":"6200:4:55","nodeType":"YulIdentifier","src":"6200:4:55"}]}]},"name":"array_dataslot_t_array$_t_uint256_$dyn_memory_ptr","nativeSrc":"6097:132:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"6156:3:55","nodeType":"YulTypedName","src":"6156:3:55","type":""}],"returnVariables":[{"name":"data","nativeSrc":"6164:4:55","nodeType":"YulTypedName","src":"6164:4:55","type":""}],"src":"6097:132:55"},{"body":{"nativeSrc":"6290:53:55","nodeType":"YulBlock","src":"6290:53:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"6307:3:55","nodeType":"YulIdentifier","src":"6307:3:55"},{"arguments":[{"name":"value","nativeSrc":"6330:5:55","nodeType":"YulIdentifier","src":"6330:5:55"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"6312:17:55","nodeType":"YulIdentifier","src":"6312:17:55"},"nativeSrc":"6312:24:55","nodeType":"YulFunctionCall","src":"6312:24:55"}],"functionName":{"name":"mstore","nativeSrc":"6300:6:55","nodeType":"YulIdentifier","src":"6300:6:55"},"nativeSrc":"6300:37:55","nodeType":"YulFunctionCall","src":"6300:37:55"},"nativeSrc":"6300:37:55","nodeType":"YulExpressionStatement","src":"6300:37:55"}]},"name":"abi_encode_t_uint256_to_t_uint256","nativeSrc":"6235:108:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"6278:5:55","nodeType":"YulTypedName","src":"6278:5:55","type":""},{"name":"pos","nativeSrc":"6285:3:55","nodeType":"YulTypedName","src":"6285:3:55","type":""}],"src":"6235:108:55"},{"body":{"nativeSrc":"6429:99:55","nodeType":"YulBlock","src":"6429:99:55","statements":[{"expression":{"arguments":[{"name":"value0","nativeSrc":"6473:6:55","nodeType":"YulIdentifier","src":"6473:6:55"},{"name":"pos","nativeSrc":"6481:3:55","nodeType":"YulIdentifier","src":"6481:3:55"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nativeSrc":"6439:33:55","nodeType":"YulIdentifier","src":"6439:33:55"},"nativeSrc":"6439:46:55","nodeType":"YulFunctionCall","src":"6439:46:55"},"nativeSrc":"6439:46:55","nodeType":"YulExpressionStatement","src":"6439:46:55"},{"nativeSrc":"6494:28:55","nodeType":"YulAssignment","src":"6494:28:55","value":{"arguments":[{"name":"pos","nativeSrc":"6512:3:55","nodeType":"YulIdentifier","src":"6512:3:55"},{"kind":"number","nativeSrc":"6517:4:55","nodeType":"YulLiteral","src":"6517:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"6508:3:55","nodeType":"YulIdentifier","src":"6508:3:55"},"nativeSrc":"6508:14:55","nodeType":"YulFunctionCall","src":"6508:14:55"},"variableNames":[{"name":"updatedPos","nativeSrc":"6494:10:55","nodeType":"YulIdentifier","src":"6494:10:55"}]}]},"name":"abi_encodeUpdatedPos_t_uint256_to_t_uint256","nativeSrc":"6349:179:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nativeSrc":"6402:6:55","nodeType":"YulTypedName","src":"6402:6:55","type":""},{"name":"pos","nativeSrc":"6410:3:55","nodeType":"YulTypedName","src":"6410:3:55","type":""}],"returnVariables":[{"name":"updatedPos","nativeSrc":"6418:10:55","nodeType":"YulTypedName","src":"6418:10:55","type":""}],"src":"6349:179:55"},{"body":{"nativeSrc":"6609:38:55","nodeType":"YulBlock","src":"6609:38:55","statements":[{"nativeSrc":"6619:22:55","nodeType":"YulAssignment","src":"6619:22:55","value":{"arguments":[{"name":"ptr","nativeSrc":"6631:3:55","nodeType":"YulIdentifier","src":"6631:3:55"},{"kind":"number","nativeSrc":"6636:4:55","nodeType":"YulLiteral","src":"6636:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"6627:3:55","nodeType":"YulIdentifier","src":"6627:3:55"},"nativeSrc":"6627:14:55","nodeType":"YulFunctionCall","src":"6627:14:55"},"variableNames":[{"name":"next","nativeSrc":"6619:4:55","nodeType":"YulIdentifier","src":"6619:4:55"}]}]},"name":"array_nextElement_t_array$_t_uint256_$dyn_memory_ptr","nativeSrc":"6534:113:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"6596:3:55","nodeType":"YulTypedName","src":"6596:3:55","type":""}],"returnVariables":[{"name":"next","nativeSrc":"6604:4:55","nodeType":"YulTypedName","src":"6604:4:55","type":""}],"src":"6534:113:55"},{"body":{"nativeSrc":"6807:608:55","nodeType":"YulBlock","src":"6807:608:55","statements":[{"nativeSrc":"6817:68:55","nodeType":"YulVariableDeclaration","src":"6817:68:55","value":{"arguments":[{"name":"value","nativeSrc":"6879:5:55","nodeType":"YulIdentifier","src":"6879:5:55"}],"functionName":{"name":"array_length_t_array$_t_uint256_$dyn_memory_ptr","nativeSrc":"6831:47:55","nodeType":"YulIdentifier","src":"6831:47:55"},"nativeSrc":"6831:54:55","nodeType":"YulFunctionCall","src":"6831:54:55"},"variables":[{"name":"length","nativeSrc":"6821:6:55","nodeType":"YulTypedName","src":"6821:6:55","type":""}]},{"nativeSrc":"6894:93:55","nodeType":"YulAssignment","src":"6894:93:55","value":{"arguments":[{"name":"pos","nativeSrc":"6975:3:55","nodeType":"YulIdentifier","src":"6975:3:55"},{"name":"length","nativeSrc":"6980:6:55","nodeType":"YulIdentifier","src":"6980:6:55"}],"functionName":{"name":"array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack","nativeSrc":"6901:73:55","nodeType":"YulIdentifier","src":"6901:73:55"},"nativeSrc":"6901:86:55","nodeType":"YulFunctionCall","src":"6901:86:55"},"variableNames":[{"name":"pos","nativeSrc":"6894:3:55","nodeType":"YulIdentifier","src":"6894:3:55"}]},{"nativeSrc":"6996:71:55","nodeType":"YulVariableDeclaration","src":"6996:71:55","value":{"arguments":[{"name":"value","nativeSrc":"7061:5:55","nodeType":"YulIdentifier","src":"7061:5:55"}],"functionName":{"name":"array_dataslot_t_array$_t_uint256_$dyn_memory_ptr","nativeSrc":"7011:49:55","nodeType":"YulIdentifier","src":"7011:49:55"},"nativeSrc":"7011:56:55","nodeType":"YulFunctionCall","src":"7011:56:55"},"variables":[{"name":"baseRef","nativeSrc":"7000:7:55","nodeType":"YulTypedName","src":"7000:7:55","type":""}]},{"nativeSrc":"7076:21:55","nodeType":"YulVariableDeclaration","src":"7076:21:55","value":{"name":"baseRef","nativeSrc":"7090:7:55","nodeType":"YulIdentifier","src":"7090:7:55"},"variables":[{"name":"srcPtr","nativeSrc":"7080:6:55","nodeType":"YulTypedName","src":"7080:6:55","type":""}]},{"body":{"nativeSrc":"7166:224:55","nodeType":"YulBlock","src":"7166:224:55","statements":[{"nativeSrc":"7180:34:55","nodeType":"YulVariableDeclaration","src":"7180:34:55","value":{"arguments":[{"name":"srcPtr","nativeSrc":"7207:6:55","nodeType":"YulIdentifier","src":"7207:6:55"}],"functionName":{"name":"mload","nativeSrc":"7201:5:55","nodeType":"YulIdentifier","src":"7201:5:55"},"nativeSrc":"7201:13:55","nodeType":"YulFunctionCall","src":"7201:13:55"},"variables":[{"name":"elementValue0","nativeSrc":"7184:13:55","nodeType":"YulTypedName","src":"7184:13:55","type":""}]},{"nativeSrc":"7227:70:55","nodeType":"YulAssignment","src":"7227:70:55","value":{"arguments":[{"name":"elementValue0","nativeSrc":"7278:13:55","nodeType":"YulIdentifier","src":"7278:13:55"},{"name":"pos","nativeSrc":"7293:3:55","nodeType":"YulIdentifier","src":"7293:3:55"}],"functionName":{"name":"abi_encodeUpdatedPos_t_uint256_to_t_uint256","nativeSrc":"7234:43:55","nodeType":"YulIdentifier","src":"7234:43:55"},"nativeSrc":"7234:63:55","nodeType":"YulFunctionCall","src":"7234:63:55"},"variableNames":[{"name":"pos","nativeSrc":"7227:3:55","nodeType":"YulIdentifier","src":"7227:3:55"}]},{"nativeSrc":"7310:70:55","nodeType":"YulAssignment","src":"7310:70:55","value":{"arguments":[{"name":"srcPtr","nativeSrc":"7373:6:55","nodeType":"YulIdentifier","src":"7373:6:55"}],"functionName":{"name":"array_nextElement_t_array$_t_uint256_$dyn_memory_ptr","nativeSrc":"7320:52:55","nodeType":"YulIdentifier","src":"7320:52:55"},"nativeSrc":"7320:60:55","nodeType":"YulFunctionCall","src":"7320:60:55"},"variableNames":[{"name":"srcPtr","nativeSrc":"7310:6:55","nodeType":"YulIdentifier","src":"7310:6:55"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"7128:1:55","nodeType":"YulIdentifier","src":"7128:1:55"},{"name":"length","nativeSrc":"7131:6:55","nodeType":"YulIdentifier","src":"7131:6:55"}],"functionName":{"name":"lt","nativeSrc":"7125:2:55","nodeType":"YulIdentifier","src":"7125:2:55"},"nativeSrc":"7125:13:55","nodeType":"YulFunctionCall","src":"7125:13:55"},"nativeSrc":"7106:284:55","nodeType":"YulForLoop","post":{"nativeSrc":"7139:18:55","nodeType":"YulBlock","src":"7139:18:55","statements":[{"nativeSrc":"7141:14:55","nodeType":"YulAssignment","src":"7141:14:55","value":{"arguments":[{"name":"i","nativeSrc":"7150:1:55","nodeType":"YulIdentifier","src":"7150:1:55"},{"kind":"number","nativeSrc":"7153:1:55","nodeType":"YulLiteral","src":"7153:1:55","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"7146:3:55","nodeType":"YulIdentifier","src":"7146:3:55"},"nativeSrc":"7146:9:55","nodeType":"YulFunctionCall","src":"7146:9:55"},"variableNames":[{"name":"i","nativeSrc":"7141:1:55","nodeType":"YulIdentifier","src":"7141:1:55"}]}]},"pre":{"nativeSrc":"7110:14:55","nodeType":"YulBlock","src":"7110:14:55","statements":[{"nativeSrc":"7112:10:55","nodeType":"YulVariableDeclaration","src":"7112:10:55","value":{"kind":"number","nativeSrc":"7121:1:55","nodeType":"YulLiteral","src":"7121:1:55","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"7116:1:55","nodeType":"YulTypedName","src":"7116:1:55","type":""}]}]},"src":"7106:284:55"},{"nativeSrc":"7399:10:55","nodeType":"YulAssignment","src":"7399:10:55","value":{"name":"pos","nativeSrc":"7406:3:55","nodeType":"YulIdentifier","src":"7406:3:55"},"variableNames":[{"name":"end","nativeSrc":"7399:3:55","nodeType":"YulIdentifier","src":"7399:3:55"}]}]},"name":"abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack","nativeSrc":"6683:732:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"6786:5:55","nodeType":"YulTypedName","src":"6786:5:55","type":""},{"name":"pos","nativeSrc":"6793:3:55","nodeType":"YulTypedName","src":"6793:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"6802:3:55","nodeType":"YulTypedName","src":"6802:3:55","type":""}],"src":"6683:732:55"},{"body":{"nativeSrc":"7775:861:55","nodeType":"YulBlock","src":"7775:861:55","statements":[{"nativeSrc":"7785:27:55","nodeType":"YulAssignment","src":"7785:27:55","value":{"arguments":[{"name":"headStart","nativeSrc":"7797:9:55","nodeType":"YulIdentifier","src":"7797:9:55"},{"kind":"number","nativeSrc":"7808:3:55","nodeType":"YulLiteral","src":"7808:3:55","type":"","value":"224"}],"functionName":{"name":"add","nativeSrc":"7793:3:55","nodeType":"YulIdentifier","src":"7793:3:55"},"nativeSrc":"7793:19:55","nodeType":"YulFunctionCall","src":"7793:19:55"},"variableNames":[{"name":"tail","nativeSrc":"7785:4:55","nodeType":"YulIdentifier","src":"7785:4:55"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"7864:6:55","nodeType":"YulIdentifier","src":"7864:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"7877:9:55","nodeType":"YulIdentifier","src":"7877:9:55"},{"kind":"number","nativeSrc":"7888:1:55","nodeType":"YulLiteral","src":"7888:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"7873:3:55","nodeType":"YulIdentifier","src":"7873:3:55"},"nativeSrc":"7873:17:55","nodeType":"YulFunctionCall","src":"7873:17:55"}],"functionName":{"name":"abi_encode_t_bytes1_to_t_bytes1_fromStack","nativeSrc":"7822:41:55","nodeType":"YulIdentifier","src":"7822:41:55"},"nativeSrc":"7822:69:55","nodeType":"YulFunctionCall","src":"7822:69:55"},"nativeSrc":"7822:69:55","nodeType":"YulExpressionStatement","src":"7822:69:55"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7912:9:55","nodeType":"YulIdentifier","src":"7912:9:55"},{"kind":"number","nativeSrc":"7923:2:55","nodeType":"YulLiteral","src":"7923:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7908:3:55","nodeType":"YulIdentifier","src":"7908:3:55"},"nativeSrc":"7908:18:55","nodeType":"YulFunctionCall","src":"7908:18:55"},{"arguments":[{"name":"tail","nativeSrc":"7932:4:55","nodeType":"YulIdentifier","src":"7932:4:55"},{"name":"headStart","nativeSrc":"7938:9:55","nodeType":"YulIdentifier","src":"7938:9:55"}],"functionName":{"name":"sub","nativeSrc":"7928:3:55","nodeType":"YulIdentifier","src":"7928:3:55"},"nativeSrc":"7928:20:55","nodeType":"YulFunctionCall","src":"7928:20:55"}],"functionName":{"name":"mstore","nativeSrc":"7901:6:55","nodeType":"YulIdentifier","src":"7901:6:55"},"nativeSrc":"7901:48:55","nodeType":"YulFunctionCall","src":"7901:48:55"},"nativeSrc":"7901:48:55","nodeType":"YulExpressionStatement","src":"7901:48:55"},{"nativeSrc":"7958:86:55","nodeType":"YulAssignment","src":"7958:86:55","value":{"arguments":[{"name":"value1","nativeSrc":"8030:6:55","nodeType":"YulIdentifier","src":"8030:6:55"},{"name":"tail","nativeSrc":"8039:4:55","nodeType":"YulIdentifier","src":"8039:4:55"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nativeSrc":"7966:63:55","nodeType":"YulIdentifier","src":"7966:63:55"},"nativeSrc":"7966:78:55","nodeType":"YulFunctionCall","src":"7966:78:55"},"variableNames":[{"name":"tail","nativeSrc":"7958:4:55","nodeType":"YulIdentifier","src":"7958:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8065:9:55","nodeType":"YulIdentifier","src":"8065:9:55"},{"kind":"number","nativeSrc":"8076:2:55","nodeType":"YulLiteral","src":"8076:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"8061:3:55","nodeType":"YulIdentifier","src":"8061:3:55"},"nativeSrc":"8061:18:55","nodeType":"YulFunctionCall","src":"8061:18:55"},{"arguments":[{"name":"tail","nativeSrc":"8085:4:55","nodeType":"YulIdentifier","src":"8085:4:55"},{"name":"headStart","nativeSrc":"8091:9:55","nodeType":"YulIdentifier","src":"8091:9:55"}],"functionName":{"name":"sub","nativeSrc":"8081:3:55","nodeType":"YulIdentifier","src":"8081:3:55"},"nativeSrc":"8081:20:55","nodeType":"YulFunctionCall","src":"8081:20:55"}],"functionName":{"name":"mstore","nativeSrc":"8054:6:55","nodeType":"YulIdentifier","src":"8054:6:55"},"nativeSrc":"8054:48:55","nodeType":"YulFunctionCall","src":"8054:48:55"},"nativeSrc":"8054:48:55","nodeType":"YulExpressionStatement","src":"8054:48:55"},{"nativeSrc":"8111:86:55","nodeType":"YulAssignment","src":"8111:86:55","value":{"arguments":[{"name":"value2","nativeSrc":"8183:6:55","nodeType":"YulIdentifier","src":"8183:6:55"},{"name":"tail","nativeSrc":"8192:4:55","nodeType":"YulIdentifier","src":"8192:4:55"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nativeSrc":"8119:63:55","nodeType":"YulIdentifier","src":"8119:63:55"},"nativeSrc":"8119:78:55","nodeType":"YulFunctionCall","src":"8119:78:55"},"variableNames":[{"name":"tail","nativeSrc":"8111:4:55","nodeType":"YulIdentifier","src":"8111:4:55"}]},{"expression":{"arguments":[{"name":"value3","nativeSrc":"8251:6:55","nodeType":"YulIdentifier","src":"8251:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"8264:9:55","nodeType":"YulIdentifier","src":"8264:9:55"},{"kind":"number","nativeSrc":"8275:2:55","nodeType":"YulLiteral","src":"8275:2:55","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"8260:3:55","nodeType":"YulIdentifier","src":"8260:3:55"},"nativeSrc":"8260:18:55","nodeType":"YulFunctionCall","src":"8260:18:55"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"8207:43:55","nodeType":"YulIdentifier","src":"8207:43:55"},"nativeSrc":"8207:72:55","nodeType":"YulFunctionCall","src":"8207:72:55"},"nativeSrc":"8207:72:55","nodeType":"YulExpressionStatement","src":"8207:72:55"},{"expression":{"arguments":[{"name":"value4","nativeSrc":"8333:6:55","nodeType":"YulIdentifier","src":"8333:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"8346:9:55","nodeType":"YulIdentifier","src":"8346:9:55"},{"kind":"number","nativeSrc":"8357:3:55","nodeType":"YulLiteral","src":"8357:3:55","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"8342:3:55","nodeType":"YulIdentifier","src":"8342:3:55"},"nativeSrc":"8342:19:55","nodeType":"YulFunctionCall","src":"8342:19:55"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"8289:43:55","nodeType":"YulIdentifier","src":"8289:43:55"},"nativeSrc":"8289:73:55","nodeType":"YulFunctionCall","src":"8289:73:55"},"nativeSrc":"8289:73:55","nodeType":"YulExpressionStatement","src":"8289:73:55"},{"expression":{"arguments":[{"name":"value5","nativeSrc":"8416:6:55","nodeType":"YulIdentifier","src":"8416:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"8429:9:55","nodeType":"YulIdentifier","src":"8429:9:55"},{"kind":"number","nativeSrc":"8440:3:55","nodeType":"YulLiteral","src":"8440:3:55","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"8425:3:55","nodeType":"YulIdentifier","src":"8425:3:55"},"nativeSrc":"8425:19:55","nodeType":"YulFunctionCall","src":"8425:19:55"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nativeSrc":"8372:43:55","nodeType":"YulIdentifier","src":"8372:43:55"},"nativeSrc":"8372:73:55","nodeType":"YulFunctionCall","src":"8372:73:55"},"nativeSrc":"8372:73:55","nodeType":"YulExpressionStatement","src":"8372:73:55"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8466:9:55","nodeType":"YulIdentifier","src":"8466:9:55"},{"kind":"number","nativeSrc":"8477:3:55","nodeType":"YulLiteral","src":"8477:3:55","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"8462:3:55","nodeType":"YulIdentifier","src":"8462:3:55"},"nativeSrc":"8462:19:55","nodeType":"YulFunctionCall","src":"8462:19:55"},{"arguments":[{"name":"tail","nativeSrc":"8487:4:55","nodeType":"YulIdentifier","src":"8487:4:55"},{"name":"headStart","nativeSrc":"8493:9:55","nodeType":"YulIdentifier","src":"8493:9:55"}],"functionName":{"name":"sub","nativeSrc":"8483:3:55","nodeType":"YulIdentifier","src":"8483:3:55"},"nativeSrc":"8483:20:55","nodeType":"YulFunctionCall","src":"8483:20:55"}],"functionName":{"name":"mstore","nativeSrc":"8455:6:55","nodeType":"YulIdentifier","src":"8455:6:55"},"nativeSrc":"8455:49:55","nodeType":"YulFunctionCall","src":"8455:49:55"},"nativeSrc":"8455:49:55","nodeType":"YulExpressionStatement","src":"8455:49:55"},{"nativeSrc":"8513:116:55","nodeType":"YulAssignment","src":"8513:116:55","value":{"arguments":[{"name":"value6","nativeSrc":"8615:6:55","nodeType":"YulIdentifier","src":"8615:6:55"},{"name":"tail","nativeSrc":"8624:4:55","nodeType":"YulIdentifier","src":"8624:4:55"}],"functionName":{"name":"abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack","nativeSrc":"8521:93:55","nodeType":"YulIdentifier","src":"8521:93:55"},"nativeSrc":"8521:108:55","nodeType":"YulFunctionCall","src":"8521:108:55"},"variableNames":[{"name":"tail","nativeSrc":"8513:4:55","nodeType":"YulIdentifier","src":"8513:4:55"}]}]},"name":"abi_encode_tuple_t_bytes1_t_string_memory_ptr_t_string_memory_ptr_t_uint256_t_address_t_bytes32_t_array$_t_uint256_$dyn_memory_ptr__to_t_bytes1_t_string_memory_ptr_t_string_memory_ptr_t_uint256_t_address_t_bytes32_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed","nativeSrc":"7421:1215:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7699:9:55","nodeType":"YulTypedName","src":"7699:9:55","type":""},{"name":"value6","nativeSrc":"7711:6:55","nodeType":"YulTypedName","src":"7711:6:55","type":""},{"name":"value5","nativeSrc":"7719:6:55","nodeType":"YulTypedName","src":"7719:6:55","type":""},{"name":"value4","nativeSrc":"7727:6:55","nodeType":"YulTypedName","src":"7727:6:55","type":""},{"name":"value3","nativeSrc":"7735:6:55","nodeType":"YulTypedName","src":"7735:6:55","type":""},{"name":"value2","nativeSrc":"7743:6:55","nodeType":"YulTypedName","src":"7743:6:55","type":""},{"name":"value1","nativeSrc":"7751:6:55","nodeType":"YulTypedName","src":"7751:6:55","type":""},{"name":"value0","nativeSrc":"7759:6:55","nodeType":"YulTypedName","src":"7759:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"7770:4:55","nodeType":"YulTypedName","src":"7770:4:55","type":""}],"src":"7421:1215:55"},{"body":{"nativeSrc":"8758:478:55","nodeType":"YulBlock","src":"8758:478:55","statements":[{"body":{"nativeSrc":"8807:83:55","nodeType":"YulBlock","src":"8807:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nativeSrc":"8809:77:55","nodeType":"YulIdentifier","src":"8809:77:55"},"nativeSrc":"8809:79:55","nodeType":"YulFunctionCall","src":"8809:79:55"},"nativeSrc":"8809:79:55","nodeType":"YulExpressionStatement","src":"8809:79:55"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"8786:6:55","nodeType":"YulIdentifier","src":"8786:6:55"},{"kind":"number","nativeSrc":"8794:4:55","nodeType":"YulLiteral","src":"8794:4:55","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"8782:3:55","nodeType":"YulIdentifier","src":"8782:3:55"},"nativeSrc":"8782:17:55","nodeType":"YulFunctionCall","src":"8782:17:55"},{"name":"end","nativeSrc":"8801:3:55","nodeType":"YulIdentifier","src":"8801:3:55"}],"functionName":{"name":"slt","nativeSrc":"8778:3:55","nodeType":"YulIdentifier","src":"8778:3:55"},"nativeSrc":"8778:27:55","nodeType":"YulFunctionCall","src":"8778:27:55"}],"functionName":{"name":"iszero","nativeSrc":"8771:6:55","nodeType":"YulIdentifier","src":"8771:6:55"},"nativeSrc":"8771:35:55","nodeType":"YulFunctionCall","src":"8771:35:55"},"nativeSrc":"8768:122:55","nodeType":"YulIf","src":"8768:122:55"},{"nativeSrc":"8899:30:55","nodeType":"YulAssignment","src":"8899:30:55","value":{"arguments":[{"name":"offset","nativeSrc":"8922:6:55","nodeType":"YulIdentifier","src":"8922:6:55"}],"functionName":{"name":"calldataload","nativeSrc":"8909:12:55","nodeType":"YulIdentifier","src":"8909:12:55"},"nativeSrc":"8909:20:55","nodeType":"YulFunctionCall","src":"8909:20:55"},"variableNames":[{"name":"length","nativeSrc":"8899:6:55","nodeType":"YulIdentifier","src":"8899:6:55"}]},{"body":{"nativeSrc":"8972:83:55","nodeType":"YulBlock","src":"8972:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nativeSrc":"8974:77:55","nodeType":"YulIdentifier","src":"8974:77:55"},"nativeSrc":"8974:79:55","nodeType":"YulFunctionCall","src":"8974:79:55"},"nativeSrc":"8974:79:55","nodeType":"YulExpressionStatement","src":"8974:79:55"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"8944:6:55","nodeType":"YulIdentifier","src":"8944:6:55"},{"kind":"number","nativeSrc":"8952:18:55","nodeType":"YulLiteral","src":"8952:18:55","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"8941:2:55","nodeType":"YulIdentifier","src":"8941:2:55"},"nativeSrc":"8941:30:55","nodeType":"YulFunctionCall","src":"8941:30:55"},"nativeSrc":"8938:117:55","nodeType":"YulIf","src":"8938:117:55"},{"nativeSrc":"9064:29:55","nodeType":"YulAssignment","src":"9064:29:55","value":{"arguments":[{"name":"offset","nativeSrc":"9080:6:55","nodeType":"YulIdentifier","src":"9080:6:55"},{"kind":"number","nativeSrc":"9088:4:55","nodeType":"YulLiteral","src":"9088:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"9076:3:55","nodeType":"YulIdentifier","src":"9076:3:55"},"nativeSrc":"9076:17:55","nodeType":"YulFunctionCall","src":"9076:17:55"},"variableNames":[{"name":"arrayPos","nativeSrc":"9064:8:55","nodeType":"YulIdentifier","src":"9064:8:55"}]},{"body":{"nativeSrc":"9147:83:55","nodeType":"YulBlock","src":"9147:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nativeSrc":"9149:77:55","nodeType":"YulIdentifier","src":"9149:77:55"},"nativeSrc":"9149:79:55","nodeType":"YulFunctionCall","src":"9149:79:55"},"nativeSrc":"9149:79:55","nodeType":"YulExpressionStatement","src":"9149:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"arrayPos","nativeSrc":"9112:8:55","nodeType":"YulIdentifier","src":"9112:8:55"},{"arguments":[{"name":"length","nativeSrc":"9126:6:55","nodeType":"YulIdentifier","src":"9126:6:55"},{"kind":"number","nativeSrc":"9134:4:55","nodeType":"YulLiteral","src":"9134:4:55","type":"","value":"0x20"}],"functionName":{"name":"mul","nativeSrc":"9122:3:55","nodeType":"YulIdentifier","src":"9122:3:55"},"nativeSrc":"9122:17:55","nodeType":"YulFunctionCall","src":"9122:17:55"}],"functionName":{"name":"add","nativeSrc":"9108:3:55","nodeType":"YulIdentifier","src":"9108:3:55"},"nativeSrc":"9108:32:55","nodeType":"YulFunctionCall","src":"9108:32:55"},{"name":"end","nativeSrc":"9142:3:55","nodeType":"YulIdentifier","src":"9142:3:55"}],"functionName":{"name":"gt","nativeSrc":"9105:2:55","nodeType":"YulIdentifier","src":"9105:2:55"},"nativeSrc":"9105:41:55","nodeType":"YulFunctionCall","src":"9105:41:55"},"nativeSrc":"9102:128:55","nodeType":"YulIf","src":"9102:128:55"}]},"name":"abi_decode_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","nativeSrc":"8657:579:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"8725:6:55","nodeType":"YulTypedName","src":"8725:6:55","type":""},{"name":"end","nativeSrc":"8733:3:55","nodeType":"YulTypedName","src":"8733:3:55","type":""}],"returnVariables":[{"name":"arrayPos","nativeSrc":"8741:8:55","nodeType":"YulTypedName","src":"8741:8:55","type":""},{"name":"length","nativeSrc":"8751:6:55","nodeType":"YulTypedName","src":"8751:6:55","type":""}],"src":"8657:579:55"},{"body":{"nativeSrc":"9285:79:55","nodeType":"YulBlock","src":"9285:79:55","statements":[{"body":{"nativeSrc":"9342:16:55","nodeType":"YulBlock","src":"9342:16:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9351:1:55","nodeType":"YulLiteral","src":"9351:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"9354:1:55","nodeType":"YulLiteral","src":"9354:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9344:6:55","nodeType":"YulIdentifier","src":"9344:6:55"},"nativeSrc":"9344:12:55","nodeType":"YulFunctionCall","src":"9344:12:55"},"nativeSrc":"9344:12:55","nodeType":"YulExpressionStatement","src":"9344:12:55"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"9308:5:55","nodeType":"YulIdentifier","src":"9308:5:55"},{"arguments":[{"name":"value","nativeSrc":"9333:5:55","nodeType":"YulIdentifier","src":"9333:5:55"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"9315:17:55","nodeType":"YulIdentifier","src":"9315:17:55"},"nativeSrc":"9315:24:55","nodeType":"YulFunctionCall","src":"9315:24:55"}],"functionName":{"name":"eq","nativeSrc":"9305:2:55","nodeType":"YulIdentifier","src":"9305:2:55"},"nativeSrc":"9305:35:55","nodeType":"YulFunctionCall","src":"9305:35:55"}],"functionName":{"name":"iszero","nativeSrc":"9298:6:55","nodeType":"YulIdentifier","src":"9298:6:55"},"nativeSrc":"9298:43:55","nodeType":"YulFunctionCall","src":"9298:43:55"},"nativeSrc":"9295:63:55","nodeType":"YulIf","src":"9295:63:55"}]},"name":"validator_revert_t_uint256","nativeSrc":"9242:122:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"9278:5:55","nodeType":"YulTypedName","src":"9278:5:55","type":""}],"src":"9242:122:55"},{"body":{"nativeSrc":"9422:87:55","nodeType":"YulBlock","src":"9422:87:55","statements":[{"nativeSrc":"9432:29:55","nodeType":"YulAssignment","src":"9432:29:55","value":{"arguments":[{"name":"offset","nativeSrc":"9454:6:55","nodeType":"YulIdentifier","src":"9454:6:55"}],"functionName":{"name":"calldataload","nativeSrc":"9441:12:55","nodeType":"YulIdentifier","src":"9441:12:55"},"nativeSrc":"9441:20:55","nodeType":"YulFunctionCall","src":"9441:20:55"},"variableNames":[{"name":"value","nativeSrc":"9432:5:55","nodeType":"YulIdentifier","src":"9432:5:55"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"9497:5:55","nodeType":"YulIdentifier","src":"9497:5:55"}],"functionName":{"name":"validator_revert_t_uint256","nativeSrc":"9470:26:55","nodeType":"YulIdentifier","src":"9470:26:55"},"nativeSrc":"9470:33:55","nodeType":"YulFunctionCall","src":"9470:33:55"},"nativeSrc":"9470:33:55","nodeType":"YulExpressionStatement","src":"9470:33:55"}]},"name":"abi_decode_t_uint256","nativeSrc":"9370:139:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"9400:6:55","nodeType":"YulTypedName","src":"9400:6:55","type":""},{"name":"end","nativeSrc":"9408:3:55","nodeType":"YulTypedName","src":"9408:3:55","type":""}],"returnVariables":[{"name":"value","nativeSrc":"9416:5:55","nodeType":"YulTypedName","src":"9416:5:55","type":""}],"src":"9370:139:55"},{"body":{"nativeSrc":"9697:1033:55","nodeType":"YulBlock","src":"9697:1033:55","statements":[{"body":{"nativeSrc":"9744:83:55","nodeType":"YulBlock","src":"9744:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"9746:77:55","nodeType":"YulIdentifier","src":"9746:77:55"},"nativeSrc":"9746:79:55","nodeType":"YulFunctionCall","src":"9746:79:55"},"nativeSrc":"9746:79:55","nodeType":"YulExpressionStatement","src":"9746:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"9718:7:55","nodeType":"YulIdentifier","src":"9718:7:55"},{"name":"headStart","nativeSrc":"9727:9:55","nodeType":"YulIdentifier","src":"9727:9:55"}],"functionName":{"name":"sub","nativeSrc":"9714:3:55","nodeType":"YulIdentifier","src":"9714:3:55"},"nativeSrc":"9714:23:55","nodeType":"YulFunctionCall","src":"9714:23:55"},{"kind":"number","nativeSrc":"9739:3:55","nodeType":"YulLiteral","src":"9739:3:55","type":"","value":"128"}],"functionName":{"name":"slt","nativeSrc":"9710:3:55","nodeType":"YulIdentifier","src":"9710:3:55"},"nativeSrc":"9710:33:55","nodeType":"YulFunctionCall","src":"9710:33:55"},"nativeSrc":"9707:120:55","nodeType":"YulIf","src":"9707:120:55"},{"nativeSrc":"9837:323:55","nodeType":"YulBlock","src":"9837:323:55","statements":[{"nativeSrc":"9852:45:55","nodeType":"YulVariableDeclaration","src":"9852:45:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9883:9:55","nodeType":"YulIdentifier","src":"9883:9:55"},{"kind":"number","nativeSrc":"9894:1:55","nodeType":"YulLiteral","src":"9894:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"9879:3:55","nodeType":"YulIdentifier","src":"9879:3:55"},"nativeSrc":"9879:17:55","nodeType":"YulFunctionCall","src":"9879:17:55"}],"functionName":{"name":"calldataload","nativeSrc":"9866:12:55","nodeType":"YulIdentifier","src":"9866:12:55"},"nativeSrc":"9866:31:55","nodeType":"YulFunctionCall","src":"9866:31:55"},"variables":[{"name":"offset","nativeSrc":"9856:6:55","nodeType":"YulTypedName","src":"9856:6:55","type":""}]},{"body":{"nativeSrc":"9944:83:55","nodeType":"YulBlock","src":"9944:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"9946:77:55","nodeType":"YulIdentifier","src":"9946:77:55"},"nativeSrc":"9946:79:55","nodeType":"YulFunctionCall","src":"9946:79:55"},"nativeSrc":"9946:79:55","nodeType":"YulExpressionStatement","src":"9946:79:55"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"9916:6:55","nodeType":"YulIdentifier","src":"9916:6:55"},{"kind":"number","nativeSrc":"9924:18:55","nodeType":"YulLiteral","src":"9924:18:55","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"9913:2:55","nodeType":"YulIdentifier","src":"9913:2:55"},"nativeSrc":"9913:30:55","nodeType":"YulFunctionCall","src":"9913:30:55"},"nativeSrc":"9910:117:55","nodeType":"YulIf","src":"9910:117:55"},{"nativeSrc":"10041:109:55","nodeType":"YulAssignment","src":"10041:109:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10122:9:55","nodeType":"YulIdentifier","src":"10122:9:55"},{"name":"offset","nativeSrc":"10133:6:55","nodeType":"YulIdentifier","src":"10133:6:55"}],"functionName":{"name":"add","nativeSrc":"10118:3:55","nodeType":"YulIdentifier","src":"10118:3:55"},"nativeSrc":"10118:22:55","nodeType":"YulFunctionCall","src":"10118:22:55"},{"name":"dataEnd","nativeSrc":"10142:7:55","nodeType":"YulIdentifier","src":"10142:7:55"}],"functionName":{"name":"abi_decode_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","nativeSrc":"10059:58:55","nodeType":"YulIdentifier","src":"10059:58:55"},"nativeSrc":"10059:91:55","nodeType":"YulFunctionCall","src":"10059:91:55"},"variableNames":[{"name":"value0","nativeSrc":"10041:6:55","nodeType":"YulIdentifier","src":"10041:6:55"},{"name":"value1","nativeSrc":"10049:6:55","nodeType":"YulIdentifier","src":"10049:6:55"}]}]},{"nativeSrc":"10170:118:55","nodeType":"YulBlock","src":"10170:118:55","statements":[{"nativeSrc":"10185:16:55","nodeType":"YulVariableDeclaration","src":"10185:16:55","value":{"kind":"number","nativeSrc":"10199:2:55","nodeType":"YulLiteral","src":"10199:2:55","type":"","value":"32"},"variables":[{"name":"offset","nativeSrc":"10189:6:55","nodeType":"YulTypedName","src":"10189:6:55","type":""}]},{"nativeSrc":"10215:63:55","nodeType":"YulAssignment","src":"10215:63:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10250:9:55","nodeType":"YulIdentifier","src":"10250:9:55"},{"name":"offset","nativeSrc":"10261:6:55","nodeType":"YulIdentifier","src":"10261:6:55"}],"functionName":{"name":"add","nativeSrc":"10246:3:55","nodeType":"YulIdentifier","src":"10246:3:55"},"nativeSrc":"10246:22:55","nodeType":"YulFunctionCall","src":"10246:22:55"},{"name":"dataEnd","nativeSrc":"10270:7:55","nodeType":"YulIdentifier","src":"10270:7:55"}],"functionName":{"name":"abi_decode_t_uint256","nativeSrc":"10225:20:55","nodeType":"YulIdentifier","src":"10225:20:55"},"nativeSrc":"10225:53:55","nodeType":"YulFunctionCall","src":"10225:53:55"},"variableNames":[{"name":"value2","nativeSrc":"10215:6:55","nodeType":"YulIdentifier","src":"10215:6:55"}]}]},{"nativeSrc":"10298:118:55","nodeType":"YulBlock","src":"10298:118:55","statements":[{"nativeSrc":"10313:16:55","nodeType":"YulVariableDeclaration","src":"10313:16:55","value":{"kind":"number","nativeSrc":"10327:2:55","nodeType":"YulLiteral","src":"10327:2:55","type":"","value":"64"},"variables":[{"name":"offset","nativeSrc":"10317:6:55","nodeType":"YulTypedName","src":"10317:6:55","type":""}]},{"nativeSrc":"10343:63:55","nodeType":"YulAssignment","src":"10343:63:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10378:9:55","nodeType":"YulIdentifier","src":"10378:9:55"},{"name":"offset","nativeSrc":"10389:6:55","nodeType":"YulIdentifier","src":"10389:6:55"}],"functionName":{"name":"add","nativeSrc":"10374:3:55","nodeType":"YulIdentifier","src":"10374:3:55"},"nativeSrc":"10374:22:55","nodeType":"YulFunctionCall","src":"10374:22:55"},{"name":"dataEnd","nativeSrc":"10398:7:55","nodeType":"YulIdentifier","src":"10398:7:55"}],"functionName":{"name":"abi_decode_t_bytes32","nativeSrc":"10353:20:55","nodeType":"YulIdentifier","src":"10353:20:55"},"nativeSrc":"10353:53:55","nodeType":"YulFunctionCall","src":"10353:53:55"},"variableNames":[{"name":"value3","nativeSrc":"10343:6:55","nodeType":"YulIdentifier","src":"10343:6:55"}]}]},{"nativeSrc":"10426:297:55","nodeType":"YulBlock","src":"10426:297:55","statements":[{"nativeSrc":"10441:46:55","nodeType":"YulVariableDeclaration","src":"10441:46:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10472:9:55","nodeType":"YulIdentifier","src":"10472:9:55"},{"kind":"number","nativeSrc":"10483:2:55","nodeType":"YulLiteral","src":"10483:2:55","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"10468:3:55","nodeType":"YulIdentifier","src":"10468:3:55"},"nativeSrc":"10468:18:55","nodeType":"YulFunctionCall","src":"10468:18:55"}],"functionName":{"name":"calldataload","nativeSrc":"10455:12:55","nodeType":"YulIdentifier","src":"10455:12:55"},"nativeSrc":"10455:32:55","nodeType":"YulFunctionCall","src":"10455:32:55"},"variables":[{"name":"offset","nativeSrc":"10445:6:55","nodeType":"YulTypedName","src":"10445:6:55","type":""}]},{"body":{"nativeSrc":"10534:83:55","nodeType":"YulBlock","src":"10534:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"10536:77:55","nodeType":"YulIdentifier","src":"10536:77:55"},"nativeSrc":"10536:79:55","nodeType":"YulFunctionCall","src":"10536:79:55"},"nativeSrc":"10536:79:55","nodeType":"YulExpressionStatement","src":"10536:79:55"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"10506:6:55","nodeType":"YulIdentifier","src":"10506:6:55"},{"kind":"number","nativeSrc":"10514:18:55","nodeType":"YulLiteral","src":"10514:18:55","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"10503:2:55","nodeType":"YulIdentifier","src":"10503:2:55"},"nativeSrc":"10503:30:55","nodeType":"YulFunctionCall","src":"10503:30:55"},"nativeSrc":"10500:117:55","nodeType":"YulIf","src":"10500:117:55"},{"nativeSrc":"10631:82:55","nodeType":"YulAssignment","src":"10631:82:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10685:9:55","nodeType":"YulIdentifier","src":"10685:9:55"},{"name":"offset","nativeSrc":"10696:6:55","nodeType":"YulIdentifier","src":"10696:6:55"}],"functionName":{"name":"add","nativeSrc":"10681:3:55","nodeType":"YulIdentifier","src":"10681:3:55"},"nativeSrc":"10681:22:55","nodeType":"YulFunctionCall","src":"10681:22:55"},{"name":"dataEnd","nativeSrc":"10705:7:55","nodeType":"YulIdentifier","src":"10705:7:55"}],"functionName":{"name":"abi_decode_t_bytes_calldata_ptr","nativeSrc":"10649:31:55","nodeType":"YulIdentifier","src":"10649:31:55"},"nativeSrc":"10649:64:55","nodeType":"YulFunctionCall","src":"10649:64:55"},"variableNames":[{"name":"value4","nativeSrc":"10631:6:55","nodeType":"YulIdentifier","src":"10631:6:55"},{"name":"value5","nativeSrc":"10639:6:55","nodeType":"YulIdentifier","src":"10639:6:55"}]}]}]},"name":"abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptrt_uint256t_bytes32t_bytes_calldata_ptr","nativeSrc":"9515:1215:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9627:9:55","nodeType":"YulTypedName","src":"9627:9:55","type":""},{"name":"dataEnd","nativeSrc":"9638:7:55","nodeType":"YulTypedName","src":"9638:7:55","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"9650:6:55","nodeType":"YulTypedName","src":"9650:6:55","type":""},{"name":"value1","nativeSrc":"9658:6:55","nodeType":"YulTypedName","src":"9658:6:55","type":""},{"name":"value2","nativeSrc":"9666:6:55","nodeType":"YulTypedName","src":"9666:6:55","type":""},{"name":"value3","nativeSrc":"9674:6:55","nodeType":"YulTypedName","src":"9674:6:55","type":""},{"name":"value4","nativeSrc":"9682:6:55","nodeType":"YulTypedName","src":"9682:6:55","type":""},{"name":"value5","nativeSrc":"9690:6:55","nodeType":"YulTypedName","src":"9690:6:55","type":""}],"src":"9515:1215:55"},{"body":{"nativeSrc":"10806:51:55","nodeType":"YulBlock","src":"10806:51:55","statements":[{"nativeSrc":"10816:35:55","nodeType":"YulAssignment","src":"10816:35:55","value":{"arguments":[{"name":"value","nativeSrc":"10845:5:55","nodeType":"YulIdentifier","src":"10845:5:55"}],"functionName":{"name":"cleanup_t_address","nativeSrc":"10827:17:55","nodeType":"YulIdentifier","src":"10827:17:55"},"nativeSrc":"10827:24:55","nodeType":"YulFunctionCall","src":"10827:24:55"},"variableNames":[{"name":"cleaned","nativeSrc":"10816:7:55","nodeType":"YulIdentifier","src":"10816:7:55"}]}]},"name":"cleanup_t_contract$_IERC20Upgradeable_$617","nativeSrc":"10736:121:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"10788:5:55","nodeType":"YulTypedName","src":"10788:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"10798:7:55","nodeType":"YulTypedName","src":"10798:7:55","type":""}],"src":"10736:121:55"},{"body":{"nativeSrc":"10931:104:55","nodeType":"YulBlock","src":"10931:104:55","statements":[{"body":{"nativeSrc":"11013:16:55","nodeType":"YulBlock","src":"11013:16:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11022:1:55","nodeType":"YulLiteral","src":"11022:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"11025:1:55","nodeType":"YulLiteral","src":"11025:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11015:6:55","nodeType":"YulIdentifier","src":"11015:6:55"},"nativeSrc":"11015:12:55","nodeType":"YulFunctionCall","src":"11015:12:55"},"nativeSrc":"11015:12:55","nodeType":"YulExpressionStatement","src":"11015:12:55"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"10954:5:55","nodeType":"YulIdentifier","src":"10954:5:55"},{"arguments":[{"name":"value","nativeSrc":"11004:5:55","nodeType":"YulIdentifier","src":"11004:5:55"}],"functionName":{"name":"cleanup_t_contract$_IERC20Upgradeable_$617","nativeSrc":"10961:42:55","nodeType":"YulIdentifier","src":"10961:42:55"},"nativeSrc":"10961:49:55","nodeType":"YulFunctionCall","src":"10961:49:55"}],"functionName":{"name":"eq","nativeSrc":"10951:2:55","nodeType":"YulIdentifier","src":"10951:2:55"},"nativeSrc":"10951:60:55","nodeType":"YulFunctionCall","src":"10951:60:55"}],"functionName":{"name":"iszero","nativeSrc":"10944:6:55","nodeType":"YulIdentifier","src":"10944:6:55"},"nativeSrc":"10944:68:55","nodeType":"YulFunctionCall","src":"10944:68:55"},"nativeSrc":"10941:88:55","nodeType":"YulIf","src":"10941:88:55"}]},"name":"validator_revert_t_contract$_IERC20Upgradeable_$617","nativeSrc":"10863:172:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"10924:5:55","nodeType":"YulTypedName","src":"10924:5:55","type":""}],"src":"10863:172:55"},{"body":{"nativeSrc":"11118:112:55","nodeType":"YulBlock","src":"11118:112:55","statements":[{"nativeSrc":"11128:29:55","nodeType":"YulAssignment","src":"11128:29:55","value":{"arguments":[{"name":"offset","nativeSrc":"11150:6:55","nodeType":"YulIdentifier","src":"11150:6:55"}],"functionName":{"name":"calldataload","nativeSrc":"11137:12:55","nodeType":"YulIdentifier","src":"11137:12:55"},"nativeSrc":"11137:20:55","nodeType":"YulFunctionCall","src":"11137:20:55"},"variableNames":[{"name":"value","nativeSrc":"11128:5:55","nodeType":"YulIdentifier","src":"11128:5:55"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"11218:5:55","nodeType":"YulIdentifier","src":"11218:5:55"}],"functionName":{"name":"validator_revert_t_contract$_IERC20Upgradeable_$617","nativeSrc":"11166:51:55","nodeType":"YulIdentifier","src":"11166:51:55"},"nativeSrc":"11166:58:55","nodeType":"YulFunctionCall","src":"11166:58:55"},"nativeSrc":"11166:58:55","nodeType":"YulExpressionStatement","src":"11166:58:55"}]},"name":"abi_decode_t_contract$_IERC20Upgradeable_$617","nativeSrc":"11041:189:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"11096:6:55","nodeType":"YulTypedName","src":"11096:6:55","type":""},{"name":"end","nativeSrc":"11104:3:55","nodeType":"YulTypedName","src":"11104:3:55","type":""}],"returnVariables":[{"name":"value","nativeSrc":"11112:5:55","nodeType":"YulTypedName","src":"11112:5:55","type":""}],"src":"11041:189:55"},{"body":{"nativeSrc":"11344:416:55","nodeType":"YulBlock","src":"11344:416:55","statements":[{"body":{"nativeSrc":"11390:83:55","nodeType":"YulBlock","src":"11390:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"11392:77:55","nodeType":"YulIdentifier","src":"11392:77:55"},"nativeSrc":"11392:79:55","nodeType":"YulFunctionCall","src":"11392:79:55"},"nativeSrc":"11392:79:55","nodeType":"YulExpressionStatement","src":"11392:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"11365:7:55","nodeType":"YulIdentifier","src":"11365:7:55"},{"name":"headStart","nativeSrc":"11374:9:55","nodeType":"YulIdentifier","src":"11374:9:55"}],"functionName":{"name":"sub","nativeSrc":"11361:3:55","nodeType":"YulIdentifier","src":"11361:3:55"},"nativeSrc":"11361:23:55","nodeType":"YulFunctionCall","src":"11361:23:55"},{"kind":"number","nativeSrc":"11386:2:55","nodeType":"YulLiteral","src":"11386:2:55","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"11357:3:55","nodeType":"YulIdentifier","src":"11357:3:55"},"nativeSrc":"11357:32:55","nodeType":"YulFunctionCall","src":"11357:32:55"},"nativeSrc":"11354:119:55","nodeType":"YulIf","src":"11354:119:55"},{"nativeSrc":"11483:142:55","nodeType":"YulBlock","src":"11483:142:55","statements":[{"nativeSrc":"11498:15:55","nodeType":"YulVariableDeclaration","src":"11498:15:55","value":{"kind":"number","nativeSrc":"11512:1:55","nodeType":"YulLiteral","src":"11512:1:55","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"11502:6:55","nodeType":"YulTypedName","src":"11502:6:55","type":""}]},{"nativeSrc":"11527:88:55","nodeType":"YulAssignment","src":"11527:88:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11587:9:55","nodeType":"YulIdentifier","src":"11587:9:55"},{"name":"offset","nativeSrc":"11598:6:55","nodeType":"YulIdentifier","src":"11598:6:55"}],"functionName":{"name":"add","nativeSrc":"11583:3:55","nodeType":"YulIdentifier","src":"11583:3:55"},"nativeSrc":"11583:22:55","nodeType":"YulFunctionCall","src":"11583:22:55"},{"name":"dataEnd","nativeSrc":"11607:7:55","nodeType":"YulIdentifier","src":"11607:7:55"}],"functionName":{"name":"abi_decode_t_contract$_IERC20Upgradeable_$617","nativeSrc":"11537:45:55","nodeType":"YulIdentifier","src":"11537:45:55"},"nativeSrc":"11537:78:55","nodeType":"YulFunctionCall","src":"11537:78:55"},"variableNames":[{"name":"value0","nativeSrc":"11527:6:55","nodeType":"YulIdentifier","src":"11527:6:55"}]}]},{"nativeSrc":"11635:118:55","nodeType":"YulBlock","src":"11635:118:55","statements":[{"nativeSrc":"11650:16:55","nodeType":"YulVariableDeclaration","src":"11650:16:55","value":{"kind":"number","nativeSrc":"11664:2:55","nodeType":"YulLiteral","src":"11664:2:55","type":"","value":"32"},"variables":[{"name":"offset","nativeSrc":"11654:6:55","nodeType":"YulTypedName","src":"11654:6:55","type":""}]},{"nativeSrc":"11680:63:55","nodeType":"YulAssignment","src":"11680:63:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11715:9:55","nodeType":"YulIdentifier","src":"11715:9:55"},{"name":"offset","nativeSrc":"11726:6:55","nodeType":"YulIdentifier","src":"11726:6:55"}],"functionName":{"name":"add","nativeSrc":"11711:3:55","nodeType":"YulIdentifier","src":"11711:3:55"},"nativeSrc":"11711:22:55","nodeType":"YulFunctionCall","src":"11711:22:55"},{"name":"dataEnd","nativeSrc":"11735:7:55","nodeType":"YulIdentifier","src":"11735:7:55"}],"functionName":{"name":"abi_decode_t_address","nativeSrc":"11690:20:55","nodeType":"YulIdentifier","src":"11690:20:55"},"nativeSrc":"11690:53:55","nodeType":"YulFunctionCall","src":"11690:53:55"},"variableNames":[{"name":"value1","nativeSrc":"11680:6:55","nodeType":"YulIdentifier","src":"11680:6:55"}]}]}]},"name":"abi_decode_tuple_t_contract$_IERC20Upgradeable_$617t_address","nativeSrc":"11236:524:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11306:9:55","nodeType":"YulTypedName","src":"11306:9:55","type":""},{"name":"dataEnd","nativeSrc":"11317:7:55","nodeType":"YulTypedName","src":"11317:7:55","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"11329:6:55","nodeType":"YulTypedName","src":"11329:6:55","type":""},{"name":"value1","nativeSrc":"11337:6:55","nodeType":"YulTypedName","src":"11337:6:55","type":""}],"src":"11236:524:55"},{"body":{"nativeSrc":"11861:73:55","nodeType":"YulBlock","src":"11861:73:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"11878:3:55","nodeType":"YulIdentifier","src":"11878:3:55"},{"name":"length","nativeSrc":"11883:6:55","nodeType":"YulIdentifier","src":"11883:6:55"}],"functionName":{"name":"mstore","nativeSrc":"11871:6:55","nodeType":"YulIdentifier","src":"11871:6:55"},"nativeSrc":"11871:19:55","nodeType":"YulFunctionCall","src":"11871:19:55"},"nativeSrc":"11871:19:55","nodeType":"YulExpressionStatement","src":"11871:19:55"},{"nativeSrc":"11899:29:55","nodeType":"YulAssignment","src":"11899:29:55","value":{"arguments":[{"name":"pos","nativeSrc":"11918:3:55","nodeType":"YulIdentifier","src":"11918:3:55"},{"kind":"number","nativeSrc":"11923:4:55","nodeType":"YulLiteral","src":"11923:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"11914:3:55","nodeType":"YulIdentifier","src":"11914:3:55"},"nativeSrc":"11914:14:55","nodeType":"YulFunctionCall","src":"11914:14:55"},"variableNames":[{"name":"updated_pos","nativeSrc":"11899:11:55","nodeType":"YulIdentifier","src":"11899:11:55"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nativeSrc":"11766:168:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"11833:3:55","nodeType":"YulTypedName","src":"11833:3:55","type":""},{"name":"length","nativeSrc":"11838:6:55","nodeType":"YulTypedName","src":"11838:6:55","type":""}],"returnVariables":[{"name":"updated_pos","nativeSrc":"11849:11:55","nodeType":"YulTypedName","src":"11849:11:55","type":""}],"src":"11766:168:55"},{"body":{"nativeSrc":"12004:84:55","nodeType":"YulBlock","src":"12004:84:55","statements":[{"expression":{"arguments":[{"name":"dst","nativeSrc":"12028:3:55","nodeType":"YulIdentifier","src":"12028:3:55"},{"name":"src","nativeSrc":"12033:3:55","nodeType":"YulIdentifier","src":"12033:3:55"},{"name":"length","nativeSrc":"12038:6:55","nodeType":"YulIdentifier","src":"12038:6:55"}],"functionName":{"name":"calldatacopy","nativeSrc":"12015:12:55","nodeType":"YulIdentifier","src":"12015:12:55"},"nativeSrc":"12015:30:55","nodeType":"YulFunctionCall","src":"12015:30:55"},"nativeSrc":"12015:30:55","nodeType":"YulExpressionStatement","src":"12015:30:55"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"12065:3:55","nodeType":"YulIdentifier","src":"12065:3:55"},{"name":"length","nativeSrc":"12070:6:55","nodeType":"YulIdentifier","src":"12070:6:55"}],"functionName":{"name":"add","nativeSrc":"12061:3:55","nodeType":"YulIdentifier","src":"12061:3:55"},"nativeSrc":"12061:16:55","nodeType":"YulFunctionCall","src":"12061:16:55"},{"kind":"number","nativeSrc":"12079:1:55","nodeType":"YulLiteral","src":"12079:1:55","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"12054:6:55","nodeType":"YulIdentifier","src":"12054:6:55"},"nativeSrc":"12054:27:55","nodeType":"YulFunctionCall","src":"12054:27:55"},"nativeSrc":"12054:27:55","nodeType":"YulExpressionStatement","src":"12054:27:55"}]},"name":"copy_calldata_to_memory_with_cleanup","nativeSrc":"11940:148:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nativeSrc":"11986:3:55","nodeType":"YulTypedName","src":"11986:3:55","type":""},{"name":"dst","nativeSrc":"11991:3:55","nodeType":"YulTypedName","src":"11991:3:55","type":""},{"name":"length","nativeSrc":"11996:6:55","nodeType":"YulTypedName","src":"11996:6:55","type":""}],"src":"11940:148:55"},{"body":{"nativeSrc":"12216:214:55","nodeType":"YulBlock","src":"12216:214:55","statements":[{"nativeSrc":"12226:77:55","nodeType":"YulAssignment","src":"12226:77:55","value":{"arguments":[{"name":"pos","nativeSrc":"12291:3:55","nodeType":"YulIdentifier","src":"12291:3:55"},{"name":"length","nativeSrc":"12296:6:55","nodeType":"YulIdentifier","src":"12296:6:55"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nativeSrc":"12233:57:55","nodeType":"YulIdentifier","src":"12233:57:55"},"nativeSrc":"12233:70:55","nodeType":"YulFunctionCall","src":"12233:70:55"},"variableNames":[{"name":"pos","nativeSrc":"12226:3:55","nodeType":"YulIdentifier","src":"12226:3:55"}]},{"expression":{"arguments":[{"name":"start","nativeSrc":"12350:5:55","nodeType":"YulIdentifier","src":"12350:5:55"},{"name":"pos","nativeSrc":"12357:3:55","nodeType":"YulIdentifier","src":"12357:3:55"},{"name":"length","nativeSrc":"12362:6:55","nodeType":"YulIdentifier","src":"12362:6:55"}],"functionName":{"name":"copy_calldata_to_memory_with_cleanup","nativeSrc":"12313:36:55","nodeType":"YulIdentifier","src":"12313:36:55"},"nativeSrc":"12313:56:55","nodeType":"YulFunctionCall","src":"12313:56:55"},"nativeSrc":"12313:56:55","nodeType":"YulExpressionStatement","src":"12313:56:55"},{"nativeSrc":"12378:46:55","nodeType":"YulAssignment","src":"12378:46:55","value":{"arguments":[{"name":"pos","nativeSrc":"12389:3:55","nodeType":"YulIdentifier","src":"12389:3:55"},{"arguments":[{"name":"length","nativeSrc":"12416:6:55","nodeType":"YulIdentifier","src":"12416:6:55"}],"functionName":{"name":"round_up_to_mul_of_32","nativeSrc":"12394:21:55","nodeType":"YulIdentifier","src":"12394:21:55"},"nativeSrc":"12394:29:55","nodeType":"YulFunctionCall","src":"12394:29:55"}],"functionName":{"name":"add","nativeSrc":"12385:3:55","nodeType":"YulIdentifier","src":"12385:3:55"},"nativeSrc":"12385:39:55","nodeType":"YulFunctionCall","src":"12385:39:55"},"variableNames":[{"name":"end","nativeSrc":"12378:3:55","nodeType":"YulIdentifier","src":"12378:3:55"}]}]},"name":"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack","nativeSrc":"12116:314:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nativeSrc":"12189:5:55","nodeType":"YulTypedName","src":"12189:5:55","type":""},{"name":"length","nativeSrc":"12196:6:55","nodeType":"YulTypedName","src":"12196:6:55","type":""},{"name":"pos","nativeSrc":"12204:3:55","nodeType":"YulTypedName","src":"12204:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"12212:3:55","nodeType":"YulTypedName","src":"12212:3:55","type":""}],"src":"12116:314:55"},{"body":{"nativeSrc":"12562:203:55","nodeType":"YulBlock","src":"12562:203:55","statements":[{"nativeSrc":"12572:26:55","nodeType":"YulAssignment","src":"12572:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"12584:9:55","nodeType":"YulIdentifier","src":"12584:9:55"},{"kind":"number","nativeSrc":"12595:2:55","nodeType":"YulLiteral","src":"12595:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"12580:3:55","nodeType":"YulIdentifier","src":"12580:3:55"},"nativeSrc":"12580:18:55","nodeType":"YulFunctionCall","src":"12580:18:55"},"variableNames":[{"name":"tail","nativeSrc":"12572:4:55","nodeType":"YulIdentifier","src":"12572:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12619:9:55","nodeType":"YulIdentifier","src":"12619:9:55"},{"kind":"number","nativeSrc":"12630:1:55","nodeType":"YulLiteral","src":"12630:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"12615:3:55","nodeType":"YulIdentifier","src":"12615:3:55"},"nativeSrc":"12615:17:55","nodeType":"YulFunctionCall","src":"12615:17:55"},{"arguments":[{"name":"tail","nativeSrc":"12638:4:55","nodeType":"YulIdentifier","src":"12638:4:55"},{"name":"headStart","nativeSrc":"12644:9:55","nodeType":"YulIdentifier","src":"12644:9:55"}],"functionName":{"name":"sub","nativeSrc":"12634:3:55","nodeType":"YulIdentifier","src":"12634:3:55"},"nativeSrc":"12634:20:55","nodeType":"YulFunctionCall","src":"12634:20:55"}],"functionName":{"name":"mstore","nativeSrc":"12608:6:55","nodeType":"YulIdentifier","src":"12608:6:55"},"nativeSrc":"12608:47:55","nodeType":"YulFunctionCall","src":"12608:47:55"},"nativeSrc":"12608:47:55","nodeType":"YulExpressionStatement","src":"12608:47:55"},{"nativeSrc":"12664:94:55","nodeType":"YulAssignment","src":"12664:94:55","value":{"arguments":[{"name":"value0","nativeSrc":"12736:6:55","nodeType":"YulIdentifier","src":"12736:6:55"},{"name":"value1","nativeSrc":"12744:6:55","nodeType":"YulIdentifier","src":"12744:6:55"},{"name":"tail","nativeSrc":"12753:4:55","nodeType":"YulIdentifier","src":"12753:4:55"}],"functionName":{"name":"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack","nativeSrc":"12672:63:55","nodeType":"YulIdentifier","src":"12672:63:55"},"nativeSrc":"12672:86:55","nodeType":"YulFunctionCall","src":"12672:86:55"},"variableNames":[{"name":"tail","nativeSrc":"12664:4:55","nodeType":"YulIdentifier","src":"12664:4:55"}]}]},"name":"abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"12436:329:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"12526:9:55","nodeType":"YulTypedName","src":"12526:9:55","type":""},{"name":"value1","nativeSrc":"12538:6:55","nodeType":"YulTypedName","src":"12538:6:55","type":""},{"name":"value0","nativeSrc":"12546:6:55","nodeType":"YulTypedName","src":"12546:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"12557:4:55","nodeType":"YulTypedName","src":"12557:4:55","type":""}],"src":"12436:329:55"},{"body":{"nativeSrc":"12877:122:55","nodeType":"YulBlock","src":"12877:122:55","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"12899:6:55","nodeType":"YulIdentifier","src":"12899:6:55"},{"kind":"number","nativeSrc":"12907:1:55","nodeType":"YulLiteral","src":"12907:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"12895:3:55","nodeType":"YulIdentifier","src":"12895:3:55"},"nativeSrc":"12895:14:55","nodeType":"YulFunctionCall","src":"12895:14:55"},{"hexValue":"4f776e61626c6532537465703a2063616c6c6572206973206e6f742074686520","kind":"string","nativeSrc":"12911:34:55","nodeType":"YulLiteral","src":"12911:34:55","type":"","value":"Ownable2Step: caller is not the "}],"functionName":{"name":"mstore","nativeSrc":"12888:6:55","nodeType":"YulIdentifier","src":"12888:6:55"},"nativeSrc":"12888:58:55","nodeType":"YulFunctionCall","src":"12888:58:55"},"nativeSrc":"12888:58:55","nodeType":"YulExpressionStatement","src":"12888:58:55"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"12967:6:55","nodeType":"YulIdentifier","src":"12967:6:55"},{"kind":"number","nativeSrc":"12975:2:55","nodeType":"YulLiteral","src":"12975:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"12963:3:55","nodeType":"YulIdentifier","src":"12963:3:55"},"nativeSrc":"12963:15:55","nodeType":"YulFunctionCall","src":"12963:15:55"},{"hexValue":"6e6577206f776e6572","kind":"string","nativeSrc":"12980:11:55","nodeType":"YulLiteral","src":"12980:11:55","type":"","value":"new owner"}],"functionName":{"name":"mstore","nativeSrc":"12956:6:55","nodeType":"YulIdentifier","src":"12956:6:55"},"nativeSrc":"12956:36:55","nodeType":"YulFunctionCall","src":"12956:36:55"},"nativeSrc":"12956:36:55","nodeType":"YulExpressionStatement","src":"12956:36:55"}]},"name":"store_literal_in_memory_225559eb8402045bea7ff07c35d0ad8c0547830223ac1c21d44fb948d6896ebc","nativeSrc":"12771:228:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"12869:6:55","nodeType":"YulTypedName","src":"12869:6:55","type":""}],"src":"12771:228:55"},{"body":{"nativeSrc":"13151:220:55","nodeType":"YulBlock","src":"13151:220:55","statements":[{"nativeSrc":"13161:74:55","nodeType":"YulAssignment","src":"13161:74:55","value":{"arguments":[{"name":"pos","nativeSrc":"13227:3:55","nodeType":"YulIdentifier","src":"13227:3:55"},{"kind":"number","nativeSrc":"13232:2:55","nodeType":"YulLiteral","src":"13232:2:55","type":"","value":"41"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"13168:58:55","nodeType":"YulIdentifier","src":"13168:58:55"},"nativeSrc":"13168:67:55","nodeType":"YulFunctionCall","src":"13168:67:55"},"variableNames":[{"name":"pos","nativeSrc":"13161:3:55","nodeType":"YulIdentifier","src":"13161:3:55"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"13333:3:55","nodeType":"YulIdentifier","src":"13333:3:55"}],"functionName":{"name":"store_literal_in_memory_225559eb8402045bea7ff07c35d0ad8c0547830223ac1c21d44fb948d6896ebc","nativeSrc":"13244:88:55","nodeType":"YulIdentifier","src":"13244:88:55"},"nativeSrc":"13244:93:55","nodeType":"YulFunctionCall","src":"13244:93:55"},"nativeSrc":"13244:93:55","nodeType":"YulExpressionStatement","src":"13244:93:55"},{"nativeSrc":"13346:19:55","nodeType":"YulAssignment","src":"13346:19:55","value":{"arguments":[{"name":"pos","nativeSrc":"13357:3:55","nodeType":"YulIdentifier","src":"13357:3:55"},{"kind":"number","nativeSrc":"13362:2:55","nodeType":"YulLiteral","src":"13362:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"13353:3:55","nodeType":"YulIdentifier","src":"13353:3:55"},"nativeSrc":"13353:12:55","nodeType":"YulFunctionCall","src":"13353:12:55"},"variableNames":[{"name":"end","nativeSrc":"13346:3:55","nodeType":"YulIdentifier","src":"13346:3:55"}]}]},"name":"abi_encode_t_stringliteral_225559eb8402045bea7ff07c35d0ad8c0547830223ac1c21d44fb948d6896ebc_to_t_string_memory_ptr_fromStack","nativeSrc":"13005:366:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"13139:3:55","nodeType":"YulTypedName","src":"13139:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"13147:3:55","nodeType":"YulTypedName","src":"13147:3:55","type":""}],"src":"13005:366:55"},{"body":{"nativeSrc":"13548:248:55","nodeType":"YulBlock","src":"13548:248:55","statements":[{"nativeSrc":"13558:26:55","nodeType":"YulAssignment","src":"13558:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"13570:9:55","nodeType":"YulIdentifier","src":"13570:9:55"},{"kind":"number","nativeSrc":"13581:2:55","nodeType":"YulLiteral","src":"13581:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"13566:3:55","nodeType":"YulIdentifier","src":"13566:3:55"},"nativeSrc":"13566:18:55","nodeType":"YulFunctionCall","src":"13566:18:55"},"variableNames":[{"name":"tail","nativeSrc":"13558:4:55","nodeType":"YulIdentifier","src":"13558:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13605:9:55","nodeType":"YulIdentifier","src":"13605:9:55"},{"kind":"number","nativeSrc":"13616:1:55","nodeType":"YulLiteral","src":"13616:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"13601:3:55","nodeType":"YulIdentifier","src":"13601:3:55"},"nativeSrc":"13601:17:55","nodeType":"YulFunctionCall","src":"13601:17:55"},{"arguments":[{"name":"tail","nativeSrc":"13624:4:55","nodeType":"YulIdentifier","src":"13624:4:55"},{"name":"headStart","nativeSrc":"13630:9:55","nodeType":"YulIdentifier","src":"13630:9:55"}],"functionName":{"name":"sub","nativeSrc":"13620:3:55","nodeType":"YulIdentifier","src":"13620:3:55"},"nativeSrc":"13620:20:55","nodeType":"YulFunctionCall","src":"13620:20:55"}],"functionName":{"name":"mstore","nativeSrc":"13594:6:55","nodeType":"YulIdentifier","src":"13594:6:55"},"nativeSrc":"13594:47:55","nodeType":"YulFunctionCall","src":"13594:47:55"},"nativeSrc":"13594:47:55","nodeType":"YulExpressionStatement","src":"13594:47:55"},{"nativeSrc":"13650:139:55","nodeType":"YulAssignment","src":"13650:139:55","value":{"arguments":[{"name":"tail","nativeSrc":"13784:4:55","nodeType":"YulIdentifier","src":"13784:4:55"}],"functionName":{"name":"abi_encode_t_stringliteral_225559eb8402045bea7ff07c35d0ad8c0547830223ac1c21d44fb948d6896ebc_to_t_string_memory_ptr_fromStack","nativeSrc":"13658:124:55","nodeType":"YulIdentifier","src":"13658:124:55"},"nativeSrc":"13658:131:55","nodeType":"YulFunctionCall","src":"13658:131:55"},"variableNames":[{"name":"tail","nativeSrc":"13650:4:55","nodeType":"YulIdentifier","src":"13650:4:55"}]}]},"name":"abi_encode_tuple_t_stringliteral_225559eb8402045bea7ff07c35d0ad8c0547830223ac1c21d44fb948d6896ebc__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"13377:419:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13528:9:55","nodeType":"YulTypedName","src":"13528:9:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"13543:4:55","nodeType":"YulTypedName","src":"13543:4:55","type":""}],"src":"13377:419:55"},{"body":{"nativeSrc":"13830:152:55","nodeType":"YulBlock","src":"13830:152:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13847:1:55","nodeType":"YulLiteral","src":"13847:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"13850:77:55","nodeType":"YulLiteral","src":"13850:77:55","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"13840:6:55","nodeType":"YulIdentifier","src":"13840:6:55"},"nativeSrc":"13840:88:55","nodeType":"YulFunctionCall","src":"13840:88:55"},"nativeSrc":"13840:88:55","nodeType":"YulExpressionStatement","src":"13840:88:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"13944:1:55","nodeType":"YulLiteral","src":"13944:1:55","type":"","value":"4"},{"kind":"number","nativeSrc":"13947:4:55","nodeType":"YulLiteral","src":"13947:4:55","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"13937:6:55","nodeType":"YulIdentifier","src":"13937:6:55"},"nativeSrc":"13937:15:55","nodeType":"YulFunctionCall","src":"13937:15:55"},"nativeSrc":"13937:15:55","nodeType":"YulExpressionStatement","src":"13937:15:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"13968:1:55","nodeType":"YulLiteral","src":"13968:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"13971:4:55","nodeType":"YulLiteral","src":"13971:4:55","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"13961:6:55","nodeType":"YulIdentifier","src":"13961:6:55"},"nativeSrc":"13961:15:55","nodeType":"YulFunctionCall","src":"13961:15:55"},"nativeSrc":"13961:15:55","nodeType":"YulExpressionStatement","src":"13961:15:55"}]},"name":"panic_error_0x41","nativeSrc":"13802:180:55","nodeType":"YulFunctionDefinition","src":"13802:180:55"},{"body":{"nativeSrc":"14016:152:55","nodeType":"YulBlock","src":"14016:152:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14033:1:55","nodeType":"YulLiteral","src":"14033:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"14036:77:55","nodeType":"YulLiteral","src":"14036:77:55","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"14026:6:55","nodeType":"YulIdentifier","src":"14026:6:55"},"nativeSrc":"14026:88:55","nodeType":"YulFunctionCall","src":"14026:88:55"},"nativeSrc":"14026:88:55","nodeType":"YulExpressionStatement","src":"14026:88:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14130:1:55","nodeType":"YulLiteral","src":"14130:1:55","type":"","value":"4"},{"kind":"number","nativeSrc":"14133:4:55","nodeType":"YulLiteral","src":"14133:4:55","type":"","value":"0x32"}],"functionName":{"name":"mstore","nativeSrc":"14123:6:55","nodeType":"YulIdentifier","src":"14123:6:55"},"nativeSrc":"14123:15:55","nodeType":"YulFunctionCall","src":"14123:15:55"},"nativeSrc":"14123:15:55","nodeType":"YulExpressionStatement","src":"14123:15:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14154:1:55","nodeType":"YulLiteral","src":"14154:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"14157:4:55","nodeType":"YulLiteral","src":"14157:4:55","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"14147:6:55","nodeType":"YulIdentifier","src":"14147:6:55"},"nativeSrc":"14147:15:55","nodeType":"YulFunctionCall","src":"14147:15:55"},"nativeSrc":"14147:15:55","nodeType":"YulExpressionStatement","src":"14147:15:55"}]},"name":"panic_error_0x32","nativeSrc":"13988:180:55","nodeType":"YulFunctionDefinition","src":"13988:180:55"},{"body":{"nativeSrc":"14263:28:55","nodeType":"YulBlock","src":"14263:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14280:1:55","nodeType":"YulLiteral","src":"14280:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"14283:1:55","nodeType":"YulLiteral","src":"14283:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14273:6:55","nodeType":"YulIdentifier","src":"14273:6:55"},"nativeSrc":"14273:12:55","nodeType":"YulFunctionCall","src":"14273:12:55"},"nativeSrc":"14273:12:55","nodeType":"YulExpressionStatement","src":"14273:12:55"}]},"name":"revert_error_356d538aaf70fba12156cc466564b792649f8f3befb07b071c91142253e175ad","nativeSrc":"14174:117:55","nodeType":"YulFunctionDefinition","src":"14174:117:55"},{"body":{"nativeSrc":"14386:28:55","nodeType":"YulBlock","src":"14386:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14403:1:55","nodeType":"YulLiteral","src":"14403:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"14406:1:55","nodeType":"YulLiteral","src":"14406:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14396:6:55","nodeType":"YulIdentifier","src":"14396:6:55"},"nativeSrc":"14396:12:55","nodeType":"YulFunctionCall","src":"14396:12:55"},"nativeSrc":"14396:12:55","nodeType":"YulExpressionStatement","src":"14396:12:55"}]},"name":"revert_error_1e55d03107e9c4f1b5e21c76a16fba166a461117ab153bcce65e6a4ea8e5fc8a","nativeSrc":"14297:117:55","nodeType":"YulFunctionDefinition","src":"14297:117:55"},{"body":{"nativeSrc":"14509:28:55","nodeType":"YulBlock","src":"14509:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14526:1:55","nodeType":"YulLiteral","src":"14526:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"14529:1:55","nodeType":"YulLiteral","src":"14529:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14519:6:55","nodeType":"YulIdentifier","src":"14519:6:55"},"nativeSrc":"14519:12:55","nodeType":"YulFunctionCall","src":"14519:12:55"},"nativeSrc":"14519:12:55","nodeType":"YulExpressionStatement","src":"14519:12:55"}]},"name":"revert_error_977805620ff29572292dee35f70b0f3f3f73d3fdd0e9f4d7a901c2e43ab18a2e","nativeSrc":"14420:117:55","nodeType":"YulFunctionDefinition","src":"14420:117:55"},{"body":{"nativeSrc":"14633:634:55","nodeType":"YulBlock","src":"14633:634:55","statements":[{"nativeSrc":"14643:51:55","nodeType":"YulVariableDeclaration","src":"14643:51:55","value":{"arguments":[{"name":"ptr_to_tail","nativeSrc":"14682:11:55","nodeType":"YulIdentifier","src":"14682:11:55"}],"functionName":{"name":"calldataload","nativeSrc":"14669:12:55","nodeType":"YulIdentifier","src":"14669:12:55"},"nativeSrc":"14669:25:55","nodeType":"YulFunctionCall","src":"14669:25:55"},"variables":[{"name":"rel_offset_of_tail","nativeSrc":"14647:18:55","nodeType":"YulTypedName","src":"14647:18:55","type":""}]},{"body":{"nativeSrc":"14788:83:55","nodeType":"YulBlock","src":"14788:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_356d538aaf70fba12156cc466564b792649f8f3befb07b071c91142253e175ad","nativeSrc":"14790:77:55","nodeType":"YulIdentifier","src":"14790:77:55"},"nativeSrc":"14790:79:55","nodeType":"YulFunctionCall","src":"14790:79:55"},"nativeSrc":"14790:79:55","nodeType":"YulExpressionStatement","src":"14790:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nativeSrc":"14717:18:55","nodeType":"YulIdentifier","src":"14717:18:55"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"14745:12:55","nodeType":"YulIdentifier","src":"14745:12:55"},"nativeSrc":"14745:14:55","nodeType":"YulFunctionCall","src":"14745:14:55"},{"name":"base_ref","nativeSrc":"14761:8:55","nodeType":"YulIdentifier","src":"14761:8:55"}],"functionName":{"name":"sub","nativeSrc":"14741:3:55","nodeType":"YulIdentifier","src":"14741:3:55"},"nativeSrc":"14741:29:55","nodeType":"YulFunctionCall","src":"14741:29:55"},{"arguments":[{"kind":"number","nativeSrc":"14776:4:55","nodeType":"YulLiteral","src":"14776:4:55","type":"","value":"0x20"},{"kind":"number","nativeSrc":"14782:1:55","nodeType":"YulLiteral","src":"14782:1:55","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"14772:3:55","nodeType":"YulIdentifier","src":"14772:3:55"},"nativeSrc":"14772:12:55","nodeType":"YulFunctionCall","src":"14772:12:55"}],"functionName":{"name":"sub","nativeSrc":"14737:3:55","nodeType":"YulIdentifier","src":"14737:3:55"},"nativeSrc":"14737:48:55","nodeType":"YulFunctionCall","src":"14737:48:55"}],"functionName":{"name":"slt","nativeSrc":"14713:3:55","nodeType":"YulIdentifier","src":"14713:3:55"},"nativeSrc":"14713:73:55","nodeType":"YulFunctionCall","src":"14713:73:55"}],"functionName":{"name":"iszero","nativeSrc":"14706:6:55","nodeType":"YulIdentifier","src":"14706:6:55"},"nativeSrc":"14706:81:55","nodeType":"YulFunctionCall","src":"14706:81:55"},"nativeSrc":"14703:168:55","nodeType":"YulIf","src":"14703:168:55"},{"nativeSrc":"14880:41:55","nodeType":"YulAssignment","src":"14880:41:55","value":{"arguments":[{"name":"base_ref","nativeSrc":"14892:8:55","nodeType":"YulIdentifier","src":"14892:8:55"},{"name":"rel_offset_of_tail","nativeSrc":"14902:18:55","nodeType":"YulIdentifier","src":"14902:18:55"}],"functionName":{"name":"add","nativeSrc":"14888:3:55","nodeType":"YulIdentifier","src":"14888:3:55"},"nativeSrc":"14888:33:55","nodeType":"YulFunctionCall","src":"14888:33:55"},"variableNames":[{"name":"addr","nativeSrc":"14880:4:55","nodeType":"YulIdentifier","src":"14880:4:55"}]},{"nativeSrc":"14931:28:55","nodeType":"YulAssignment","src":"14931:28:55","value":{"arguments":[{"name":"addr","nativeSrc":"14954:4:55","nodeType":"YulIdentifier","src":"14954:4:55"}],"functionName":{"name":"calldataload","nativeSrc":"14941:12:55","nodeType":"YulIdentifier","src":"14941:12:55"},"nativeSrc":"14941:18:55","nodeType":"YulFunctionCall","src":"14941:18:55"},"variableNames":[{"name":"length","nativeSrc":"14931:6:55","nodeType":"YulIdentifier","src":"14931:6:55"}]},{"body":{"nativeSrc":"15002:83:55","nodeType":"YulBlock","src":"15002:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1e55d03107e9c4f1b5e21c76a16fba166a461117ab153bcce65e6a4ea8e5fc8a","nativeSrc":"15004:77:55","nodeType":"YulIdentifier","src":"15004:77:55"},"nativeSrc":"15004:79:55","nodeType":"YulFunctionCall","src":"15004:79:55"},"nativeSrc":"15004:79:55","nodeType":"YulExpressionStatement","src":"15004:79:55"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"14974:6:55","nodeType":"YulIdentifier","src":"14974:6:55"},{"kind":"number","nativeSrc":"14982:18:55","nodeType":"YulLiteral","src":"14982:18:55","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"14971:2:55","nodeType":"YulIdentifier","src":"14971:2:55"},"nativeSrc":"14971:30:55","nodeType":"YulFunctionCall","src":"14971:30:55"},"nativeSrc":"14968:117:55","nodeType":"YulIf","src":"14968:117:55"},{"nativeSrc":"15094:21:55","nodeType":"YulAssignment","src":"15094:21:55","value":{"arguments":[{"name":"addr","nativeSrc":"15106:4:55","nodeType":"YulIdentifier","src":"15106:4:55"},{"kind":"number","nativeSrc":"15112:2:55","nodeType":"YulLiteral","src":"15112:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"15102:3:55","nodeType":"YulIdentifier","src":"15102:3:55"},"nativeSrc":"15102:13:55","nodeType":"YulFunctionCall","src":"15102:13:55"},"variableNames":[{"name":"addr","nativeSrc":"15094:4:55","nodeType":"YulIdentifier","src":"15094:4:55"}]},{"body":{"nativeSrc":"15177:83:55","nodeType":"YulBlock","src":"15177:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_977805620ff29572292dee35f70b0f3f3f73d3fdd0e9f4d7a901c2e43ab18a2e","nativeSrc":"15179:77:55","nodeType":"YulIdentifier","src":"15179:77:55"},"nativeSrc":"15179:79:55","nodeType":"YulFunctionCall","src":"15179:79:55"},"nativeSrc":"15179:79:55","nodeType":"YulExpressionStatement","src":"15179:79:55"}]},"condition":{"arguments":[{"name":"addr","nativeSrc":"15131:4:55","nodeType":"YulIdentifier","src":"15131:4:55"},{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"15141:12:55","nodeType":"YulIdentifier","src":"15141:12:55"},"nativeSrc":"15141:14:55","nodeType":"YulFunctionCall","src":"15141:14:55"},{"arguments":[{"name":"length","nativeSrc":"15161:6:55","nodeType":"YulIdentifier","src":"15161:6:55"},{"kind":"number","nativeSrc":"15169:4:55","nodeType":"YulLiteral","src":"15169:4:55","type":"","value":"0x01"}],"functionName":{"name":"mul","nativeSrc":"15157:3:55","nodeType":"YulIdentifier","src":"15157:3:55"},"nativeSrc":"15157:17:55","nodeType":"YulFunctionCall","src":"15157:17:55"}],"functionName":{"name":"sub","nativeSrc":"15137:3:55","nodeType":"YulIdentifier","src":"15137:3:55"},"nativeSrc":"15137:38:55","nodeType":"YulFunctionCall","src":"15137:38:55"}],"functionName":{"name":"sgt","nativeSrc":"15127:3:55","nodeType":"YulIdentifier","src":"15127:3:55"},"nativeSrc":"15127:49:55","nodeType":"YulFunctionCall","src":"15127:49:55"},"nativeSrc":"15124:136:55","nodeType":"YulIf","src":"15124:136:55"}]},"name":"access_calldata_tail_t_bytes_calldata_ptr","nativeSrc":"14543:724:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"base_ref","nativeSrc":"14594:8:55","nodeType":"YulTypedName","src":"14594:8:55","type":""},{"name":"ptr_to_tail","nativeSrc":"14604:11:55","nodeType":"YulTypedName","src":"14604:11:55","type":""}],"returnVariables":[{"name":"addr","nativeSrc":"14620:4:55","nodeType":"YulTypedName","src":"14620:4:55","type":""},{"name":"length","nativeSrc":"14626:6:55","nodeType":"YulTypedName","src":"14626:6:55","type":""}],"src":"14543:724:55"},{"body":{"nativeSrc":"15386:34:55","nodeType":"YulBlock","src":"15386:34:55","statements":[{"nativeSrc":"15396:18:55","nodeType":"YulAssignment","src":"15396:18:55","value":{"name":"pos","nativeSrc":"15411:3:55","nodeType":"YulIdentifier","src":"15411:3:55"},"variableNames":[{"name":"updated_pos","nativeSrc":"15396:11:55","nodeType":"YulIdentifier","src":"15396:11:55"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"15273:147:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"15358:3:55","nodeType":"YulTypedName","src":"15358:3:55","type":""},{"name":"length","nativeSrc":"15363:6:55","nodeType":"YulTypedName","src":"15363:6:55","type":""}],"returnVariables":[{"name":"updated_pos","nativeSrc":"15374:11:55","nodeType":"YulTypedName","src":"15374:11:55","type":""}],"src":"15273:147:55"},{"body":{"nativeSrc":"15566:209:55","nodeType":"YulBlock","src":"15566:209:55","statements":[{"nativeSrc":"15576:95:55","nodeType":"YulAssignment","src":"15576:95:55","value":{"arguments":[{"name":"pos","nativeSrc":"15659:3:55","nodeType":"YulIdentifier","src":"15659:3:55"},{"name":"length","nativeSrc":"15664:6:55","nodeType":"YulIdentifier","src":"15664:6:55"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"15583:75:55","nodeType":"YulIdentifier","src":"15583:75:55"},"nativeSrc":"15583:88:55","nodeType":"YulFunctionCall","src":"15583:88:55"},"variableNames":[{"name":"pos","nativeSrc":"15576:3:55","nodeType":"YulIdentifier","src":"15576:3:55"}]},{"expression":{"arguments":[{"name":"start","nativeSrc":"15718:5:55","nodeType":"YulIdentifier","src":"15718:5:55"},{"name":"pos","nativeSrc":"15725:3:55","nodeType":"YulIdentifier","src":"15725:3:55"},{"name":"length","nativeSrc":"15730:6:55","nodeType":"YulIdentifier","src":"15730:6:55"}],"functionName":{"name":"copy_calldata_to_memory_with_cleanup","nativeSrc":"15681:36:55","nodeType":"YulIdentifier","src":"15681:36:55"},"nativeSrc":"15681:56:55","nodeType":"YulFunctionCall","src":"15681:56:55"},"nativeSrc":"15681:56:55","nodeType":"YulExpressionStatement","src":"15681:56:55"},{"nativeSrc":"15746:23:55","nodeType":"YulAssignment","src":"15746:23:55","value":{"arguments":[{"name":"pos","nativeSrc":"15757:3:55","nodeType":"YulIdentifier","src":"15757:3:55"},{"name":"length","nativeSrc":"15762:6:55","nodeType":"YulIdentifier","src":"15762:6:55"}],"functionName":{"name":"add","nativeSrc":"15753:3:55","nodeType":"YulIdentifier","src":"15753:3:55"},"nativeSrc":"15753:16:55","nodeType":"YulFunctionCall","src":"15753:16:55"},"variableNames":[{"name":"end","nativeSrc":"15746:3:55","nodeType":"YulIdentifier","src":"15746:3:55"}]}]},"name":"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"15448:327:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nativeSrc":"15539:5:55","nodeType":"YulTypedName","src":"15539:5:55","type":""},{"name":"length","nativeSrc":"15546:6:55","nodeType":"YulTypedName","src":"15546:6:55","type":""},{"name":"pos","nativeSrc":"15554:3:55","nodeType":"YulTypedName","src":"15554:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"15562:3:55","nodeType":"YulTypedName","src":"15562:3:55","type":""}],"src":"15448:327:55"},{"body":{"nativeSrc":"15925:147:55","nodeType":"YulBlock","src":"15925:147:55","statements":[{"nativeSrc":"15936:110:55","nodeType":"YulAssignment","src":"15936:110:55","value":{"arguments":[{"name":"value0","nativeSrc":"16025:6:55","nodeType":"YulIdentifier","src":"16025:6:55"},{"name":"value1","nativeSrc":"16033:6:55","nodeType":"YulIdentifier","src":"16033:6:55"},{"name":"pos","nativeSrc":"16042:3:55","nodeType":"YulIdentifier","src":"16042:3:55"}],"functionName":{"name":"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"15943:81:55","nodeType":"YulIdentifier","src":"15943:81:55"},"nativeSrc":"15943:103:55","nodeType":"YulFunctionCall","src":"15943:103:55"},"variableNames":[{"name":"pos","nativeSrc":"15936:3:55","nodeType":"YulIdentifier","src":"15936:3:55"}]},{"nativeSrc":"16056:10:55","nodeType":"YulAssignment","src":"16056:10:55","value":{"name":"pos","nativeSrc":"16063:3:55","nodeType":"YulIdentifier","src":"16063:3:55"},"variableNames":[{"name":"end","nativeSrc":"16056:3:55","nodeType":"YulIdentifier","src":"16056:3:55"}]}]},"name":"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"15781:291:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"15896:3:55","nodeType":"YulTypedName","src":"15896:3:55","type":""},{"name":"value1","nativeSrc":"15902:6:55","nodeType":"YulTypedName","src":"15902:6:55","type":""},{"name":"value0","nativeSrc":"15910:6:55","nodeType":"YulTypedName","src":"15910:6:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"15921:3:55","nodeType":"YulTypedName","src":"15921:3:55","type":""}],"src":"15781:291:55"},{"body":{"nativeSrc":"16232:288:55","nodeType":"YulBlock","src":"16232:288:55","statements":[{"nativeSrc":"16242:26:55","nodeType":"YulAssignment","src":"16242:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"16254:9:55","nodeType":"YulIdentifier","src":"16254:9:55"},{"kind":"number","nativeSrc":"16265:2:55","nodeType":"YulLiteral","src":"16265:2:55","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"16250:3:55","nodeType":"YulIdentifier","src":"16250:3:55"},"nativeSrc":"16250:18:55","nodeType":"YulFunctionCall","src":"16250:18:55"},"variableNames":[{"name":"tail","nativeSrc":"16242:4:55","nodeType":"YulIdentifier","src":"16242:4:55"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"16322:6:55","nodeType":"YulIdentifier","src":"16322:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"16335:9:55","nodeType":"YulIdentifier","src":"16335:9:55"},{"kind":"number","nativeSrc":"16346:1:55","nodeType":"YulLiteral","src":"16346:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"16331:3:55","nodeType":"YulIdentifier","src":"16331:3:55"},"nativeSrc":"16331:17:55","nodeType":"YulFunctionCall","src":"16331:17:55"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"16278:43:55","nodeType":"YulIdentifier","src":"16278:43:55"},"nativeSrc":"16278:71:55","nodeType":"YulFunctionCall","src":"16278:71:55"},"nativeSrc":"16278:71:55","nodeType":"YulExpressionStatement","src":"16278:71:55"},{"expression":{"arguments":[{"name":"value1","nativeSrc":"16403:6:55","nodeType":"YulIdentifier","src":"16403:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"16416:9:55","nodeType":"YulIdentifier","src":"16416:9:55"},{"kind":"number","nativeSrc":"16427:2:55","nodeType":"YulLiteral","src":"16427:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"16412:3:55","nodeType":"YulIdentifier","src":"16412:3:55"},"nativeSrc":"16412:18:55","nodeType":"YulFunctionCall","src":"16412:18:55"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"16359:43:55","nodeType":"YulIdentifier","src":"16359:43:55"},"nativeSrc":"16359:72:55","nodeType":"YulFunctionCall","src":"16359:72:55"},"nativeSrc":"16359:72:55","nodeType":"YulExpressionStatement","src":"16359:72:55"},{"expression":{"arguments":[{"name":"value2","nativeSrc":"16485:6:55","nodeType":"YulIdentifier","src":"16485:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"16498:9:55","nodeType":"YulIdentifier","src":"16498:9:55"},{"kind":"number","nativeSrc":"16509:2:55","nodeType":"YulLiteral","src":"16509:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"16494:3:55","nodeType":"YulIdentifier","src":"16494:3:55"},"nativeSrc":"16494:18:55","nodeType":"YulFunctionCall","src":"16494:18:55"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nativeSrc":"16441:43:55","nodeType":"YulIdentifier","src":"16441:43:55"},"nativeSrc":"16441:72:55","nodeType":"YulFunctionCall","src":"16441:72:55"},"nativeSrc":"16441:72:55","nodeType":"YulExpressionStatement","src":"16441:72:55"}]},"name":"abi_encode_tuple_t_uint256_t_uint256_t_bytes32__to_t_uint256_t_uint256_t_bytes32__fromStack_reversed","nativeSrc":"16078:442:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"16188:9:55","nodeType":"YulTypedName","src":"16188:9:55","type":""},{"name":"value2","nativeSrc":"16200:6:55","nodeType":"YulTypedName","src":"16200:6:55","type":""},{"name":"value1","nativeSrc":"16208:6:55","nodeType":"YulTypedName","src":"16208:6:55","type":""},{"name":"value0","nativeSrc":"16216:6:55","nodeType":"YulTypedName","src":"16216:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"16227:4:55","nodeType":"YulTypedName","src":"16227:4:55","type":""}],"src":"16078:442:55"},{"body":{"nativeSrc":"16589:80:55","nodeType":"YulBlock","src":"16589:80:55","statements":[{"nativeSrc":"16599:22:55","nodeType":"YulAssignment","src":"16599:22:55","value":{"arguments":[{"name":"offset","nativeSrc":"16614:6:55","nodeType":"YulIdentifier","src":"16614:6:55"}],"functionName":{"name":"mload","nativeSrc":"16608:5:55","nodeType":"YulIdentifier","src":"16608:5:55"},"nativeSrc":"16608:13:55","nodeType":"YulFunctionCall","src":"16608:13:55"},"variableNames":[{"name":"value","nativeSrc":"16599:5:55","nodeType":"YulIdentifier","src":"16599:5:55"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"16657:5:55","nodeType":"YulIdentifier","src":"16657:5:55"}],"functionName":{"name":"validator_revert_t_uint256","nativeSrc":"16630:26:55","nodeType":"YulIdentifier","src":"16630:26:55"},"nativeSrc":"16630:33:55","nodeType":"YulFunctionCall","src":"16630:33:55"},"nativeSrc":"16630:33:55","nodeType":"YulExpressionStatement","src":"16630:33:55"}]},"name":"abi_decode_t_uint256_fromMemory","nativeSrc":"16526:143:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"16567:6:55","nodeType":"YulTypedName","src":"16567:6:55","type":""},{"name":"end","nativeSrc":"16575:3:55","nodeType":"YulTypedName","src":"16575:3:55","type":""}],"returnVariables":[{"name":"value","nativeSrc":"16583:5:55","nodeType":"YulTypedName","src":"16583:5:55","type":""}],"src":"16526:143:55"},{"body":{"nativeSrc":"16752:274:55","nodeType":"YulBlock","src":"16752:274:55","statements":[{"body":{"nativeSrc":"16798:83:55","nodeType":"YulBlock","src":"16798:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"16800:77:55","nodeType":"YulIdentifier","src":"16800:77:55"},"nativeSrc":"16800:79:55","nodeType":"YulFunctionCall","src":"16800:79:55"},"nativeSrc":"16800:79:55","nodeType":"YulExpressionStatement","src":"16800:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"16773:7:55","nodeType":"YulIdentifier","src":"16773:7:55"},{"name":"headStart","nativeSrc":"16782:9:55","nodeType":"YulIdentifier","src":"16782:9:55"}],"functionName":{"name":"sub","nativeSrc":"16769:3:55","nodeType":"YulIdentifier","src":"16769:3:55"},"nativeSrc":"16769:23:55","nodeType":"YulFunctionCall","src":"16769:23:55"},{"kind":"number","nativeSrc":"16794:2:55","nodeType":"YulLiteral","src":"16794:2:55","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"16765:3:55","nodeType":"YulIdentifier","src":"16765:3:55"},"nativeSrc":"16765:32:55","nodeType":"YulFunctionCall","src":"16765:32:55"},"nativeSrc":"16762:119:55","nodeType":"YulIf","src":"16762:119:55"},{"nativeSrc":"16891:128:55","nodeType":"YulBlock","src":"16891:128:55","statements":[{"nativeSrc":"16906:15:55","nodeType":"YulVariableDeclaration","src":"16906:15:55","value":{"kind":"number","nativeSrc":"16920:1:55","nodeType":"YulLiteral","src":"16920:1:55","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"16910:6:55","nodeType":"YulTypedName","src":"16910:6:55","type":""}]},{"nativeSrc":"16935:74:55","nodeType":"YulAssignment","src":"16935:74:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"16981:9:55","nodeType":"YulIdentifier","src":"16981:9:55"},{"name":"offset","nativeSrc":"16992:6:55","nodeType":"YulIdentifier","src":"16992:6:55"}],"functionName":{"name":"add","nativeSrc":"16977:3:55","nodeType":"YulIdentifier","src":"16977:3:55"},"nativeSrc":"16977:22:55","nodeType":"YulFunctionCall","src":"16977:22:55"},{"name":"dataEnd","nativeSrc":"17001:7:55","nodeType":"YulIdentifier","src":"17001:7:55"}],"functionName":{"name":"abi_decode_t_uint256_fromMemory","nativeSrc":"16945:31:55","nodeType":"YulIdentifier","src":"16945:31:55"},"nativeSrc":"16945:64:55","nodeType":"YulFunctionCall","src":"16945:64:55"},"variableNames":[{"name":"value0","nativeSrc":"16935:6:55","nodeType":"YulIdentifier","src":"16935:6:55"}]}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nativeSrc":"16675:351:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"16722:9:55","nodeType":"YulTypedName","src":"16722:9:55","type":""},{"name":"dataEnd","nativeSrc":"16733:7:55","nodeType":"YulTypedName","src":"16733:7:55","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"16745:6:55","nodeType":"YulTypedName","src":"16745:6:55","type":""}],"src":"16675:351:55"},{"body":{"nativeSrc":"17130:124:55","nodeType":"YulBlock","src":"17130:124:55","statements":[{"nativeSrc":"17140:26:55","nodeType":"YulAssignment","src":"17140:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"17152:9:55","nodeType":"YulIdentifier","src":"17152:9:55"},{"kind":"number","nativeSrc":"17163:2:55","nodeType":"YulLiteral","src":"17163:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"17148:3:55","nodeType":"YulIdentifier","src":"17148:3:55"},"nativeSrc":"17148:18:55","nodeType":"YulFunctionCall","src":"17148:18:55"},"variableNames":[{"name":"tail","nativeSrc":"17140:4:55","nodeType":"YulIdentifier","src":"17140:4:55"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"17220:6:55","nodeType":"YulIdentifier","src":"17220:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"17233:9:55","nodeType":"YulIdentifier","src":"17233:9:55"},{"kind":"number","nativeSrc":"17244:1:55","nodeType":"YulLiteral","src":"17244:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"17229:3:55","nodeType":"YulIdentifier","src":"17229:3:55"},"nativeSrc":"17229:17:55","nodeType":"YulFunctionCall","src":"17229:17:55"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"17176:43:55","nodeType":"YulIdentifier","src":"17176:43:55"},"nativeSrc":"17176:71:55","nodeType":"YulFunctionCall","src":"17176:71:55"},"nativeSrc":"17176:71:55","nodeType":"YulExpressionStatement","src":"17176:71:55"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"17032:222:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"17102:9:55","nodeType":"YulTypedName","src":"17102:9:55","type":""},{"name":"value0","nativeSrc":"17114:6:55","nodeType":"YulTypedName","src":"17114:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"17125:4:55","nodeType":"YulTypedName","src":"17125:4:55","type":""}],"src":"17032:222:55"},{"body":{"nativeSrc":"17366:76:55","nodeType":"YulBlock","src":"17366:76:55","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"17388:6:55","nodeType":"YulIdentifier","src":"17388:6:55"},{"kind":"number","nativeSrc":"17396:1:55","nodeType":"YulLiteral","src":"17396:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"17384:3:55","nodeType":"YulIdentifier","src":"17384:3:55"},"nativeSrc":"17384:14:55","nodeType":"YulFunctionCall","src":"17384:14:55"},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","kind":"string","nativeSrc":"17400:34:55","nodeType":"YulLiteral","src":"17400:34:55","type":"","value":"Ownable: caller is not the owner"}],"functionName":{"name":"mstore","nativeSrc":"17377:6:55","nodeType":"YulIdentifier","src":"17377:6:55"},"nativeSrc":"17377:58:55","nodeType":"YulFunctionCall","src":"17377:58:55"},"nativeSrc":"17377:58:55","nodeType":"YulExpressionStatement","src":"17377:58:55"}]},"name":"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","nativeSrc":"17260:182:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"17358:6:55","nodeType":"YulTypedName","src":"17358:6:55","type":""}],"src":"17260:182:55"},{"body":{"nativeSrc":"17594:220:55","nodeType":"YulBlock","src":"17594:220:55","statements":[{"nativeSrc":"17604:74:55","nodeType":"YulAssignment","src":"17604:74:55","value":{"arguments":[{"name":"pos","nativeSrc":"17670:3:55","nodeType":"YulIdentifier","src":"17670:3:55"},{"kind":"number","nativeSrc":"17675:2:55","nodeType":"YulLiteral","src":"17675:2:55","type":"","value":"32"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"17611:58:55","nodeType":"YulIdentifier","src":"17611:58:55"},"nativeSrc":"17611:67:55","nodeType":"YulFunctionCall","src":"17611:67:55"},"variableNames":[{"name":"pos","nativeSrc":"17604:3:55","nodeType":"YulIdentifier","src":"17604:3:55"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"17776:3:55","nodeType":"YulIdentifier","src":"17776:3:55"}],"functionName":{"name":"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","nativeSrc":"17687:88:55","nodeType":"YulIdentifier","src":"17687:88:55"},"nativeSrc":"17687:93:55","nodeType":"YulFunctionCall","src":"17687:93:55"},"nativeSrc":"17687:93:55","nodeType":"YulExpressionStatement","src":"17687:93:55"},{"nativeSrc":"17789:19:55","nodeType":"YulAssignment","src":"17789:19:55","value":{"arguments":[{"name":"pos","nativeSrc":"17800:3:55","nodeType":"YulIdentifier","src":"17800:3:55"},{"kind":"number","nativeSrc":"17805:2:55","nodeType":"YulLiteral","src":"17805:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"17796:3:55","nodeType":"YulIdentifier","src":"17796:3:55"},"nativeSrc":"17796:12:55","nodeType":"YulFunctionCall","src":"17796:12:55"},"variableNames":[{"name":"end","nativeSrc":"17789:3:55","nodeType":"YulIdentifier","src":"17789:3:55"}]}]},"name":"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack","nativeSrc":"17448:366:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"17582:3:55","nodeType":"YulTypedName","src":"17582:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"17590:3:55","nodeType":"YulTypedName","src":"17590:3:55","type":""}],"src":"17448:366:55"},{"body":{"nativeSrc":"17991:248:55","nodeType":"YulBlock","src":"17991:248:55","statements":[{"nativeSrc":"18001:26:55","nodeType":"YulAssignment","src":"18001:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"18013:9:55","nodeType":"YulIdentifier","src":"18013:9:55"},{"kind":"number","nativeSrc":"18024:2:55","nodeType":"YulLiteral","src":"18024:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"18009:3:55","nodeType":"YulIdentifier","src":"18009:3:55"},"nativeSrc":"18009:18:55","nodeType":"YulFunctionCall","src":"18009:18:55"},"variableNames":[{"name":"tail","nativeSrc":"18001:4:55","nodeType":"YulIdentifier","src":"18001:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"18048:9:55","nodeType":"YulIdentifier","src":"18048:9:55"},{"kind":"number","nativeSrc":"18059:1:55","nodeType":"YulLiteral","src":"18059:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"18044:3:55","nodeType":"YulIdentifier","src":"18044:3:55"},"nativeSrc":"18044:17:55","nodeType":"YulFunctionCall","src":"18044:17:55"},{"arguments":[{"name":"tail","nativeSrc":"18067:4:55","nodeType":"YulIdentifier","src":"18067:4:55"},{"name":"headStart","nativeSrc":"18073:9:55","nodeType":"YulIdentifier","src":"18073:9:55"}],"functionName":{"name":"sub","nativeSrc":"18063:3:55","nodeType":"YulIdentifier","src":"18063:3:55"},"nativeSrc":"18063:20:55","nodeType":"YulFunctionCall","src":"18063:20:55"}],"functionName":{"name":"mstore","nativeSrc":"18037:6:55","nodeType":"YulIdentifier","src":"18037:6:55"},"nativeSrc":"18037:47:55","nodeType":"YulFunctionCall","src":"18037:47:55"},"nativeSrc":"18037:47:55","nodeType":"YulExpressionStatement","src":"18037:47:55"},{"nativeSrc":"18093:139:55","nodeType":"YulAssignment","src":"18093:139:55","value":{"arguments":[{"name":"tail","nativeSrc":"18227:4:55","nodeType":"YulIdentifier","src":"18227:4:55"}],"functionName":{"name":"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack","nativeSrc":"18101:124:55","nodeType":"YulIdentifier","src":"18101:124:55"},"nativeSrc":"18101:131:55","nodeType":"YulFunctionCall","src":"18101:131:55"},"variableNames":[{"name":"tail","nativeSrc":"18093:4:55","nodeType":"YulIdentifier","src":"18093:4:55"}]}]},"name":"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"17820:419:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"17971:9:55","nodeType":"YulTypedName","src":"17971:9:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"17986:4:55","nodeType":"YulTypedName","src":"17986:4:55","type":""}],"src":"17820:419:55"},{"body":{"nativeSrc":"18273:152:55","nodeType":"YulBlock","src":"18273:152:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"18290:1:55","nodeType":"YulLiteral","src":"18290:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"18293:77:55","nodeType":"YulLiteral","src":"18293:77:55","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"18283:6:55","nodeType":"YulIdentifier","src":"18283:6:55"},"nativeSrc":"18283:88:55","nodeType":"YulFunctionCall","src":"18283:88:55"},"nativeSrc":"18283:88:55","nodeType":"YulExpressionStatement","src":"18283:88:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"18387:1:55","nodeType":"YulLiteral","src":"18387:1:55","type":"","value":"4"},{"kind":"number","nativeSrc":"18390:4:55","nodeType":"YulLiteral","src":"18390:4:55","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"18380:6:55","nodeType":"YulIdentifier","src":"18380:6:55"},"nativeSrc":"18380:15:55","nodeType":"YulFunctionCall","src":"18380:15:55"},"nativeSrc":"18380:15:55","nodeType":"YulExpressionStatement","src":"18380:15:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"18411:1:55","nodeType":"YulLiteral","src":"18411:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"18414:4:55","nodeType":"YulLiteral","src":"18414:4:55","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"18404:6:55","nodeType":"YulIdentifier","src":"18404:6:55"},"nativeSrc":"18404:15:55","nodeType":"YulFunctionCall","src":"18404:15:55"},"nativeSrc":"18404:15:55","nodeType":"YulExpressionStatement","src":"18404:15:55"}]},"name":"panic_error_0x22","nativeSrc":"18245:180:55","nodeType":"YulFunctionDefinition","src":"18245:180:55"},{"body":{"nativeSrc":"18482:269:55","nodeType":"YulBlock","src":"18482:269:55","statements":[{"nativeSrc":"18492:22:55","nodeType":"YulAssignment","src":"18492:22:55","value":{"arguments":[{"name":"data","nativeSrc":"18506:4:55","nodeType":"YulIdentifier","src":"18506:4:55"},{"kind":"number","nativeSrc":"18512:1:55","nodeType":"YulLiteral","src":"18512:1:55","type":"","value":"2"}],"functionName":{"name":"div","nativeSrc":"18502:3:55","nodeType":"YulIdentifier","src":"18502:3:55"},"nativeSrc":"18502:12:55","nodeType":"YulFunctionCall","src":"18502:12:55"},"variableNames":[{"name":"length","nativeSrc":"18492:6:55","nodeType":"YulIdentifier","src":"18492:6:55"}]},{"nativeSrc":"18523:38:55","nodeType":"YulVariableDeclaration","src":"18523:38:55","value":{"arguments":[{"name":"data","nativeSrc":"18553:4:55","nodeType":"YulIdentifier","src":"18553:4:55"},{"kind":"number","nativeSrc":"18559:1:55","nodeType":"YulLiteral","src":"18559:1:55","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"18549:3:55","nodeType":"YulIdentifier","src":"18549:3:55"},"nativeSrc":"18549:12:55","nodeType":"YulFunctionCall","src":"18549:12:55"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"18527:18:55","nodeType":"YulTypedName","src":"18527:18:55","type":""}]},{"body":{"nativeSrc":"18600:51:55","nodeType":"YulBlock","src":"18600:51:55","statements":[{"nativeSrc":"18614:27:55","nodeType":"YulAssignment","src":"18614:27:55","value":{"arguments":[{"name":"length","nativeSrc":"18628:6:55","nodeType":"YulIdentifier","src":"18628:6:55"},{"kind":"number","nativeSrc":"18636:4:55","nodeType":"YulLiteral","src":"18636:4:55","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"18624:3:55","nodeType":"YulIdentifier","src":"18624:3:55"},"nativeSrc":"18624:17:55","nodeType":"YulFunctionCall","src":"18624:17:55"},"variableNames":[{"name":"length","nativeSrc":"18614:6:55","nodeType":"YulIdentifier","src":"18614:6:55"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"18580:18:55","nodeType":"YulIdentifier","src":"18580:18:55"}],"functionName":{"name":"iszero","nativeSrc":"18573:6:55","nodeType":"YulIdentifier","src":"18573:6:55"},"nativeSrc":"18573:26:55","nodeType":"YulFunctionCall","src":"18573:26:55"},"nativeSrc":"18570:81:55","nodeType":"YulIf","src":"18570:81:55"},{"body":{"nativeSrc":"18703:42:55","nodeType":"YulBlock","src":"18703:42:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nativeSrc":"18717:16:55","nodeType":"YulIdentifier","src":"18717:16:55"},"nativeSrc":"18717:18:55","nodeType":"YulFunctionCall","src":"18717:18:55"},"nativeSrc":"18717:18:55","nodeType":"YulExpressionStatement","src":"18717:18:55"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"18667:18:55","nodeType":"YulIdentifier","src":"18667:18:55"},{"arguments":[{"name":"length","nativeSrc":"18690:6:55","nodeType":"YulIdentifier","src":"18690:6:55"},{"kind":"number","nativeSrc":"18698:2:55","nodeType":"YulLiteral","src":"18698:2:55","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"18687:2:55","nodeType":"YulIdentifier","src":"18687:2:55"},"nativeSrc":"18687:14:55","nodeType":"YulFunctionCall","src":"18687:14:55"}],"functionName":{"name":"eq","nativeSrc":"18664:2:55","nodeType":"YulIdentifier","src":"18664:2:55"},"nativeSrc":"18664:38:55","nodeType":"YulFunctionCall","src":"18664:38:55"},"nativeSrc":"18661:84:55","nodeType":"YulIf","src":"18661:84:55"}]},"name":"extract_byte_array_length","nativeSrc":"18431:320:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"18466:4:55","nodeType":"YulTypedName","src":"18466:4:55","type":""}],"returnVariables":[{"name":"length","nativeSrc":"18475:6:55","nodeType":"YulTypedName","src":"18475:6:55","type":""}],"src":"18431:320:55"},{"body":{"nativeSrc":"18863:75:55","nodeType":"YulBlock","src":"18863:75:55","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"18885:6:55","nodeType":"YulIdentifier","src":"18885:6:55"},{"kind":"number","nativeSrc":"18893:1:55","nodeType":"YulLiteral","src":"18893:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"18881:3:55","nodeType":"YulIdentifier","src":"18881:3:55"},"nativeSrc":"18881:14:55","nodeType":"YulFunctionCall","src":"18881:14:55"},{"hexValue":"5265656e7472616e637947756172643a207265656e7472616e742063616c6c","kind":"string","nativeSrc":"18897:33:55","nodeType":"YulLiteral","src":"18897:33:55","type":"","value":"ReentrancyGuard: reentrant call"}],"functionName":{"name":"mstore","nativeSrc":"18874:6:55","nodeType":"YulIdentifier","src":"18874:6:55"},"nativeSrc":"18874:57:55","nodeType":"YulFunctionCall","src":"18874:57:55"},"nativeSrc":"18874:57:55","nodeType":"YulExpressionStatement","src":"18874:57:55"}]},"name":"store_literal_in_memory_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619","nativeSrc":"18757:181:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"18855:6:55","nodeType":"YulTypedName","src":"18855:6:55","type":""}],"src":"18757:181:55"},{"body":{"nativeSrc":"19090:220:55","nodeType":"YulBlock","src":"19090:220:55","statements":[{"nativeSrc":"19100:74:55","nodeType":"YulAssignment","src":"19100:74:55","value":{"arguments":[{"name":"pos","nativeSrc":"19166:3:55","nodeType":"YulIdentifier","src":"19166:3:55"},{"kind":"number","nativeSrc":"19171:2:55","nodeType":"YulLiteral","src":"19171:2:55","type":"","value":"31"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"19107:58:55","nodeType":"YulIdentifier","src":"19107:58:55"},"nativeSrc":"19107:67:55","nodeType":"YulFunctionCall","src":"19107:67:55"},"variableNames":[{"name":"pos","nativeSrc":"19100:3:55","nodeType":"YulIdentifier","src":"19100:3:55"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"19272:3:55","nodeType":"YulIdentifier","src":"19272:3:55"}],"functionName":{"name":"store_literal_in_memory_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619","nativeSrc":"19183:88:55","nodeType":"YulIdentifier","src":"19183:88:55"},"nativeSrc":"19183:93:55","nodeType":"YulFunctionCall","src":"19183:93:55"},"nativeSrc":"19183:93:55","nodeType":"YulExpressionStatement","src":"19183:93:55"},{"nativeSrc":"19285:19:55","nodeType":"YulAssignment","src":"19285:19:55","value":{"arguments":[{"name":"pos","nativeSrc":"19296:3:55","nodeType":"YulIdentifier","src":"19296:3:55"},{"kind":"number","nativeSrc":"19301:2:55","nodeType":"YulLiteral","src":"19301:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"19292:3:55","nodeType":"YulIdentifier","src":"19292:3:55"},"nativeSrc":"19292:12:55","nodeType":"YulFunctionCall","src":"19292:12:55"},"variableNames":[{"name":"end","nativeSrc":"19285:3:55","nodeType":"YulIdentifier","src":"19285:3:55"}]}]},"name":"abi_encode_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619_to_t_string_memory_ptr_fromStack","nativeSrc":"18944:366:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"19078:3:55","nodeType":"YulTypedName","src":"19078:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"19086:3:55","nodeType":"YulTypedName","src":"19086:3:55","type":""}],"src":"18944:366:55"},{"body":{"nativeSrc":"19487:248:55","nodeType":"YulBlock","src":"19487:248:55","statements":[{"nativeSrc":"19497:26:55","nodeType":"YulAssignment","src":"19497:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"19509:9:55","nodeType":"YulIdentifier","src":"19509:9:55"},{"kind":"number","nativeSrc":"19520:2:55","nodeType":"YulLiteral","src":"19520:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"19505:3:55","nodeType":"YulIdentifier","src":"19505:3:55"},"nativeSrc":"19505:18:55","nodeType":"YulFunctionCall","src":"19505:18:55"},"variableNames":[{"name":"tail","nativeSrc":"19497:4:55","nodeType":"YulIdentifier","src":"19497:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"19544:9:55","nodeType":"YulIdentifier","src":"19544:9:55"},{"kind":"number","nativeSrc":"19555:1:55","nodeType":"YulLiteral","src":"19555:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"19540:3:55","nodeType":"YulIdentifier","src":"19540:3:55"},"nativeSrc":"19540:17:55","nodeType":"YulFunctionCall","src":"19540:17:55"},{"arguments":[{"name":"tail","nativeSrc":"19563:4:55","nodeType":"YulIdentifier","src":"19563:4:55"},{"name":"headStart","nativeSrc":"19569:9:55","nodeType":"YulIdentifier","src":"19569:9:55"}],"functionName":{"name":"sub","nativeSrc":"19559:3:55","nodeType":"YulIdentifier","src":"19559:3:55"},"nativeSrc":"19559:20:55","nodeType":"YulFunctionCall","src":"19559:20:55"}],"functionName":{"name":"mstore","nativeSrc":"19533:6:55","nodeType":"YulIdentifier","src":"19533:6:55"},"nativeSrc":"19533:47:55","nodeType":"YulFunctionCall","src":"19533:47:55"},"nativeSrc":"19533:47:55","nodeType":"YulExpressionStatement","src":"19533:47:55"},{"nativeSrc":"19589:139:55","nodeType":"YulAssignment","src":"19589:139:55","value":{"arguments":[{"name":"tail","nativeSrc":"19723:4:55","nodeType":"YulIdentifier","src":"19723:4:55"}],"functionName":{"name":"abi_encode_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619_to_t_string_memory_ptr_fromStack","nativeSrc":"19597:124:55","nodeType":"YulIdentifier","src":"19597:124:55"},"nativeSrc":"19597:131:55","nodeType":"YulFunctionCall","src":"19597:131:55"},"variableNames":[{"name":"tail","nativeSrc":"19589:4:55","nodeType":"YulIdentifier","src":"19589:4:55"}]}]},"name":"abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"19316:419:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"19467:9:55","nodeType":"YulTypedName","src":"19467:9:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"19482:4:55","nodeType":"YulTypedName","src":"19482:4:55","type":""}],"src":"19316:419:55"},{"body":{"nativeSrc":"19815:40:55","nodeType":"YulBlock","src":"19815:40:55","statements":[{"nativeSrc":"19826:22:55","nodeType":"YulAssignment","src":"19826:22:55","value":{"arguments":[{"name":"value","nativeSrc":"19842:5:55","nodeType":"YulIdentifier","src":"19842:5:55"}],"functionName":{"name":"mload","nativeSrc":"19836:5:55","nodeType":"YulIdentifier","src":"19836:5:55"},"nativeSrc":"19836:12:55","nodeType":"YulFunctionCall","src":"19836:12:55"},"variableNames":[{"name":"length","nativeSrc":"19826:6:55","nodeType":"YulIdentifier","src":"19826:6:55"}]}]},"name":"array_length_t_array$_t_bytes32_$dyn_memory_ptr","nativeSrc":"19741:114:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"19798:5:55","nodeType":"YulTypedName","src":"19798:5:55","type":""}],"returnVariables":[{"name":"length","nativeSrc":"19808:6:55","nodeType":"YulTypedName","src":"19808:6:55","type":""}],"src":"19741:114:55"},{"body":{"nativeSrc":"19990:34:55","nodeType":"YulBlock","src":"19990:34:55","statements":[{"nativeSrc":"20000:18:55","nodeType":"YulAssignment","src":"20000:18:55","value":{"name":"pos","nativeSrc":"20015:3:55","nodeType":"YulIdentifier","src":"20015:3:55"},"variableNames":[{"name":"updated_pos","nativeSrc":"20000:11:55","nodeType":"YulIdentifier","src":"20000:11:55"}]}]},"name":"array_storeLengthForEncoding_t_array$_t_bytes32_$dyn_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"19861:163:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"19962:3:55","nodeType":"YulTypedName","src":"19962:3:55","type":""},{"name":"length","nativeSrc":"19967:6:55","nodeType":"YulTypedName","src":"19967:6:55","type":""}],"returnVariables":[{"name":"updated_pos","nativeSrc":"19978:11:55","nodeType":"YulTypedName","src":"19978:11:55","type":""}],"src":"19861:163:55"},{"body":{"nativeSrc":"20102:60:55","nodeType":"YulBlock","src":"20102:60:55","statements":[{"nativeSrc":"20112:11:55","nodeType":"YulAssignment","src":"20112:11:55","value":{"name":"ptr","nativeSrc":"20120:3:55","nodeType":"YulIdentifier","src":"20120:3:55"},"variableNames":[{"name":"data","nativeSrc":"20112:4:55","nodeType":"YulIdentifier","src":"20112:4:55"}]},{"nativeSrc":"20133:22:55","nodeType":"YulAssignment","src":"20133:22:55","value":{"arguments":[{"name":"ptr","nativeSrc":"20145:3:55","nodeType":"YulIdentifier","src":"20145:3:55"},{"kind":"number","nativeSrc":"20150:4:55","nodeType":"YulLiteral","src":"20150:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"20141:3:55","nodeType":"YulIdentifier","src":"20141:3:55"},"nativeSrc":"20141:14:55","nodeType":"YulFunctionCall","src":"20141:14:55"},"variableNames":[{"name":"data","nativeSrc":"20133:4:55","nodeType":"YulIdentifier","src":"20133:4:55"}]}]},"name":"array_dataslot_t_array$_t_bytes32_$dyn_memory_ptr","nativeSrc":"20030:132:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"20089:3:55","nodeType":"YulTypedName","src":"20089:3:55","type":""}],"returnVariables":[{"name":"data","nativeSrc":"20097:4:55","nodeType":"YulTypedName","src":"20097:4:55","type":""}],"src":"20030:132:55"},{"body":{"nativeSrc":"20231:53:55","nodeType":"YulBlock","src":"20231:53:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"20248:3:55","nodeType":"YulIdentifier","src":"20248:3:55"},{"arguments":[{"name":"value","nativeSrc":"20271:5:55","nodeType":"YulIdentifier","src":"20271:5:55"}],"functionName":{"name":"cleanup_t_bytes32","nativeSrc":"20253:17:55","nodeType":"YulIdentifier","src":"20253:17:55"},"nativeSrc":"20253:24:55","nodeType":"YulFunctionCall","src":"20253:24:55"}],"functionName":{"name":"mstore","nativeSrc":"20241:6:55","nodeType":"YulIdentifier","src":"20241:6:55"},"nativeSrc":"20241:37:55","nodeType":"YulFunctionCall","src":"20241:37:55"},"nativeSrc":"20241:37:55","nodeType":"YulExpressionStatement","src":"20241:37:55"}]},"name":"abi_encode_t_bytes32_to_t_bytes32_inplace","nativeSrc":"20168:116:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"20219:5:55","nodeType":"YulTypedName","src":"20219:5:55","type":""},{"name":"pos","nativeSrc":"20226:3:55","nodeType":"YulTypedName","src":"20226:3:55","type":""}],"src":"20168:116:55"},{"body":{"nativeSrc":"20378:107:55","nodeType":"YulBlock","src":"20378:107:55","statements":[{"expression":{"arguments":[{"name":"value0","nativeSrc":"20430:6:55","nodeType":"YulIdentifier","src":"20430:6:55"},{"name":"pos","nativeSrc":"20438:3:55","nodeType":"YulIdentifier","src":"20438:3:55"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_inplace","nativeSrc":"20388:41:55","nodeType":"YulIdentifier","src":"20388:41:55"},"nativeSrc":"20388:54:55","nodeType":"YulFunctionCall","src":"20388:54:55"},"nativeSrc":"20388:54:55","nodeType":"YulExpressionStatement","src":"20388:54:55"},{"nativeSrc":"20451:28:55","nodeType":"YulAssignment","src":"20451:28:55","value":{"arguments":[{"name":"pos","nativeSrc":"20469:3:55","nodeType":"YulIdentifier","src":"20469:3:55"},{"kind":"number","nativeSrc":"20474:4:55","nodeType":"YulLiteral","src":"20474:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"20465:3:55","nodeType":"YulIdentifier","src":"20465:3:55"},"nativeSrc":"20465:14:55","nodeType":"YulFunctionCall","src":"20465:14:55"},"variableNames":[{"name":"updatedPos","nativeSrc":"20451:10:55","nodeType":"YulIdentifier","src":"20451:10:55"}]}]},"name":"abi_encodeUpdatedPos_t_bytes32_to_t_bytes32_inplace","nativeSrc":"20290:195:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nativeSrc":"20351:6:55","nodeType":"YulTypedName","src":"20351:6:55","type":""},{"name":"pos","nativeSrc":"20359:3:55","nodeType":"YulTypedName","src":"20359:3:55","type":""}],"returnVariables":[{"name":"updatedPos","nativeSrc":"20367:10:55","nodeType":"YulTypedName","src":"20367:10:55","type":""}],"src":"20290:195:55"},{"body":{"nativeSrc":"20566:38:55","nodeType":"YulBlock","src":"20566:38:55","statements":[{"nativeSrc":"20576:22:55","nodeType":"YulAssignment","src":"20576:22:55","value":{"arguments":[{"name":"ptr","nativeSrc":"20588:3:55","nodeType":"YulIdentifier","src":"20588:3:55"},{"kind":"number","nativeSrc":"20593:4:55","nodeType":"YulLiteral","src":"20593:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"20584:3:55","nodeType":"YulIdentifier","src":"20584:3:55"},"nativeSrc":"20584:14:55","nodeType":"YulFunctionCall","src":"20584:14:55"},"variableNames":[{"name":"next","nativeSrc":"20576:4:55","nodeType":"YulIdentifier","src":"20576:4:55"}]}]},"name":"array_nextElement_t_array$_t_bytes32_$dyn_memory_ptr","nativeSrc":"20491:113:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"20553:3:55","nodeType":"YulTypedName","src":"20553:3:55","type":""}],"returnVariables":[{"name":"next","nativeSrc":"20561:4:55","nodeType":"YulTypedName","src":"20561:4:55","type":""}],"src":"20491:113:55"},{"body":{"nativeSrc":"20782:634:55","nodeType":"YulBlock","src":"20782:634:55","statements":[{"nativeSrc":"20792:68:55","nodeType":"YulVariableDeclaration","src":"20792:68:55","value":{"arguments":[{"name":"value","nativeSrc":"20854:5:55","nodeType":"YulIdentifier","src":"20854:5:55"}],"functionName":{"name":"array_length_t_array$_t_bytes32_$dyn_memory_ptr","nativeSrc":"20806:47:55","nodeType":"YulIdentifier","src":"20806:47:55"},"nativeSrc":"20806:54:55","nodeType":"YulFunctionCall","src":"20806:54:55"},"variables":[{"name":"length","nativeSrc":"20796:6:55","nodeType":"YulTypedName","src":"20796:6:55","type":""}]},{"nativeSrc":"20869:111:55","nodeType":"YulAssignment","src":"20869:111:55","value":{"arguments":[{"name":"pos","nativeSrc":"20968:3:55","nodeType":"YulIdentifier","src":"20968:3:55"},{"name":"length","nativeSrc":"20973:6:55","nodeType":"YulIdentifier","src":"20973:6:55"}],"functionName":{"name":"array_storeLengthForEncoding_t_array$_t_bytes32_$dyn_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"20876:91:55","nodeType":"YulIdentifier","src":"20876:91:55"},"nativeSrc":"20876:104:55","nodeType":"YulFunctionCall","src":"20876:104:55"},"variableNames":[{"name":"pos","nativeSrc":"20869:3:55","nodeType":"YulIdentifier","src":"20869:3:55"}]},{"nativeSrc":"20989:71:55","nodeType":"YulVariableDeclaration","src":"20989:71:55","value":{"arguments":[{"name":"value","nativeSrc":"21054:5:55","nodeType":"YulIdentifier","src":"21054:5:55"}],"functionName":{"name":"array_dataslot_t_array$_t_bytes32_$dyn_memory_ptr","nativeSrc":"21004:49:55","nodeType":"YulIdentifier","src":"21004:49:55"},"nativeSrc":"21004:56:55","nodeType":"YulFunctionCall","src":"21004:56:55"},"variables":[{"name":"baseRef","nativeSrc":"20993:7:55","nodeType":"YulTypedName","src":"20993:7:55","type":""}]},{"nativeSrc":"21069:21:55","nodeType":"YulVariableDeclaration","src":"21069:21:55","value":{"name":"baseRef","nativeSrc":"21083:7:55","nodeType":"YulIdentifier","src":"21083:7:55"},"variables":[{"name":"srcPtr","nativeSrc":"21073:6:55","nodeType":"YulTypedName","src":"21073:6:55","type":""}]},{"body":{"nativeSrc":"21159:232:55","nodeType":"YulBlock","src":"21159:232:55","statements":[{"nativeSrc":"21173:34:55","nodeType":"YulVariableDeclaration","src":"21173:34:55","value":{"arguments":[{"name":"srcPtr","nativeSrc":"21200:6:55","nodeType":"YulIdentifier","src":"21200:6:55"}],"functionName":{"name":"mload","nativeSrc":"21194:5:55","nodeType":"YulIdentifier","src":"21194:5:55"},"nativeSrc":"21194:13:55","nodeType":"YulFunctionCall","src":"21194:13:55"},"variables":[{"name":"elementValue0","nativeSrc":"21177:13:55","nodeType":"YulTypedName","src":"21177:13:55","type":""}]},{"nativeSrc":"21220:78:55","nodeType":"YulAssignment","src":"21220:78:55","value":{"arguments":[{"name":"elementValue0","nativeSrc":"21279:13:55","nodeType":"YulIdentifier","src":"21279:13:55"},{"name":"pos","nativeSrc":"21294:3:55","nodeType":"YulIdentifier","src":"21294:3:55"}],"functionName":{"name":"abi_encodeUpdatedPos_t_bytes32_to_t_bytes32_inplace","nativeSrc":"21227:51:55","nodeType":"YulIdentifier","src":"21227:51:55"},"nativeSrc":"21227:71:55","nodeType":"YulFunctionCall","src":"21227:71:55"},"variableNames":[{"name":"pos","nativeSrc":"21220:3:55","nodeType":"YulIdentifier","src":"21220:3:55"}]},{"nativeSrc":"21311:70:55","nodeType":"YulAssignment","src":"21311:70:55","value":{"arguments":[{"name":"srcPtr","nativeSrc":"21374:6:55","nodeType":"YulIdentifier","src":"21374:6:55"}],"functionName":{"name":"array_nextElement_t_array$_t_bytes32_$dyn_memory_ptr","nativeSrc":"21321:52:55","nodeType":"YulIdentifier","src":"21321:52:55"},"nativeSrc":"21321:60:55","nodeType":"YulFunctionCall","src":"21321:60:55"},"variableNames":[{"name":"srcPtr","nativeSrc":"21311:6:55","nodeType":"YulIdentifier","src":"21311:6:55"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"21121:1:55","nodeType":"YulIdentifier","src":"21121:1:55"},{"name":"length","nativeSrc":"21124:6:55","nodeType":"YulIdentifier","src":"21124:6:55"}],"functionName":{"name":"lt","nativeSrc":"21118:2:55","nodeType":"YulIdentifier","src":"21118:2:55"},"nativeSrc":"21118:13:55","nodeType":"YulFunctionCall","src":"21118:13:55"},"nativeSrc":"21099:292:55","nodeType":"YulForLoop","post":{"nativeSrc":"21132:18:55","nodeType":"YulBlock","src":"21132:18:55","statements":[{"nativeSrc":"21134:14:55","nodeType":"YulAssignment","src":"21134:14:55","value":{"arguments":[{"name":"i","nativeSrc":"21143:1:55","nodeType":"YulIdentifier","src":"21143:1:55"},{"kind":"number","nativeSrc":"21146:1:55","nodeType":"YulLiteral","src":"21146:1:55","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"21139:3:55","nodeType":"YulIdentifier","src":"21139:3:55"},"nativeSrc":"21139:9:55","nodeType":"YulFunctionCall","src":"21139:9:55"},"variableNames":[{"name":"i","nativeSrc":"21134:1:55","nodeType":"YulIdentifier","src":"21134:1:55"}]}]},"pre":{"nativeSrc":"21103:14:55","nodeType":"YulBlock","src":"21103:14:55","statements":[{"nativeSrc":"21105:10:55","nodeType":"YulVariableDeclaration","src":"21105:10:55","value":{"kind":"number","nativeSrc":"21114:1:55","nodeType":"YulLiteral","src":"21114:1:55","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"21109:1:55","nodeType":"YulTypedName","src":"21109:1:55","type":""}]}]},"src":"21099:292:55"},{"nativeSrc":"21400:10:55","nodeType":"YulAssignment","src":"21400:10:55","value":{"name":"pos","nativeSrc":"21407:3:55","nodeType":"YulIdentifier","src":"21407:3:55"},"variableNames":[{"name":"end","nativeSrc":"21400:3:55","nodeType":"YulIdentifier","src":"21400:3:55"}]}]},"name":"abi_encode_t_array$_t_bytes32_$dyn_memory_ptr_to_t_array$_t_bytes32_$dyn_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"20640:776:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"20761:5:55","nodeType":"YulTypedName","src":"20761:5:55","type":""},{"name":"pos","nativeSrc":"20768:3:55","nodeType":"YulTypedName","src":"20768:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"20777:3:55","nodeType":"YulTypedName","src":"20777:3:55","type":""}],"src":"20640:776:55"},{"body":{"nativeSrc":"21588:169:55","nodeType":"YulBlock","src":"21588:169:55","statements":[{"nativeSrc":"21599:132:55","nodeType":"YulAssignment","src":"21599:132:55","value":{"arguments":[{"name":"value0","nativeSrc":"21718:6:55","nodeType":"YulIdentifier","src":"21718:6:55"},{"name":"pos","nativeSrc":"21727:3:55","nodeType":"YulIdentifier","src":"21727:3:55"}],"functionName":{"name":"abi_encode_t_array$_t_bytes32_$dyn_memory_ptr_to_t_array$_t_bytes32_$dyn_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"21606:111:55","nodeType":"YulIdentifier","src":"21606:111:55"},"nativeSrc":"21606:125:55","nodeType":"YulFunctionCall","src":"21606:125:55"},"variableNames":[{"name":"pos","nativeSrc":"21599:3:55","nodeType":"YulIdentifier","src":"21599:3:55"}]},{"nativeSrc":"21741:10:55","nodeType":"YulAssignment","src":"21741:10:55","value":{"name":"pos","nativeSrc":"21748:3:55","nodeType":"YulIdentifier","src":"21748:3:55"},"variableNames":[{"name":"end","nativeSrc":"21741:3:55","nodeType":"YulIdentifier","src":"21741:3:55"}]}]},"name":"abi_encode_tuple_packed_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"21422:335:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"21567:3:55","nodeType":"YulTypedName","src":"21567:3:55","type":""},{"name":"value0","nativeSrc":"21573:6:55","nodeType":"YulTypedName","src":"21573:6:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"21584:3:55","nodeType":"YulTypedName","src":"21584:3:55","type":""}],"src":"21422:335:55"},{"body":{"nativeSrc":"21973:454:55","nodeType":"YulBlock","src":"21973:454:55","statements":[{"nativeSrc":"21983:27:55","nodeType":"YulAssignment","src":"21983:27:55","value":{"arguments":[{"name":"headStart","nativeSrc":"21995:9:55","nodeType":"YulIdentifier","src":"21995:9:55"},{"kind":"number","nativeSrc":"22006:3:55","nodeType":"YulLiteral","src":"22006:3:55","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"21991:3:55","nodeType":"YulIdentifier","src":"21991:3:55"},"nativeSrc":"21991:19:55","nodeType":"YulFunctionCall","src":"21991:19:55"},"variableNames":[{"name":"tail","nativeSrc":"21983:4:55","nodeType":"YulIdentifier","src":"21983:4:55"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"22064:6:55","nodeType":"YulIdentifier","src":"22064:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"22077:9:55","nodeType":"YulIdentifier","src":"22077:9:55"},{"kind":"number","nativeSrc":"22088:1:55","nodeType":"YulLiteral","src":"22088:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"22073:3:55","nodeType":"YulIdentifier","src":"22073:3:55"},"nativeSrc":"22073:17:55","nodeType":"YulFunctionCall","src":"22073:17:55"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nativeSrc":"22020:43:55","nodeType":"YulIdentifier","src":"22020:43:55"},"nativeSrc":"22020:71:55","nodeType":"YulFunctionCall","src":"22020:71:55"},"nativeSrc":"22020:71:55","nodeType":"YulExpressionStatement","src":"22020:71:55"},{"expression":{"arguments":[{"name":"value1","nativeSrc":"22145:6:55","nodeType":"YulIdentifier","src":"22145:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"22158:9:55","nodeType":"YulIdentifier","src":"22158:9:55"},{"kind":"number","nativeSrc":"22169:2:55","nodeType":"YulLiteral","src":"22169:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"22154:3:55","nodeType":"YulIdentifier","src":"22154:3:55"},"nativeSrc":"22154:18:55","nodeType":"YulFunctionCall","src":"22154:18:55"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"22101:43:55","nodeType":"YulIdentifier","src":"22101:43:55"},"nativeSrc":"22101:72:55","nodeType":"YulFunctionCall","src":"22101:72:55"},"nativeSrc":"22101:72:55","nodeType":"YulExpressionStatement","src":"22101:72:55"},{"expression":{"arguments":[{"name":"value2","nativeSrc":"22227:6:55","nodeType":"YulIdentifier","src":"22227:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"22240:9:55","nodeType":"YulIdentifier","src":"22240:9:55"},{"kind":"number","nativeSrc":"22251:2:55","nodeType":"YulLiteral","src":"22251:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"22236:3:55","nodeType":"YulIdentifier","src":"22236:3:55"},"nativeSrc":"22236:18:55","nodeType":"YulFunctionCall","src":"22236:18:55"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nativeSrc":"22183:43:55","nodeType":"YulIdentifier","src":"22183:43:55"},"nativeSrc":"22183:72:55","nodeType":"YulFunctionCall","src":"22183:72:55"},"nativeSrc":"22183:72:55","nodeType":"YulExpressionStatement","src":"22183:72:55"},{"expression":{"arguments":[{"name":"value3","nativeSrc":"22309:6:55","nodeType":"YulIdentifier","src":"22309:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"22322:9:55","nodeType":"YulIdentifier","src":"22322:9:55"},{"kind":"number","nativeSrc":"22333:2:55","nodeType":"YulLiteral","src":"22333:2:55","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"22318:3:55","nodeType":"YulIdentifier","src":"22318:3:55"},"nativeSrc":"22318:18:55","nodeType":"YulFunctionCall","src":"22318:18:55"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"22265:43:55","nodeType":"YulIdentifier","src":"22265:43:55"},"nativeSrc":"22265:72:55","nodeType":"YulFunctionCall","src":"22265:72:55"},"nativeSrc":"22265:72:55","nodeType":"YulExpressionStatement","src":"22265:72:55"},{"expression":{"arguments":[{"name":"value4","nativeSrc":"22391:6:55","nodeType":"YulIdentifier","src":"22391:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"22404:9:55","nodeType":"YulIdentifier","src":"22404:9:55"},{"kind":"number","nativeSrc":"22415:3:55","nodeType":"YulLiteral","src":"22415:3:55","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"22400:3:55","nodeType":"YulIdentifier","src":"22400:3:55"},"nativeSrc":"22400:19:55","nodeType":"YulFunctionCall","src":"22400:19:55"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nativeSrc":"22347:43:55","nodeType":"YulIdentifier","src":"22347:43:55"},"nativeSrc":"22347:73:55","nodeType":"YulFunctionCall","src":"22347:73:55"},"nativeSrc":"22347:73:55","nodeType":"YulExpressionStatement","src":"22347:73:55"}]},"name":"abi_encode_tuple_t_bytes32_t_address_t_bytes32_t_uint256_t_bytes32__to_t_bytes32_t_address_t_bytes32_t_uint256_t_bytes32__fromStack_reversed","nativeSrc":"21763:664:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"21913:9:55","nodeType":"YulTypedName","src":"21913:9:55","type":""},{"name":"value4","nativeSrc":"21925:6:55","nodeType":"YulTypedName","src":"21925:6:55","type":""},{"name":"value3","nativeSrc":"21933:6:55","nodeType":"YulTypedName","src":"21933:6:55","type":""},{"name":"value2","nativeSrc":"21941:6:55","nodeType":"YulTypedName","src":"21941:6:55","type":""},{"name":"value1","nativeSrc":"21949:6:55","nodeType":"YulTypedName","src":"21949:6:55","type":""},{"name":"value0","nativeSrc":"21957:6:55","nodeType":"YulTypedName","src":"21957:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"21968:4:55","nodeType":"YulTypedName","src":"21968:4:55","type":""}],"src":"21763:664:55"},{"body":{"nativeSrc":"22559:206:55","nodeType":"YulBlock","src":"22559:206:55","statements":[{"nativeSrc":"22569:26:55","nodeType":"YulAssignment","src":"22569:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"22581:9:55","nodeType":"YulIdentifier","src":"22581:9:55"},{"kind":"number","nativeSrc":"22592:2:55","nodeType":"YulLiteral","src":"22592:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"22577:3:55","nodeType":"YulIdentifier","src":"22577:3:55"},"nativeSrc":"22577:18:55","nodeType":"YulFunctionCall","src":"22577:18:55"},"variableNames":[{"name":"tail","nativeSrc":"22569:4:55","nodeType":"YulIdentifier","src":"22569:4:55"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"22649:6:55","nodeType":"YulIdentifier","src":"22649:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"22662:9:55","nodeType":"YulIdentifier","src":"22662:9:55"},{"kind":"number","nativeSrc":"22673:1:55","nodeType":"YulLiteral","src":"22673:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"22658:3:55","nodeType":"YulIdentifier","src":"22658:3:55"},"nativeSrc":"22658:17:55","nodeType":"YulFunctionCall","src":"22658:17:55"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"22605:43:55","nodeType":"YulIdentifier","src":"22605:43:55"},"nativeSrc":"22605:71:55","nodeType":"YulFunctionCall","src":"22605:71:55"},"nativeSrc":"22605:71:55","nodeType":"YulExpressionStatement","src":"22605:71:55"},{"expression":{"arguments":[{"name":"value1","nativeSrc":"22730:6:55","nodeType":"YulIdentifier","src":"22730:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"22743:9:55","nodeType":"YulIdentifier","src":"22743:9:55"},{"kind":"number","nativeSrc":"22754:2:55","nodeType":"YulLiteral","src":"22754:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"22739:3:55","nodeType":"YulIdentifier","src":"22739:3:55"},"nativeSrc":"22739:18:55","nodeType":"YulFunctionCall","src":"22739:18:55"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"22686:43:55","nodeType":"YulIdentifier","src":"22686:43:55"},"nativeSrc":"22686:72:55","nodeType":"YulFunctionCall","src":"22686:72:55"},"nativeSrc":"22686:72:55","nodeType":"YulExpressionStatement","src":"22686:72:55"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nativeSrc":"22433:332:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"22523:9:55","nodeType":"YulTypedName","src":"22523:9:55","type":""},{"name":"value1","nativeSrc":"22535:6:55","nodeType":"YulTypedName","src":"22535:6:55","type":""},{"name":"value0","nativeSrc":"22543:6:55","nodeType":"YulTypedName","src":"22543:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"22554:4:55","nodeType":"YulTypedName","src":"22554:4:55","type":""}],"src":"22433:332:55"},{"body":{"nativeSrc":"22824:32:55","nodeType":"YulBlock","src":"22824:32:55","statements":[{"nativeSrc":"22834:16:55","nodeType":"YulAssignment","src":"22834:16:55","value":{"name":"value","nativeSrc":"22845:5:55","nodeType":"YulIdentifier","src":"22845:5:55"},"variableNames":[{"name":"cleaned","nativeSrc":"22834:7:55","nodeType":"YulIdentifier","src":"22834:7:55"}]}]},"name":"cleanup_t_rational_0_by_1","nativeSrc":"22771:85:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"22806:5:55","nodeType":"YulTypedName","src":"22806:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"22816:7:55","nodeType":"YulTypedName","src":"22816:7:55","type":""}],"src":"22771:85:55"},{"body":{"nativeSrc":"22905:43:55","nodeType":"YulBlock","src":"22905:43:55","statements":[{"nativeSrc":"22915:27:55","nodeType":"YulAssignment","src":"22915:27:55","value":{"arguments":[{"name":"value","nativeSrc":"22930:5:55","nodeType":"YulIdentifier","src":"22930:5:55"},{"kind":"number","nativeSrc":"22937:4:55","nodeType":"YulLiteral","src":"22937:4:55","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"22926:3:55","nodeType":"YulIdentifier","src":"22926:3:55"},"nativeSrc":"22926:16:55","nodeType":"YulFunctionCall","src":"22926:16:55"},"variableNames":[{"name":"cleaned","nativeSrc":"22915:7:55","nodeType":"YulIdentifier","src":"22915:7:55"}]}]},"name":"cleanup_t_uint8","nativeSrc":"22862:86:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"22887:5:55","nodeType":"YulTypedName","src":"22887:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"22897:7:55","nodeType":"YulTypedName","src":"22897:7:55","type":""}],"src":"22862:86:55"},{"body":{"nativeSrc":"22986:28:55","nodeType":"YulBlock","src":"22986:28:55","statements":[{"nativeSrc":"22996:12:55","nodeType":"YulAssignment","src":"22996:12:55","value":{"name":"value","nativeSrc":"23003:5:55","nodeType":"YulIdentifier","src":"23003:5:55"},"variableNames":[{"name":"ret","nativeSrc":"22996:3:55","nodeType":"YulIdentifier","src":"22996:3:55"}]}]},"name":"identity","nativeSrc":"22954:60:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"22972:5:55","nodeType":"YulTypedName","src":"22972:5:55","type":""}],"returnVariables":[{"name":"ret","nativeSrc":"22982:3:55","nodeType":"YulTypedName","src":"22982:3:55","type":""}],"src":"22954:60:55"},{"body":{"nativeSrc":"23086:88:55","nodeType":"YulBlock","src":"23086:88:55","statements":[{"nativeSrc":"23096:72:55","nodeType":"YulAssignment","src":"23096:72:55","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nativeSrc":"23160:5:55","nodeType":"YulIdentifier","src":"23160:5:55"}],"functionName":{"name":"cleanup_t_rational_0_by_1","nativeSrc":"23134:25:55","nodeType":"YulIdentifier","src":"23134:25:55"},"nativeSrc":"23134:32:55","nodeType":"YulFunctionCall","src":"23134:32:55"}],"functionName":{"name":"identity","nativeSrc":"23125:8:55","nodeType":"YulIdentifier","src":"23125:8:55"},"nativeSrc":"23125:42:55","nodeType":"YulFunctionCall","src":"23125:42:55"}],"functionName":{"name":"cleanup_t_uint8","nativeSrc":"23109:15:55","nodeType":"YulIdentifier","src":"23109:15:55"},"nativeSrc":"23109:59:55","nodeType":"YulFunctionCall","src":"23109:59:55"},"variableNames":[{"name":"converted","nativeSrc":"23096:9:55","nodeType":"YulIdentifier","src":"23096:9:55"}]}]},"name":"convert_t_rational_0_by_1_to_t_uint8","nativeSrc":"23020:154:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"23066:5:55","nodeType":"YulTypedName","src":"23066:5:55","type":""}],"returnVariables":[{"name":"converted","nativeSrc":"23076:9:55","nodeType":"YulTypedName","src":"23076:9:55","type":""}],"src":"23020:154:55"},{"body":{"nativeSrc":"23251:72:55","nodeType":"YulBlock","src":"23251:72:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"23268:3:55","nodeType":"YulIdentifier","src":"23268:3:55"},{"arguments":[{"name":"value","nativeSrc":"23310:5:55","nodeType":"YulIdentifier","src":"23310:5:55"}],"functionName":{"name":"convert_t_rational_0_by_1_to_t_uint8","nativeSrc":"23273:36:55","nodeType":"YulIdentifier","src":"23273:36:55"},"nativeSrc":"23273:43:55","nodeType":"YulFunctionCall","src":"23273:43:55"}],"functionName":{"name":"mstore","nativeSrc":"23261:6:55","nodeType":"YulIdentifier","src":"23261:6:55"},"nativeSrc":"23261:56:55","nodeType":"YulFunctionCall","src":"23261:56:55"},"nativeSrc":"23261:56:55","nodeType":"YulExpressionStatement","src":"23261:56:55"}]},"name":"abi_encode_t_rational_0_by_1_to_t_uint8_fromStack","nativeSrc":"23180:143:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"23239:5:55","nodeType":"YulTypedName","src":"23239:5:55","type":""},{"name":"pos","nativeSrc":"23246:3:55","nodeType":"YulTypedName","src":"23246:3:55","type":""}],"src":"23180:143:55"},{"body":{"nativeSrc":"23461:212:55","nodeType":"YulBlock","src":"23461:212:55","statements":[{"nativeSrc":"23471:26:55","nodeType":"YulAssignment","src":"23471:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"23483:9:55","nodeType":"YulIdentifier","src":"23483:9:55"},{"kind":"number","nativeSrc":"23494:2:55","nodeType":"YulLiteral","src":"23494:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"23479:3:55","nodeType":"YulIdentifier","src":"23479:3:55"},"nativeSrc":"23479:18:55","nodeType":"YulFunctionCall","src":"23479:18:55"},"variableNames":[{"name":"tail","nativeSrc":"23471:4:55","nodeType":"YulIdentifier","src":"23471:4:55"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"23551:6:55","nodeType":"YulIdentifier","src":"23551:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"23564:9:55","nodeType":"YulIdentifier","src":"23564:9:55"},{"kind":"number","nativeSrc":"23575:1:55","nodeType":"YulLiteral","src":"23575:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"23560:3:55","nodeType":"YulIdentifier","src":"23560:3:55"},"nativeSrc":"23560:17:55","nodeType":"YulFunctionCall","src":"23560:17:55"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"23507:43:55","nodeType":"YulIdentifier","src":"23507:43:55"},"nativeSrc":"23507:71:55","nodeType":"YulFunctionCall","src":"23507:71:55"},"nativeSrc":"23507:71:55","nodeType":"YulExpressionStatement","src":"23507:71:55"},{"expression":{"arguments":[{"name":"value1","nativeSrc":"23638:6:55","nodeType":"YulIdentifier","src":"23638:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"23651:9:55","nodeType":"YulIdentifier","src":"23651:9:55"},{"kind":"number","nativeSrc":"23662:2:55","nodeType":"YulLiteral","src":"23662:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"23647:3:55","nodeType":"YulIdentifier","src":"23647:3:55"},"nativeSrc":"23647:18:55","nodeType":"YulFunctionCall","src":"23647:18:55"}],"functionName":{"name":"abi_encode_t_rational_0_by_1_to_t_uint8_fromStack","nativeSrc":"23588:49:55","nodeType":"YulIdentifier","src":"23588:49:55"},"nativeSrc":"23588:78:55","nodeType":"YulFunctionCall","src":"23588:78:55"},"nativeSrc":"23588:78:55","nodeType":"YulExpressionStatement","src":"23588:78:55"}]},"name":"abi_encode_tuple_t_address_t_rational_0_by_1__to_t_address_t_uint8__fromStack_reversed","nativeSrc":"23329:344:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"23425:9:55","nodeType":"YulTypedName","src":"23425:9:55","type":""},{"name":"value1","nativeSrc":"23437:6:55","nodeType":"YulTypedName","src":"23437:6:55","type":""},{"name":"value0","nativeSrc":"23445:6:55","nodeType":"YulTypedName","src":"23445:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"23456:4:55","nodeType":"YulTypedName","src":"23456:4:55","type":""}],"src":"23329:344:55"},{"body":{"nativeSrc":"23785:119:55","nodeType":"YulBlock","src":"23785:119:55","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"23807:6:55","nodeType":"YulIdentifier","src":"23807:6:55"},{"kind":"number","nativeSrc":"23815:1:55","nodeType":"YulLiteral","src":"23815:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"23803:3:55","nodeType":"YulIdentifier","src":"23803:3:55"},"nativeSrc":"23803:14:55","nodeType":"YulFunctionCall","src":"23803:14:55"},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f","kind":"string","nativeSrc":"23819:34:55","nodeType":"YulLiteral","src":"23819:34:55","type":"","value":"Address: insufficient balance fo"}],"functionName":{"name":"mstore","nativeSrc":"23796:6:55","nodeType":"YulIdentifier","src":"23796:6:55"},"nativeSrc":"23796:58:55","nodeType":"YulFunctionCall","src":"23796:58:55"},"nativeSrc":"23796:58:55","nodeType":"YulExpressionStatement","src":"23796:58:55"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"23875:6:55","nodeType":"YulIdentifier","src":"23875:6:55"},{"kind":"number","nativeSrc":"23883:2:55","nodeType":"YulLiteral","src":"23883:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"23871:3:55","nodeType":"YulIdentifier","src":"23871:3:55"},"nativeSrc":"23871:15:55","nodeType":"YulFunctionCall","src":"23871:15:55"},{"hexValue":"722063616c6c","kind":"string","nativeSrc":"23888:8:55","nodeType":"YulLiteral","src":"23888:8:55","type":"","value":"r call"}],"functionName":{"name":"mstore","nativeSrc":"23864:6:55","nodeType":"YulIdentifier","src":"23864:6:55"},"nativeSrc":"23864:33:55","nodeType":"YulFunctionCall","src":"23864:33:55"},"nativeSrc":"23864:33:55","nodeType":"YulExpressionStatement","src":"23864:33:55"}]},"name":"store_literal_in_memory_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","nativeSrc":"23679:225:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"23777:6:55","nodeType":"YulTypedName","src":"23777:6:55","type":""}],"src":"23679:225:55"},{"body":{"nativeSrc":"24056:220:55","nodeType":"YulBlock","src":"24056:220:55","statements":[{"nativeSrc":"24066:74:55","nodeType":"YulAssignment","src":"24066:74:55","value":{"arguments":[{"name":"pos","nativeSrc":"24132:3:55","nodeType":"YulIdentifier","src":"24132:3:55"},{"kind":"number","nativeSrc":"24137:2:55","nodeType":"YulLiteral","src":"24137:2:55","type":"","value":"38"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"24073:58:55","nodeType":"YulIdentifier","src":"24073:58:55"},"nativeSrc":"24073:67:55","nodeType":"YulFunctionCall","src":"24073:67:55"},"variableNames":[{"name":"pos","nativeSrc":"24066:3:55","nodeType":"YulIdentifier","src":"24066:3:55"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"24238:3:55","nodeType":"YulIdentifier","src":"24238:3:55"}],"functionName":{"name":"store_literal_in_memory_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","nativeSrc":"24149:88:55","nodeType":"YulIdentifier","src":"24149:88:55"},"nativeSrc":"24149:93:55","nodeType":"YulFunctionCall","src":"24149:93:55"},"nativeSrc":"24149:93:55","nodeType":"YulExpressionStatement","src":"24149:93:55"},{"nativeSrc":"24251:19:55","nodeType":"YulAssignment","src":"24251:19:55","value":{"arguments":[{"name":"pos","nativeSrc":"24262:3:55","nodeType":"YulIdentifier","src":"24262:3:55"},{"kind":"number","nativeSrc":"24267:2:55","nodeType":"YulLiteral","src":"24267:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"24258:3:55","nodeType":"YulIdentifier","src":"24258:3:55"},"nativeSrc":"24258:12:55","nodeType":"YulFunctionCall","src":"24258:12:55"},"variableNames":[{"name":"end","nativeSrc":"24251:3:55","nodeType":"YulIdentifier","src":"24251:3:55"}]}]},"name":"abi_encode_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c_to_t_string_memory_ptr_fromStack","nativeSrc":"23910:366:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"24044:3:55","nodeType":"YulTypedName","src":"24044:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"24052:3:55","nodeType":"YulTypedName","src":"24052:3:55","type":""}],"src":"23910:366:55"},{"body":{"nativeSrc":"24453:248:55","nodeType":"YulBlock","src":"24453:248:55","statements":[{"nativeSrc":"24463:26:55","nodeType":"YulAssignment","src":"24463:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"24475:9:55","nodeType":"YulIdentifier","src":"24475:9:55"},{"kind":"number","nativeSrc":"24486:2:55","nodeType":"YulLiteral","src":"24486:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"24471:3:55","nodeType":"YulIdentifier","src":"24471:3:55"},"nativeSrc":"24471:18:55","nodeType":"YulFunctionCall","src":"24471:18:55"},"variableNames":[{"name":"tail","nativeSrc":"24463:4:55","nodeType":"YulIdentifier","src":"24463:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"24510:9:55","nodeType":"YulIdentifier","src":"24510:9:55"},{"kind":"number","nativeSrc":"24521:1:55","nodeType":"YulLiteral","src":"24521:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"24506:3:55","nodeType":"YulIdentifier","src":"24506:3:55"},"nativeSrc":"24506:17:55","nodeType":"YulFunctionCall","src":"24506:17:55"},{"arguments":[{"name":"tail","nativeSrc":"24529:4:55","nodeType":"YulIdentifier","src":"24529:4:55"},{"name":"headStart","nativeSrc":"24535:9:55","nodeType":"YulIdentifier","src":"24535:9:55"}],"functionName":{"name":"sub","nativeSrc":"24525:3:55","nodeType":"YulIdentifier","src":"24525:3:55"},"nativeSrc":"24525:20:55","nodeType":"YulFunctionCall","src":"24525:20:55"}],"functionName":{"name":"mstore","nativeSrc":"24499:6:55","nodeType":"YulIdentifier","src":"24499:6:55"},"nativeSrc":"24499:47:55","nodeType":"YulFunctionCall","src":"24499:47:55"},"nativeSrc":"24499:47:55","nodeType":"YulExpressionStatement","src":"24499:47:55"},{"nativeSrc":"24555:139:55","nodeType":"YulAssignment","src":"24555:139:55","value":{"arguments":[{"name":"tail","nativeSrc":"24689:4:55","nodeType":"YulIdentifier","src":"24689:4:55"}],"functionName":{"name":"abi_encode_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c_to_t_string_memory_ptr_fromStack","nativeSrc":"24563:124:55","nodeType":"YulIdentifier","src":"24563:124:55"},"nativeSrc":"24563:131:55","nodeType":"YulFunctionCall","src":"24563:131:55"},"variableNames":[{"name":"tail","nativeSrc":"24555:4:55","nodeType":"YulIdentifier","src":"24555:4:55"}]}]},"name":"abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"24282:419:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"24433:9:55","nodeType":"YulTypedName","src":"24433:9:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"24448:4:55","nodeType":"YulTypedName","src":"24448:4:55","type":""}],"src":"24282:419:55"},{"body":{"nativeSrc":"24765:40:55","nodeType":"YulBlock","src":"24765:40:55","statements":[{"nativeSrc":"24776:22:55","nodeType":"YulAssignment","src":"24776:22:55","value":{"arguments":[{"name":"value","nativeSrc":"24792:5:55","nodeType":"YulIdentifier","src":"24792:5:55"}],"functionName":{"name":"mload","nativeSrc":"24786:5:55","nodeType":"YulIdentifier","src":"24786:5:55"},"nativeSrc":"24786:12:55","nodeType":"YulFunctionCall","src":"24786:12:55"},"variableNames":[{"name":"length","nativeSrc":"24776:6:55","nodeType":"YulIdentifier","src":"24776:6:55"}]}]},"name":"array_length_t_bytes_memory_ptr","nativeSrc":"24707:98:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"24748:5:55","nodeType":"YulTypedName","src":"24748:5:55","type":""}],"returnVariables":[{"name":"length","nativeSrc":"24758:6:55","nodeType":"YulTypedName","src":"24758:6:55","type":""}],"src":"24707:98:55"},{"body":{"nativeSrc":"24919:278:55","nodeType":"YulBlock","src":"24919:278:55","statements":[{"nativeSrc":"24929:52:55","nodeType":"YulVariableDeclaration","src":"24929:52:55","value":{"arguments":[{"name":"value","nativeSrc":"24975:5:55","nodeType":"YulIdentifier","src":"24975:5:55"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nativeSrc":"24943:31:55","nodeType":"YulIdentifier","src":"24943:31:55"},"nativeSrc":"24943:38:55","nodeType":"YulFunctionCall","src":"24943:38:55"},"variables":[{"name":"length","nativeSrc":"24933:6:55","nodeType":"YulTypedName","src":"24933:6:55","type":""}]},{"nativeSrc":"24990:95:55","nodeType":"YulAssignment","src":"24990:95:55","value":{"arguments":[{"name":"pos","nativeSrc":"25073:3:55","nodeType":"YulIdentifier","src":"25073:3:55"},{"name":"length","nativeSrc":"25078:6:55","nodeType":"YulIdentifier","src":"25078:6:55"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"24997:75:55","nodeType":"YulIdentifier","src":"24997:75:55"},"nativeSrc":"24997:88:55","nodeType":"YulFunctionCall","src":"24997:88:55"},"variableNames":[{"name":"pos","nativeSrc":"24990:3:55","nodeType":"YulIdentifier","src":"24990:3:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"25133:5:55","nodeType":"YulIdentifier","src":"25133:5:55"},{"kind":"number","nativeSrc":"25140:4:55","nodeType":"YulLiteral","src":"25140:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"25129:3:55","nodeType":"YulIdentifier","src":"25129:3:55"},"nativeSrc":"25129:16:55","nodeType":"YulFunctionCall","src":"25129:16:55"},{"name":"pos","nativeSrc":"25147:3:55","nodeType":"YulIdentifier","src":"25147:3:55"},{"name":"length","nativeSrc":"25152:6:55","nodeType":"YulIdentifier","src":"25152:6:55"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"25094:34:55","nodeType":"YulIdentifier","src":"25094:34:55"},"nativeSrc":"25094:65:55","nodeType":"YulFunctionCall","src":"25094:65:55"},"nativeSrc":"25094:65:55","nodeType":"YulExpressionStatement","src":"25094:65:55"},{"nativeSrc":"25168:23:55","nodeType":"YulAssignment","src":"25168:23:55","value":{"arguments":[{"name":"pos","nativeSrc":"25179:3:55","nodeType":"YulIdentifier","src":"25179:3:55"},{"name":"length","nativeSrc":"25184:6:55","nodeType":"YulIdentifier","src":"25184:6:55"}],"functionName":{"name":"add","nativeSrc":"25175:3:55","nodeType":"YulIdentifier","src":"25175:3:55"},"nativeSrc":"25175:16:55","nodeType":"YulFunctionCall","src":"25175:16:55"},"variableNames":[{"name":"end","nativeSrc":"25168:3:55","nodeType":"YulIdentifier","src":"25168:3:55"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"24811:386:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"24900:5:55","nodeType":"YulTypedName","src":"24900:5:55","type":""},{"name":"pos","nativeSrc":"24907:3:55","nodeType":"YulTypedName","src":"24907:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"24915:3:55","nodeType":"YulTypedName","src":"24915:3:55","type":""}],"src":"24811:386:55"},{"body":{"nativeSrc":"25337:137:55","nodeType":"YulBlock","src":"25337:137:55","statements":[{"nativeSrc":"25348:100:55","nodeType":"YulAssignment","src":"25348:100:55","value":{"arguments":[{"name":"value0","nativeSrc":"25435:6:55","nodeType":"YulIdentifier","src":"25435:6:55"},{"name":"pos","nativeSrc":"25444:3:55","nodeType":"YulIdentifier","src":"25444:3:55"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"25355:79:55","nodeType":"YulIdentifier","src":"25355:79:55"},"nativeSrc":"25355:93:55","nodeType":"YulFunctionCall","src":"25355:93:55"},"variableNames":[{"name":"pos","nativeSrc":"25348:3:55","nodeType":"YulIdentifier","src":"25348:3:55"}]},{"nativeSrc":"25458:10:55","nodeType":"YulAssignment","src":"25458:10:55","value":{"name":"pos","nativeSrc":"25465:3:55","nodeType":"YulIdentifier","src":"25465:3:55"},"variableNames":[{"name":"end","nativeSrc":"25458:3:55","nodeType":"YulIdentifier","src":"25458:3:55"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"25203:271:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"25316:3:55","nodeType":"YulTypedName","src":"25316:3:55","type":""},{"name":"value0","nativeSrc":"25322:6:55","nodeType":"YulTypedName","src":"25322:6:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"25333:3:55","nodeType":"YulTypedName","src":"25333:3:55","type":""}],"src":"25203:271:55"},{"body":{"nativeSrc":"25508:152:55","nodeType":"YulBlock","src":"25508:152:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"25525:1:55","nodeType":"YulLiteral","src":"25525:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"25528:77:55","nodeType":"YulLiteral","src":"25528:77:55","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"25518:6:55","nodeType":"YulIdentifier","src":"25518:6:55"},"nativeSrc":"25518:88:55","nodeType":"YulFunctionCall","src":"25518:88:55"},"nativeSrc":"25518:88:55","nodeType":"YulExpressionStatement","src":"25518:88:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"25622:1:55","nodeType":"YulLiteral","src":"25622:1:55","type":"","value":"4"},{"kind":"number","nativeSrc":"25625:4:55","nodeType":"YulLiteral","src":"25625:4:55","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"25615:6:55","nodeType":"YulIdentifier","src":"25615:6:55"},"nativeSrc":"25615:15:55","nodeType":"YulFunctionCall","src":"25615:15:55"},"nativeSrc":"25615:15:55","nodeType":"YulExpressionStatement","src":"25615:15:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"25646:1:55","nodeType":"YulLiteral","src":"25646:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"25649:4:55","nodeType":"YulLiteral","src":"25649:4:55","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"25639:6:55","nodeType":"YulIdentifier","src":"25639:6:55"},"nativeSrc":"25639:15:55","nodeType":"YulFunctionCall","src":"25639:15:55"},"nativeSrc":"25639:15:55","nodeType":"YulExpressionStatement","src":"25639:15:55"}]},"name":"panic_error_0x21","nativeSrc":"25480:180:55","nodeType":"YulFunctionDefinition","src":"25480:180:55"},{"body":{"nativeSrc":"25772:68:55","nodeType":"YulBlock","src":"25772:68:55","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"25794:6:55","nodeType":"YulIdentifier","src":"25794:6:55"},{"kind":"number","nativeSrc":"25802:1:55","nodeType":"YulLiteral","src":"25802:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"25790:3:55","nodeType":"YulIdentifier","src":"25790:3:55"},"nativeSrc":"25790:14:55","nodeType":"YulFunctionCall","src":"25790:14:55"},{"hexValue":"45434453413a20696e76616c6964207369676e6174757265","kind":"string","nativeSrc":"25806:26:55","nodeType":"YulLiteral","src":"25806:26:55","type":"","value":"ECDSA: invalid signature"}],"functionName":{"name":"mstore","nativeSrc":"25783:6:55","nodeType":"YulIdentifier","src":"25783:6:55"},"nativeSrc":"25783:50:55","nodeType":"YulFunctionCall","src":"25783:50:55"},"nativeSrc":"25783:50:55","nodeType":"YulExpressionStatement","src":"25783:50:55"}]},"name":"store_literal_in_memory_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be","nativeSrc":"25666:174:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"25764:6:55","nodeType":"YulTypedName","src":"25764:6:55","type":""}],"src":"25666:174:55"},{"body":{"nativeSrc":"25992:220:55","nodeType":"YulBlock","src":"25992:220:55","statements":[{"nativeSrc":"26002:74:55","nodeType":"YulAssignment","src":"26002:74:55","value":{"arguments":[{"name":"pos","nativeSrc":"26068:3:55","nodeType":"YulIdentifier","src":"26068:3:55"},{"kind":"number","nativeSrc":"26073:2:55","nodeType":"YulLiteral","src":"26073:2:55","type":"","value":"24"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"26009:58:55","nodeType":"YulIdentifier","src":"26009:58:55"},"nativeSrc":"26009:67:55","nodeType":"YulFunctionCall","src":"26009:67:55"},"variableNames":[{"name":"pos","nativeSrc":"26002:3:55","nodeType":"YulIdentifier","src":"26002:3:55"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"26174:3:55","nodeType":"YulIdentifier","src":"26174:3:55"}],"functionName":{"name":"store_literal_in_memory_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be","nativeSrc":"26085:88:55","nodeType":"YulIdentifier","src":"26085:88:55"},"nativeSrc":"26085:93:55","nodeType":"YulFunctionCall","src":"26085:93:55"},"nativeSrc":"26085:93:55","nodeType":"YulExpressionStatement","src":"26085:93:55"},{"nativeSrc":"26187:19:55","nodeType":"YulAssignment","src":"26187:19:55","value":{"arguments":[{"name":"pos","nativeSrc":"26198:3:55","nodeType":"YulIdentifier","src":"26198:3:55"},{"kind":"number","nativeSrc":"26203:2:55","nodeType":"YulLiteral","src":"26203:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"26194:3:55","nodeType":"YulIdentifier","src":"26194:3:55"},"nativeSrc":"26194:12:55","nodeType":"YulFunctionCall","src":"26194:12:55"},"variableNames":[{"name":"end","nativeSrc":"26187:3:55","nodeType":"YulIdentifier","src":"26187:3:55"}]}]},"name":"abi_encode_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be_to_t_string_memory_ptr_fromStack","nativeSrc":"25846:366:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"25980:3:55","nodeType":"YulTypedName","src":"25980:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"25988:3:55","nodeType":"YulTypedName","src":"25988:3:55","type":""}],"src":"25846:366:55"},{"body":{"nativeSrc":"26389:248:55","nodeType":"YulBlock","src":"26389:248:55","statements":[{"nativeSrc":"26399:26:55","nodeType":"YulAssignment","src":"26399:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"26411:9:55","nodeType":"YulIdentifier","src":"26411:9:55"},{"kind":"number","nativeSrc":"26422:2:55","nodeType":"YulLiteral","src":"26422:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"26407:3:55","nodeType":"YulIdentifier","src":"26407:3:55"},"nativeSrc":"26407:18:55","nodeType":"YulFunctionCall","src":"26407:18:55"},"variableNames":[{"name":"tail","nativeSrc":"26399:4:55","nodeType":"YulIdentifier","src":"26399:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"26446:9:55","nodeType":"YulIdentifier","src":"26446:9:55"},{"kind":"number","nativeSrc":"26457:1:55","nodeType":"YulLiteral","src":"26457:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"26442:3:55","nodeType":"YulIdentifier","src":"26442:3:55"},"nativeSrc":"26442:17:55","nodeType":"YulFunctionCall","src":"26442:17:55"},{"arguments":[{"name":"tail","nativeSrc":"26465:4:55","nodeType":"YulIdentifier","src":"26465:4:55"},{"name":"headStart","nativeSrc":"26471:9:55","nodeType":"YulIdentifier","src":"26471:9:55"}],"functionName":{"name":"sub","nativeSrc":"26461:3:55","nodeType":"YulIdentifier","src":"26461:3:55"},"nativeSrc":"26461:20:55","nodeType":"YulFunctionCall","src":"26461:20:55"}],"functionName":{"name":"mstore","nativeSrc":"26435:6:55","nodeType":"YulIdentifier","src":"26435:6:55"},"nativeSrc":"26435:47:55","nodeType":"YulFunctionCall","src":"26435:47:55"},"nativeSrc":"26435:47:55","nodeType":"YulExpressionStatement","src":"26435:47:55"},{"nativeSrc":"26491:139:55","nodeType":"YulAssignment","src":"26491:139:55","value":{"arguments":[{"name":"tail","nativeSrc":"26625:4:55","nodeType":"YulIdentifier","src":"26625:4:55"}],"functionName":{"name":"abi_encode_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be_to_t_string_memory_ptr_fromStack","nativeSrc":"26499:124:55","nodeType":"YulIdentifier","src":"26499:124:55"},"nativeSrc":"26499:131:55","nodeType":"YulFunctionCall","src":"26499:131:55"},"variableNames":[{"name":"tail","nativeSrc":"26491:4:55","nodeType":"YulIdentifier","src":"26491:4:55"}]}]},"name":"abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"26218:419:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"26369:9:55","nodeType":"YulTypedName","src":"26369:9:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"26384:4:55","nodeType":"YulTypedName","src":"26384:4:55","type":""}],"src":"26218:419:55"},{"body":{"nativeSrc":"26749:75:55","nodeType":"YulBlock","src":"26749:75:55","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"26771:6:55","nodeType":"YulIdentifier","src":"26771:6:55"},{"kind":"number","nativeSrc":"26779:1:55","nodeType":"YulLiteral","src":"26779:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"26767:3:55","nodeType":"YulIdentifier","src":"26767:3:55"},"nativeSrc":"26767:14:55","nodeType":"YulFunctionCall","src":"26767:14:55"},{"hexValue":"45434453413a20696e76616c6964207369676e6174757265206c656e677468","kind":"string","nativeSrc":"26783:33:55","nodeType":"YulLiteral","src":"26783:33:55","type":"","value":"ECDSA: invalid signature length"}],"functionName":{"name":"mstore","nativeSrc":"26760:6:55","nodeType":"YulIdentifier","src":"26760:6:55"},"nativeSrc":"26760:57:55","nodeType":"YulFunctionCall","src":"26760:57:55"},"nativeSrc":"26760:57:55","nodeType":"YulExpressionStatement","src":"26760:57:55"}]},"name":"store_literal_in_memory_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77","nativeSrc":"26643:181:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"26741:6:55","nodeType":"YulTypedName","src":"26741:6:55","type":""}],"src":"26643:181:55"},{"body":{"nativeSrc":"26976:220:55","nodeType":"YulBlock","src":"26976:220:55","statements":[{"nativeSrc":"26986:74:55","nodeType":"YulAssignment","src":"26986:74:55","value":{"arguments":[{"name":"pos","nativeSrc":"27052:3:55","nodeType":"YulIdentifier","src":"27052:3:55"},{"kind":"number","nativeSrc":"27057:2:55","nodeType":"YulLiteral","src":"27057:2:55","type":"","value":"31"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"26993:58:55","nodeType":"YulIdentifier","src":"26993:58:55"},"nativeSrc":"26993:67:55","nodeType":"YulFunctionCall","src":"26993:67:55"},"variableNames":[{"name":"pos","nativeSrc":"26986:3:55","nodeType":"YulIdentifier","src":"26986:3:55"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"27158:3:55","nodeType":"YulIdentifier","src":"27158:3:55"}],"functionName":{"name":"store_literal_in_memory_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77","nativeSrc":"27069:88:55","nodeType":"YulIdentifier","src":"27069:88:55"},"nativeSrc":"27069:93:55","nodeType":"YulFunctionCall","src":"27069:93:55"},"nativeSrc":"27069:93:55","nodeType":"YulExpressionStatement","src":"27069:93:55"},{"nativeSrc":"27171:19:55","nodeType":"YulAssignment","src":"27171:19:55","value":{"arguments":[{"name":"pos","nativeSrc":"27182:3:55","nodeType":"YulIdentifier","src":"27182:3:55"},{"kind":"number","nativeSrc":"27187:2:55","nodeType":"YulLiteral","src":"27187:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"27178:3:55","nodeType":"YulIdentifier","src":"27178:3:55"},"nativeSrc":"27178:12:55","nodeType":"YulFunctionCall","src":"27178:12:55"},"variableNames":[{"name":"end","nativeSrc":"27171:3:55","nodeType":"YulIdentifier","src":"27171:3:55"}]}]},"name":"abi_encode_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77_to_t_string_memory_ptr_fromStack","nativeSrc":"26830:366:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"26964:3:55","nodeType":"YulTypedName","src":"26964:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"26972:3:55","nodeType":"YulTypedName","src":"26972:3:55","type":""}],"src":"26830:366:55"},{"body":{"nativeSrc":"27373:248:55","nodeType":"YulBlock","src":"27373:248:55","statements":[{"nativeSrc":"27383:26:55","nodeType":"YulAssignment","src":"27383:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"27395:9:55","nodeType":"YulIdentifier","src":"27395:9:55"},{"kind":"number","nativeSrc":"27406:2:55","nodeType":"YulLiteral","src":"27406:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"27391:3:55","nodeType":"YulIdentifier","src":"27391:3:55"},"nativeSrc":"27391:18:55","nodeType":"YulFunctionCall","src":"27391:18:55"},"variableNames":[{"name":"tail","nativeSrc":"27383:4:55","nodeType":"YulIdentifier","src":"27383:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"27430:9:55","nodeType":"YulIdentifier","src":"27430:9:55"},{"kind":"number","nativeSrc":"27441:1:55","nodeType":"YulLiteral","src":"27441:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"27426:3:55","nodeType":"YulIdentifier","src":"27426:3:55"},"nativeSrc":"27426:17:55","nodeType":"YulFunctionCall","src":"27426:17:55"},{"arguments":[{"name":"tail","nativeSrc":"27449:4:55","nodeType":"YulIdentifier","src":"27449:4:55"},{"name":"headStart","nativeSrc":"27455:9:55","nodeType":"YulIdentifier","src":"27455:9:55"}],"functionName":{"name":"sub","nativeSrc":"27445:3:55","nodeType":"YulIdentifier","src":"27445:3:55"},"nativeSrc":"27445:20:55","nodeType":"YulFunctionCall","src":"27445:20:55"}],"functionName":{"name":"mstore","nativeSrc":"27419:6:55","nodeType":"YulIdentifier","src":"27419:6:55"},"nativeSrc":"27419:47:55","nodeType":"YulFunctionCall","src":"27419:47:55"},"nativeSrc":"27419:47:55","nodeType":"YulExpressionStatement","src":"27419:47:55"},{"nativeSrc":"27475:139:55","nodeType":"YulAssignment","src":"27475:139:55","value":{"arguments":[{"name":"tail","nativeSrc":"27609:4:55","nodeType":"YulIdentifier","src":"27609:4:55"}],"functionName":{"name":"abi_encode_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77_to_t_string_memory_ptr_fromStack","nativeSrc":"27483:124:55","nodeType":"YulIdentifier","src":"27483:124:55"},"nativeSrc":"27483:131:55","nodeType":"YulFunctionCall","src":"27483:131:55"},"variableNames":[{"name":"tail","nativeSrc":"27475:4:55","nodeType":"YulIdentifier","src":"27475:4:55"}]}]},"name":"abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"27202:419:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"27353:9:55","nodeType":"YulTypedName","src":"27353:9:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"27368:4:55","nodeType":"YulTypedName","src":"27368:4:55","type":""}],"src":"27202:419:55"},{"body":{"nativeSrc":"27733:115:55","nodeType":"YulBlock","src":"27733:115:55","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"27755:6:55","nodeType":"YulIdentifier","src":"27755:6:55"},{"kind":"number","nativeSrc":"27763:1:55","nodeType":"YulLiteral","src":"27763:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"27751:3:55","nodeType":"YulIdentifier","src":"27751:3:55"},"nativeSrc":"27751:14:55","nodeType":"YulFunctionCall","src":"27751:14:55"},{"hexValue":"45434453413a20696e76616c6964207369676e6174757265202773272076616c","kind":"string","nativeSrc":"27767:34:55","nodeType":"YulLiteral","src":"27767:34:55","type":"","value":"ECDSA: invalid signature 's' val"}],"functionName":{"name":"mstore","nativeSrc":"27744:6:55","nodeType":"YulIdentifier","src":"27744:6:55"},"nativeSrc":"27744:58:55","nodeType":"YulFunctionCall","src":"27744:58:55"},"nativeSrc":"27744:58:55","nodeType":"YulExpressionStatement","src":"27744:58:55"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"27823:6:55","nodeType":"YulIdentifier","src":"27823:6:55"},{"kind":"number","nativeSrc":"27831:2:55","nodeType":"YulLiteral","src":"27831:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"27819:3:55","nodeType":"YulIdentifier","src":"27819:3:55"},"nativeSrc":"27819:15:55","nodeType":"YulFunctionCall","src":"27819:15:55"},{"hexValue":"7565","kind":"string","nativeSrc":"27836:4:55","nodeType":"YulLiteral","src":"27836:4:55","type":"","value":"ue"}],"functionName":{"name":"mstore","nativeSrc":"27812:6:55","nodeType":"YulIdentifier","src":"27812:6:55"},"nativeSrc":"27812:29:55","nodeType":"YulFunctionCall","src":"27812:29:55"},"nativeSrc":"27812:29:55","nodeType":"YulExpressionStatement","src":"27812:29:55"}]},"name":"store_literal_in_memory_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd","nativeSrc":"27627:221:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"27725:6:55","nodeType":"YulTypedName","src":"27725:6:55","type":""}],"src":"27627:221:55"},{"body":{"nativeSrc":"28000:220:55","nodeType":"YulBlock","src":"28000:220:55","statements":[{"nativeSrc":"28010:74:55","nodeType":"YulAssignment","src":"28010:74:55","value":{"arguments":[{"name":"pos","nativeSrc":"28076:3:55","nodeType":"YulIdentifier","src":"28076:3:55"},{"kind":"number","nativeSrc":"28081:2:55","nodeType":"YulLiteral","src":"28081:2:55","type":"","value":"34"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"28017:58:55","nodeType":"YulIdentifier","src":"28017:58:55"},"nativeSrc":"28017:67:55","nodeType":"YulFunctionCall","src":"28017:67:55"},"variableNames":[{"name":"pos","nativeSrc":"28010:3:55","nodeType":"YulIdentifier","src":"28010:3:55"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"28182:3:55","nodeType":"YulIdentifier","src":"28182:3:55"}],"functionName":{"name":"store_literal_in_memory_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd","nativeSrc":"28093:88:55","nodeType":"YulIdentifier","src":"28093:88:55"},"nativeSrc":"28093:93:55","nodeType":"YulFunctionCall","src":"28093:93:55"},"nativeSrc":"28093:93:55","nodeType":"YulExpressionStatement","src":"28093:93:55"},{"nativeSrc":"28195:19:55","nodeType":"YulAssignment","src":"28195:19:55","value":{"arguments":[{"name":"pos","nativeSrc":"28206:3:55","nodeType":"YulIdentifier","src":"28206:3:55"},{"kind":"number","nativeSrc":"28211:2:55","nodeType":"YulLiteral","src":"28211:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"28202:3:55","nodeType":"YulIdentifier","src":"28202:3:55"},"nativeSrc":"28202:12:55","nodeType":"YulFunctionCall","src":"28202:12:55"},"variableNames":[{"name":"end","nativeSrc":"28195:3:55","nodeType":"YulIdentifier","src":"28195:3:55"}]}]},"name":"abi_encode_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd_to_t_string_memory_ptr_fromStack","nativeSrc":"27854:366:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"27988:3:55","nodeType":"YulTypedName","src":"27988:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"27996:3:55","nodeType":"YulTypedName","src":"27996:3:55","type":""}],"src":"27854:366:55"},{"body":{"nativeSrc":"28397:248:55","nodeType":"YulBlock","src":"28397:248:55","statements":[{"nativeSrc":"28407:26:55","nodeType":"YulAssignment","src":"28407:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"28419:9:55","nodeType":"YulIdentifier","src":"28419:9:55"},{"kind":"number","nativeSrc":"28430:2:55","nodeType":"YulLiteral","src":"28430:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"28415:3:55","nodeType":"YulIdentifier","src":"28415:3:55"},"nativeSrc":"28415:18:55","nodeType":"YulFunctionCall","src":"28415:18:55"},"variableNames":[{"name":"tail","nativeSrc":"28407:4:55","nodeType":"YulIdentifier","src":"28407:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"28454:9:55","nodeType":"YulIdentifier","src":"28454:9:55"},{"kind":"number","nativeSrc":"28465:1:55","nodeType":"YulLiteral","src":"28465:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"28450:3:55","nodeType":"YulIdentifier","src":"28450:3:55"},"nativeSrc":"28450:17:55","nodeType":"YulFunctionCall","src":"28450:17:55"},{"arguments":[{"name":"tail","nativeSrc":"28473:4:55","nodeType":"YulIdentifier","src":"28473:4:55"},{"name":"headStart","nativeSrc":"28479:9:55","nodeType":"YulIdentifier","src":"28479:9:55"}],"functionName":{"name":"sub","nativeSrc":"28469:3:55","nodeType":"YulIdentifier","src":"28469:3:55"},"nativeSrc":"28469:20:55","nodeType":"YulFunctionCall","src":"28469:20:55"}],"functionName":{"name":"mstore","nativeSrc":"28443:6:55","nodeType":"YulIdentifier","src":"28443:6:55"},"nativeSrc":"28443:47:55","nodeType":"YulFunctionCall","src":"28443:47:55"},"nativeSrc":"28443:47:55","nodeType":"YulExpressionStatement","src":"28443:47:55"},{"nativeSrc":"28499:139:55","nodeType":"YulAssignment","src":"28499:139:55","value":{"arguments":[{"name":"tail","nativeSrc":"28633:4:55","nodeType":"YulIdentifier","src":"28633:4:55"}],"functionName":{"name":"abi_encode_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd_to_t_string_memory_ptr_fromStack","nativeSrc":"28507:124:55","nodeType":"YulIdentifier","src":"28507:124:55"},"nativeSrc":"28507:131:55","nodeType":"YulFunctionCall","src":"28507:131:55"},"variableNames":[{"name":"tail","nativeSrc":"28499:4:55","nodeType":"YulIdentifier","src":"28499:4:55"}]}]},"name":"abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"28226:419:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"28377:9:55","nodeType":"YulTypedName","src":"28377:9:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"28392:4:55","nodeType":"YulTypedName","src":"28392:4:55","type":""}],"src":"28226:419:55"},{"body":{"nativeSrc":"28691:76:55","nodeType":"YulBlock","src":"28691:76:55","statements":[{"body":{"nativeSrc":"28745:16:55","nodeType":"YulBlock","src":"28745:16:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"28754:1:55","nodeType":"YulLiteral","src":"28754:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"28757:1:55","nodeType":"YulLiteral","src":"28757:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"28747:6:55","nodeType":"YulIdentifier","src":"28747:6:55"},"nativeSrc":"28747:12:55","nodeType":"YulFunctionCall","src":"28747:12:55"},"nativeSrc":"28747:12:55","nodeType":"YulExpressionStatement","src":"28747:12:55"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"28714:5:55","nodeType":"YulIdentifier","src":"28714:5:55"},{"arguments":[{"name":"value","nativeSrc":"28736:5:55","nodeType":"YulIdentifier","src":"28736:5:55"}],"functionName":{"name":"cleanup_t_bool","nativeSrc":"28721:14:55","nodeType":"YulIdentifier","src":"28721:14:55"},"nativeSrc":"28721:21:55","nodeType":"YulFunctionCall","src":"28721:21:55"}],"functionName":{"name":"eq","nativeSrc":"28711:2:55","nodeType":"YulIdentifier","src":"28711:2:55"},"nativeSrc":"28711:32:55","nodeType":"YulFunctionCall","src":"28711:32:55"}],"functionName":{"name":"iszero","nativeSrc":"28704:6:55","nodeType":"YulIdentifier","src":"28704:6:55"},"nativeSrc":"28704:40:55","nodeType":"YulFunctionCall","src":"28704:40:55"},"nativeSrc":"28701:60:55","nodeType":"YulIf","src":"28701:60:55"}]},"name":"validator_revert_t_bool","nativeSrc":"28651:116:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"28684:5:55","nodeType":"YulTypedName","src":"28684:5:55","type":""}],"src":"28651:116:55"},{"body":{"nativeSrc":"28833:77:55","nodeType":"YulBlock","src":"28833:77:55","statements":[{"nativeSrc":"28843:22:55","nodeType":"YulAssignment","src":"28843:22:55","value":{"arguments":[{"name":"offset","nativeSrc":"28858:6:55","nodeType":"YulIdentifier","src":"28858:6:55"}],"functionName":{"name":"mload","nativeSrc":"28852:5:55","nodeType":"YulIdentifier","src":"28852:5:55"},"nativeSrc":"28852:13:55","nodeType":"YulFunctionCall","src":"28852:13:55"},"variableNames":[{"name":"value","nativeSrc":"28843:5:55","nodeType":"YulIdentifier","src":"28843:5:55"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"28898:5:55","nodeType":"YulIdentifier","src":"28898:5:55"}],"functionName":{"name":"validator_revert_t_bool","nativeSrc":"28874:23:55","nodeType":"YulIdentifier","src":"28874:23:55"},"nativeSrc":"28874:30:55","nodeType":"YulFunctionCall","src":"28874:30:55"},"nativeSrc":"28874:30:55","nodeType":"YulExpressionStatement","src":"28874:30:55"}]},"name":"abi_decode_t_bool_fromMemory","nativeSrc":"28773:137:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"28811:6:55","nodeType":"YulTypedName","src":"28811:6:55","type":""},{"name":"end","nativeSrc":"28819:3:55","nodeType":"YulTypedName","src":"28819:3:55","type":""}],"returnVariables":[{"name":"value","nativeSrc":"28827:5:55","nodeType":"YulTypedName","src":"28827:5:55","type":""}],"src":"28773:137:55"},{"body":{"nativeSrc":"28990:271:55","nodeType":"YulBlock","src":"28990:271:55","statements":[{"body":{"nativeSrc":"29036:83:55","nodeType":"YulBlock","src":"29036:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"29038:77:55","nodeType":"YulIdentifier","src":"29038:77:55"},"nativeSrc":"29038:79:55","nodeType":"YulFunctionCall","src":"29038:79:55"},"nativeSrc":"29038:79:55","nodeType":"YulExpressionStatement","src":"29038:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"29011:7:55","nodeType":"YulIdentifier","src":"29011:7:55"},{"name":"headStart","nativeSrc":"29020:9:55","nodeType":"YulIdentifier","src":"29020:9:55"}],"functionName":{"name":"sub","nativeSrc":"29007:3:55","nodeType":"YulIdentifier","src":"29007:3:55"},"nativeSrc":"29007:23:55","nodeType":"YulFunctionCall","src":"29007:23:55"},{"kind":"number","nativeSrc":"29032:2:55","nodeType":"YulLiteral","src":"29032:2:55","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"29003:3:55","nodeType":"YulIdentifier","src":"29003:3:55"},"nativeSrc":"29003:32:55","nodeType":"YulFunctionCall","src":"29003:32:55"},"nativeSrc":"29000:119:55","nodeType":"YulIf","src":"29000:119:55"},{"nativeSrc":"29129:125:55","nodeType":"YulBlock","src":"29129:125:55","statements":[{"nativeSrc":"29144:15:55","nodeType":"YulVariableDeclaration","src":"29144:15:55","value":{"kind":"number","nativeSrc":"29158:1:55","nodeType":"YulLiteral","src":"29158:1:55","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"29148:6:55","nodeType":"YulTypedName","src":"29148:6:55","type":""}]},{"nativeSrc":"29173:71:55","nodeType":"YulAssignment","src":"29173:71:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"29216:9:55","nodeType":"YulIdentifier","src":"29216:9:55"},{"name":"offset","nativeSrc":"29227:6:55","nodeType":"YulIdentifier","src":"29227:6:55"}],"functionName":{"name":"add","nativeSrc":"29212:3:55","nodeType":"YulIdentifier","src":"29212:3:55"},"nativeSrc":"29212:22:55","nodeType":"YulFunctionCall","src":"29212:22:55"},{"name":"dataEnd","nativeSrc":"29236:7:55","nodeType":"YulIdentifier","src":"29236:7:55"}],"functionName":{"name":"abi_decode_t_bool_fromMemory","nativeSrc":"29183:28:55","nodeType":"YulIdentifier","src":"29183:28:55"},"nativeSrc":"29183:61:55","nodeType":"YulFunctionCall","src":"29183:61:55"},"variableNames":[{"name":"value0","nativeSrc":"29173:6:55","nodeType":"YulIdentifier","src":"29173:6:55"}]}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nativeSrc":"28916:345:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"28960:9:55","nodeType":"YulTypedName","src":"28960:9:55","type":""},{"name":"dataEnd","nativeSrc":"28971:7:55","nodeType":"YulTypedName","src":"28971:7:55","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"28983:6:55","nodeType":"YulTypedName","src":"28983:6:55","type":""}],"src":"28916:345:55"},{"body":{"nativeSrc":"29373:123:55","nodeType":"YulBlock","src":"29373:123:55","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"29395:6:55","nodeType":"YulIdentifier","src":"29395:6:55"},{"kind":"number","nativeSrc":"29403:1:55","nodeType":"YulLiteral","src":"29403:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"29391:3:55","nodeType":"YulIdentifier","src":"29391:3:55"},"nativeSrc":"29391:14:55","nodeType":"YulFunctionCall","src":"29391:14:55"},{"hexValue":"5361666545524332303a204552433230206f7065726174696f6e20646964206e","kind":"string","nativeSrc":"29407:34:55","nodeType":"YulLiteral","src":"29407:34:55","type":"","value":"SafeERC20: ERC20 operation did n"}],"functionName":{"name":"mstore","nativeSrc":"29384:6:55","nodeType":"YulIdentifier","src":"29384:6:55"},"nativeSrc":"29384:58:55","nodeType":"YulFunctionCall","src":"29384:58:55"},"nativeSrc":"29384:58:55","nodeType":"YulExpressionStatement","src":"29384:58:55"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"29463:6:55","nodeType":"YulIdentifier","src":"29463:6:55"},{"kind":"number","nativeSrc":"29471:2:55","nodeType":"YulLiteral","src":"29471:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"29459:3:55","nodeType":"YulIdentifier","src":"29459:3:55"},"nativeSrc":"29459:15:55","nodeType":"YulFunctionCall","src":"29459:15:55"},{"hexValue":"6f742073756363656564","kind":"string","nativeSrc":"29476:12:55","nodeType":"YulLiteral","src":"29476:12:55","type":"","value":"ot succeed"}],"functionName":{"name":"mstore","nativeSrc":"29452:6:55","nodeType":"YulIdentifier","src":"29452:6:55"},"nativeSrc":"29452:37:55","nodeType":"YulFunctionCall","src":"29452:37:55"},"nativeSrc":"29452:37:55","nodeType":"YulExpressionStatement","src":"29452:37:55"}]},"name":"store_literal_in_memory_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","nativeSrc":"29267:229:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"29365:6:55","nodeType":"YulTypedName","src":"29365:6:55","type":""}],"src":"29267:229:55"},{"body":{"nativeSrc":"29648:220:55","nodeType":"YulBlock","src":"29648:220:55","statements":[{"nativeSrc":"29658:74:55","nodeType":"YulAssignment","src":"29658:74:55","value":{"arguments":[{"name":"pos","nativeSrc":"29724:3:55","nodeType":"YulIdentifier","src":"29724:3:55"},{"kind":"number","nativeSrc":"29729:2:55","nodeType":"YulLiteral","src":"29729:2:55","type":"","value":"42"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"29665:58:55","nodeType":"YulIdentifier","src":"29665:58:55"},"nativeSrc":"29665:67:55","nodeType":"YulFunctionCall","src":"29665:67:55"},"variableNames":[{"name":"pos","nativeSrc":"29658:3:55","nodeType":"YulIdentifier","src":"29658:3:55"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"29830:3:55","nodeType":"YulIdentifier","src":"29830:3:55"}],"functionName":{"name":"store_literal_in_memory_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","nativeSrc":"29741:88:55","nodeType":"YulIdentifier","src":"29741:88:55"},"nativeSrc":"29741:93:55","nodeType":"YulFunctionCall","src":"29741:93:55"},"nativeSrc":"29741:93:55","nodeType":"YulExpressionStatement","src":"29741:93:55"},{"nativeSrc":"29843:19:55","nodeType":"YulAssignment","src":"29843:19:55","value":{"arguments":[{"name":"pos","nativeSrc":"29854:3:55","nodeType":"YulIdentifier","src":"29854:3:55"},{"kind":"number","nativeSrc":"29859:2:55","nodeType":"YulLiteral","src":"29859:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"29850:3:55","nodeType":"YulIdentifier","src":"29850:3:55"},"nativeSrc":"29850:12:55","nodeType":"YulFunctionCall","src":"29850:12:55"},"variableNames":[{"name":"end","nativeSrc":"29843:3:55","nodeType":"YulIdentifier","src":"29843:3:55"}]}]},"name":"abi_encode_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd_to_t_string_memory_ptr_fromStack","nativeSrc":"29502:366:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"29636:3:55","nodeType":"YulTypedName","src":"29636:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"29644:3:55","nodeType":"YulTypedName","src":"29644:3:55","type":""}],"src":"29502:366:55"},{"body":{"nativeSrc":"30045:248:55","nodeType":"YulBlock","src":"30045:248:55","statements":[{"nativeSrc":"30055:26:55","nodeType":"YulAssignment","src":"30055:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"30067:9:55","nodeType":"YulIdentifier","src":"30067:9:55"},{"kind":"number","nativeSrc":"30078:2:55","nodeType":"YulLiteral","src":"30078:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"30063:3:55","nodeType":"YulIdentifier","src":"30063:3:55"},"nativeSrc":"30063:18:55","nodeType":"YulFunctionCall","src":"30063:18:55"},"variableNames":[{"name":"tail","nativeSrc":"30055:4:55","nodeType":"YulIdentifier","src":"30055:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"30102:9:55","nodeType":"YulIdentifier","src":"30102:9:55"},{"kind":"number","nativeSrc":"30113:1:55","nodeType":"YulLiteral","src":"30113:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"30098:3:55","nodeType":"YulIdentifier","src":"30098:3:55"},"nativeSrc":"30098:17:55","nodeType":"YulFunctionCall","src":"30098:17:55"},{"arguments":[{"name":"tail","nativeSrc":"30121:4:55","nodeType":"YulIdentifier","src":"30121:4:55"},{"name":"headStart","nativeSrc":"30127:9:55","nodeType":"YulIdentifier","src":"30127:9:55"}],"functionName":{"name":"sub","nativeSrc":"30117:3:55","nodeType":"YulIdentifier","src":"30117:3:55"},"nativeSrc":"30117:20:55","nodeType":"YulFunctionCall","src":"30117:20:55"}],"functionName":{"name":"mstore","nativeSrc":"30091:6:55","nodeType":"YulIdentifier","src":"30091:6:55"},"nativeSrc":"30091:47:55","nodeType":"YulFunctionCall","src":"30091:47:55"},"nativeSrc":"30091:47:55","nodeType":"YulExpressionStatement","src":"30091:47:55"},{"nativeSrc":"30147:139:55","nodeType":"YulAssignment","src":"30147:139:55","value":{"arguments":[{"name":"tail","nativeSrc":"30281:4:55","nodeType":"YulIdentifier","src":"30281:4:55"}],"functionName":{"name":"abi_encode_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd_to_t_string_memory_ptr_fromStack","nativeSrc":"30155:124:55","nodeType":"YulIdentifier","src":"30155:124:55"},"nativeSrc":"30155:131:55","nodeType":"YulFunctionCall","src":"30155:131:55"},"variableNames":[{"name":"tail","nativeSrc":"30147:4:55","nodeType":"YulIdentifier","src":"30147:4:55"}]}]},"name":"abi_encode_tuple_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"29874:419:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"30025:9:55","nodeType":"YulTypedName","src":"30025:9:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"30040:4:55","nodeType":"YulTypedName","src":"30040:4:55","type":""}],"src":"29874:419:55"},{"body":{"nativeSrc":"30405:73:55","nodeType":"YulBlock","src":"30405:73:55","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"30427:6:55","nodeType":"YulIdentifier","src":"30427:6:55"},{"kind":"number","nativeSrc":"30435:1:55","nodeType":"YulLiteral","src":"30435:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"30423:3:55","nodeType":"YulIdentifier","src":"30423:3:55"},"nativeSrc":"30423:14:55","nodeType":"YulFunctionCall","src":"30423:14:55"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nativeSrc":"30439:31:55","nodeType":"YulLiteral","src":"30439:31:55","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nativeSrc":"30416:6:55","nodeType":"YulIdentifier","src":"30416:6:55"},"nativeSrc":"30416:55:55","nodeType":"YulFunctionCall","src":"30416:55:55"},"nativeSrc":"30416:55:55","nodeType":"YulExpressionStatement","src":"30416:55:55"}]},"name":"store_literal_in_memory_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","nativeSrc":"30299:179:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"30397:6:55","nodeType":"YulTypedName","src":"30397:6:55","type":""}],"src":"30299:179:55"},{"body":{"nativeSrc":"30630:220:55","nodeType":"YulBlock","src":"30630:220:55","statements":[{"nativeSrc":"30640:74:55","nodeType":"YulAssignment","src":"30640:74:55","value":{"arguments":[{"name":"pos","nativeSrc":"30706:3:55","nodeType":"YulIdentifier","src":"30706:3:55"},{"kind":"number","nativeSrc":"30711:2:55","nodeType":"YulLiteral","src":"30711:2:55","type":"","value":"29"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"30647:58:55","nodeType":"YulIdentifier","src":"30647:58:55"},"nativeSrc":"30647:67:55","nodeType":"YulFunctionCall","src":"30647:67:55"},"variableNames":[{"name":"pos","nativeSrc":"30640:3:55","nodeType":"YulIdentifier","src":"30640:3:55"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"30812:3:55","nodeType":"YulIdentifier","src":"30812:3:55"}],"functionName":{"name":"store_literal_in_memory_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","nativeSrc":"30723:88:55","nodeType":"YulIdentifier","src":"30723:88:55"},"nativeSrc":"30723:93:55","nodeType":"YulFunctionCall","src":"30723:93:55"},"nativeSrc":"30723:93:55","nodeType":"YulExpressionStatement","src":"30723:93:55"},{"nativeSrc":"30825:19:55","nodeType":"YulAssignment","src":"30825:19:55","value":{"arguments":[{"name":"pos","nativeSrc":"30836:3:55","nodeType":"YulIdentifier","src":"30836:3:55"},{"kind":"number","nativeSrc":"30841:2:55","nodeType":"YulLiteral","src":"30841:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"30832:3:55","nodeType":"YulIdentifier","src":"30832:3:55"},"nativeSrc":"30832:12:55","nodeType":"YulFunctionCall","src":"30832:12:55"},"variableNames":[{"name":"end","nativeSrc":"30825:3:55","nodeType":"YulIdentifier","src":"30825:3:55"}]}]},"name":"abi_encode_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad_to_t_string_memory_ptr_fromStack","nativeSrc":"30484:366:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"30618:3:55","nodeType":"YulTypedName","src":"30618:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"30626:3:55","nodeType":"YulTypedName","src":"30626:3:55","type":""}],"src":"30484:366:55"},{"body":{"nativeSrc":"31027:248:55","nodeType":"YulBlock","src":"31027:248:55","statements":[{"nativeSrc":"31037:26:55","nodeType":"YulAssignment","src":"31037:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"31049:9:55","nodeType":"YulIdentifier","src":"31049:9:55"},{"kind":"number","nativeSrc":"31060:2:55","nodeType":"YulLiteral","src":"31060:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"31045:3:55","nodeType":"YulIdentifier","src":"31045:3:55"},"nativeSrc":"31045:18:55","nodeType":"YulFunctionCall","src":"31045:18:55"},"variableNames":[{"name":"tail","nativeSrc":"31037:4:55","nodeType":"YulIdentifier","src":"31037:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"31084:9:55","nodeType":"YulIdentifier","src":"31084:9:55"},{"kind":"number","nativeSrc":"31095:1:55","nodeType":"YulLiteral","src":"31095:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"31080:3:55","nodeType":"YulIdentifier","src":"31080:3:55"},"nativeSrc":"31080:17:55","nodeType":"YulFunctionCall","src":"31080:17:55"},{"arguments":[{"name":"tail","nativeSrc":"31103:4:55","nodeType":"YulIdentifier","src":"31103:4:55"},{"name":"headStart","nativeSrc":"31109:9:55","nodeType":"YulIdentifier","src":"31109:9:55"}],"functionName":{"name":"sub","nativeSrc":"31099:3:55","nodeType":"YulIdentifier","src":"31099:3:55"},"nativeSrc":"31099:20:55","nodeType":"YulFunctionCall","src":"31099:20:55"}],"functionName":{"name":"mstore","nativeSrc":"31073:6:55","nodeType":"YulIdentifier","src":"31073:6:55"},"nativeSrc":"31073:47:55","nodeType":"YulFunctionCall","src":"31073:47:55"},"nativeSrc":"31073:47:55","nodeType":"YulExpressionStatement","src":"31073:47:55"},{"nativeSrc":"31129:139:55","nodeType":"YulAssignment","src":"31129:139:55","value":{"arguments":[{"name":"tail","nativeSrc":"31263:4:55","nodeType":"YulIdentifier","src":"31263:4:55"}],"functionName":{"name":"abi_encode_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad_to_t_string_memory_ptr_fromStack","nativeSrc":"31137:124:55","nodeType":"YulIdentifier","src":"31137:124:55"},"nativeSrc":"31137:131:55","nodeType":"YulFunctionCall","src":"31137:131:55"},"variableNames":[{"name":"tail","nativeSrc":"31129:4:55","nodeType":"YulIdentifier","src":"31129:4:55"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"30856:419:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"31007:9:55","nodeType":"YulTypedName","src":"31007:9:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"31022:4:55","nodeType":"YulTypedName","src":"31022:4:55","type":""}],"src":"30856:419:55"},{"body":{"nativeSrc":"31342:51:55","nodeType":"YulBlock","src":"31342:51:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"31359:3:55","nodeType":"YulIdentifier","src":"31359:3:55"},{"arguments":[{"name":"value","nativeSrc":"31380:5:55","nodeType":"YulIdentifier","src":"31380:5:55"}],"functionName":{"name":"cleanup_t_uint8","nativeSrc":"31364:15:55","nodeType":"YulIdentifier","src":"31364:15:55"},"nativeSrc":"31364:22:55","nodeType":"YulFunctionCall","src":"31364:22:55"}],"functionName":{"name":"mstore","nativeSrc":"31352:6:55","nodeType":"YulIdentifier","src":"31352:6:55"},"nativeSrc":"31352:35:55","nodeType":"YulFunctionCall","src":"31352:35:55"},"nativeSrc":"31352:35:55","nodeType":"YulExpressionStatement","src":"31352:35:55"}]},"name":"abi_encode_t_uint8_to_t_uint8_fromStack","nativeSrc":"31281:112:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"31330:5:55","nodeType":"YulTypedName","src":"31330:5:55","type":""},{"name":"pos","nativeSrc":"31337:3:55","nodeType":"YulTypedName","src":"31337:3:55","type":""}],"src":"31281:112:55"},{"body":{"nativeSrc":"31577:367:55","nodeType":"YulBlock","src":"31577:367:55","statements":[{"nativeSrc":"31587:27:55","nodeType":"YulAssignment","src":"31587:27:55","value":{"arguments":[{"name":"headStart","nativeSrc":"31599:9:55","nodeType":"YulIdentifier","src":"31599:9:55"},{"kind":"number","nativeSrc":"31610:3:55","nodeType":"YulLiteral","src":"31610:3:55","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"31595:3:55","nodeType":"YulIdentifier","src":"31595:3:55"},"nativeSrc":"31595:19:55","nodeType":"YulFunctionCall","src":"31595:19:55"},"variableNames":[{"name":"tail","nativeSrc":"31587:4:55","nodeType":"YulIdentifier","src":"31587:4:55"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"31668:6:55","nodeType":"YulIdentifier","src":"31668:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"31681:9:55","nodeType":"YulIdentifier","src":"31681:9:55"},{"kind":"number","nativeSrc":"31692:1:55","nodeType":"YulLiteral","src":"31692:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"31677:3:55","nodeType":"YulIdentifier","src":"31677:3:55"},"nativeSrc":"31677:17:55","nodeType":"YulFunctionCall","src":"31677:17:55"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nativeSrc":"31624:43:55","nodeType":"YulIdentifier","src":"31624:43:55"},"nativeSrc":"31624:71:55","nodeType":"YulFunctionCall","src":"31624:71:55"},"nativeSrc":"31624:71:55","nodeType":"YulExpressionStatement","src":"31624:71:55"},{"expression":{"arguments":[{"name":"value1","nativeSrc":"31745:6:55","nodeType":"YulIdentifier","src":"31745:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"31758:9:55","nodeType":"YulIdentifier","src":"31758:9:55"},{"kind":"number","nativeSrc":"31769:2:55","nodeType":"YulLiteral","src":"31769:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"31754:3:55","nodeType":"YulIdentifier","src":"31754:3:55"},"nativeSrc":"31754:18:55","nodeType":"YulFunctionCall","src":"31754:18:55"}],"functionName":{"name":"abi_encode_t_uint8_to_t_uint8_fromStack","nativeSrc":"31705:39:55","nodeType":"YulIdentifier","src":"31705:39:55"},"nativeSrc":"31705:68:55","nodeType":"YulFunctionCall","src":"31705:68:55"},"nativeSrc":"31705:68:55","nodeType":"YulExpressionStatement","src":"31705:68:55"},{"expression":{"arguments":[{"name":"value2","nativeSrc":"31827:6:55","nodeType":"YulIdentifier","src":"31827:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"31840:9:55","nodeType":"YulIdentifier","src":"31840:9:55"},{"kind":"number","nativeSrc":"31851:2:55","nodeType":"YulLiteral","src":"31851:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"31836:3:55","nodeType":"YulIdentifier","src":"31836:3:55"},"nativeSrc":"31836:18:55","nodeType":"YulFunctionCall","src":"31836:18:55"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nativeSrc":"31783:43:55","nodeType":"YulIdentifier","src":"31783:43:55"},"nativeSrc":"31783:72:55","nodeType":"YulFunctionCall","src":"31783:72:55"},"nativeSrc":"31783:72:55","nodeType":"YulExpressionStatement","src":"31783:72:55"},{"expression":{"arguments":[{"name":"value3","nativeSrc":"31909:6:55","nodeType":"YulIdentifier","src":"31909:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"31922:9:55","nodeType":"YulIdentifier","src":"31922:9:55"},{"kind":"number","nativeSrc":"31933:2:55","nodeType":"YulLiteral","src":"31933:2:55","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"31918:3:55","nodeType":"YulIdentifier","src":"31918:3:55"},"nativeSrc":"31918:18:55","nodeType":"YulFunctionCall","src":"31918:18:55"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nativeSrc":"31865:43:55","nodeType":"YulIdentifier","src":"31865:43:55"},"nativeSrc":"31865:72:55","nodeType":"YulFunctionCall","src":"31865:72:55"},"nativeSrc":"31865:72:55","nodeType":"YulExpressionStatement","src":"31865:72:55"}]},"name":"abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed","nativeSrc":"31399:545:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"31525:9:55","nodeType":"YulTypedName","src":"31525:9:55","type":""},{"name":"value3","nativeSrc":"31537:6:55","nodeType":"YulTypedName","src":"31537:6:55","type":""},{"name":"value2","nativeSrc":"31545:6:55","nodeType":"YulTypedName","src":"31545:6:55","type":""},{"name":"value1","nativeSrc":"31553:6:55","nodeType":"YulTypedName","src":"31553:6:55","type":""},{"name":"value0","nativeSrc":"31561:6:55","nodeType":"YulTypedName","src":"31561:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"31572:4:55","nodeType":"YulTypedName","src":"31572:4:55","type":""}],"src":"31399:545:55"},{"body":{"nativeSrc":"32068:195:55","nodeType":"YulBlock","src":"32068:195:55","statements":[{"nativeSrc":"32078:26:55","nodeType":"YulAssignment","src":"32078:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"32090:9:55","nodeType":"YulIdentifier","src":"32090:9:55"},{"kind":"number","nativeSrc":"32101:2:55","nodeType":"YulLiteral","src":"32101:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"32086:3:55","nodeType":"YulIdentifier","src":"32086:3:55"},"nativeSrc":"32086:18:55","nodeType":"YulFunctionCall","src":"32086:18:55"},"variableNames":[{"name":"tail","nativeSrc":"32078:4:55","nodeType":"YulIdentifier","src":"32078:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"32125:9:55","nodeType":"YulIdentifier","src":"32125:9:55"},{"kind":"number","nativeSrc":"32136:1:55","nodeType":"YulLiteral","src":"32136:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"32121:3:55","nodeType":"YulIdentifier","src":"32121:3:55"},"nativeSrc":"32121:17:55","nodeType":"YulFunctionCall","src":"32121:17:55"},{"arguments":[{"name":"tail","nativeSrc":"32144:4:55","nodeType":"YulIdentifier","src":"32144:4:55"},{"name":"headStart","nativeSrc":"32150:9:55","nodeType":"YulIdentifier","src":"32150:9:55"}],"functionName":{"name":"sub","nativeSrc":"32140:3:55","nodeType":"YulIdentifier","src":"32140:3:55"},"nativeSrc":"32140:20:55","nodeType":"YulFunctionCall","src":"32140:20:55"}],"functionName":{"name":"mstore","nativeSrc":"32114:6:55","nodeType":"YulIdentifier","src":"32114:6:55"},"nativeSrc":"32114:47:55","nodeType":"YulFunctionCall","src":"32114:47:55"},"nativeSrc":"32114:47:55","nodeType":"YulExpressionStatement","src":"32114:47:55"},{"nativeSrc":"32170:86:55","nodeType":"YulAssignment","src":"32170:86:55","value":{"arguments":[{"name":"value0","nativeSrc":"32242:6:55","nodeType":"YulIdentifier","src":"32242:6:55"},{"name":"tail","nativeSrc":"32251:4:55","nodeType":"YulIdentifier","src":"32251:4:55"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nativeSrc":"32178:63:55","nodeType":"YulIdentifier","src":"32178:63:55"},"nativeSrc":"32178:78:55","nodeType":"YulFunctionCall","src":"32178:78:55"},"variableNames":[{"name":"tail","nativeSrc":"32170:4:55","nodeType":"YulIdentifier","src":"32170:4:55"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"31950:313:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"32040:9:55","nodeType":"YulTypedName","src":"32040:9:55","type":""},{"name":"value0","nativeSrc":"32052:6:55","nodeType":"YulTypedName","src":"32052:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"32063:4:55","nodeType":"YulTypedName","src":"32063:4:55","type":""}],"src":"31950:313:55"},{"body":{"nativeSrc":"32479:454:55","nodeType":"YulBlock","src":"32479:454:55","statements":[{"nativeSrc":"32489:27:55","nodeType":"YulAssignment","src":"32489:27:55","value":{"arguments":[{"name":"headStart","nativeSrc":"32501:9:55","nodeType":"YulIdentifier","src":"32501:9:55"},{"kind":"number","nativeSrc":"32512:3:55","nodeType":"YulLiteral","src":"32512:3:55","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"32497:3:55","nodeType":"YulIdentifier","src":"32497:3:55"},"nativeSrc":"32497:19:55","nodeType":"YulFunctionCall","src":"32497:19:55"},"variableNames":[{"name":"tail","nativeSrc":"32489:4:55","nodeType":"YulIdentifier","src":"32489:4:55"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"32570:6:55","nodeType":"YulIdentifier","src":"32570:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"32583:9:55","nodeType":"YulIdentifier","src":"32583:9:55"},{"kind":"number","nativeSrc":"32594:1:55","nodeType":"YulLiteral","src":"32594:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"32579:3:55","nodeType":"YulIdentifier","src":"32579:3:55"},"nativeSrc":"32579:17:55","nodeType":"YulFunctionCall","src":"32579:17:55"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nativeSrc":"32526:43:55","nodeType":"YulIdentifier","src":"32526:43:55"},"nativeSrc":"32526:71:55","nodeType":"YulFunctionCall","src":"32526:71:55"},"nativeSrc":"32526:71:55","nodeType":"YulExpressionStatement","src":"32526:71:55"},{"expression":{"arguments":[{"name":"value1","nativeSrc":"32651:6:55","nodeType":"YulIdentifier","src":"32651:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"32664:9:55","nodeType":"YulIdentifier","src":"32664:9:55"},{"kind":"number","nativeSrc":"32675:2:55","nodeType":"YulLiteral","src":"32675:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"32660:3:55","nodeType":"YulIdentifier","src":"32660:3:55"},"nativeSrc":"32660:18:55","nodeType":"YulFunctionCall","src":"32660:18:55"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nativeSrc":"32607:43:55","nodeType":"YulIdentifier","src":"32607:43:55"},"nativeSrc":"32607:72:55","nodeType":"YulFunctionCall","src":"32607:72:55"},"nativeSrc":"32607:72:55","nodeType":"YulExpressionStatement","src":"32607:72:55"},{"expression":{"arguments":[{"name":"value2","nativeSrc":"32733:6:55","nodeType":"YulIdentifier","src":"32733:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"32746:9:55","nodeType":"YulIdentifier","src":"32746:9:55"},{"kind":"number","nativeSrc":"32757:2:55","nodeType":"YulLiteral","src":"32757:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"32742:3:55","nodeType":"YulIdentifier","src":"32742:3:55"},"nativeSrc":"32742:18:55","nodeType":"YulFunctionCall","src":"32742:18:55"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nativeSrc":"32689:43:55","nodeType":"YulIdentifier","src":"32689:43:55"},"nativeSrc":"32689:72:55","nodeType":"YulFunctionCall","src":"32689:72:55"},"nativeSrc":"32689:72:55","nodeType":"YulExpressionStatement","src":"32689:72:55"},{"expression":{"arguments":[{"name":"value3","nativeSrc":"32815:6:55","nodeType":"YulIdentifier","src":"32815:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"32828:9:55","nodeType":"YulIdentifier","src":"32828:9:55"},{"kind":"number","nativeSrc":"32839:2:55","nodeType":"YulLiteral","src":"32839:2:55","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"32824:3:55","nodeType":"YulIdentifier","src":"32824:3:55"},"nativeSrc":"32824:18:55","nodeType":"YulFunctionCall","src":"32824:18:55"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nativeSrc":"32771:43:55","nodeType":"YulIdentifier","src":"32771:43:55"},"nativeSrc":"32771:72:55","nodeType":"YulFunctionCall","src":"32771:72:55"},"nativeSrc":"32771:72:55","nodeType":"YulExpressionStatement","src":"32771:72:55"},{"expression":{"arguments":[{"name":"value4","nativeSrc":"32897:6:55","nodeType":"YulIdentifier","src":"32897:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"32910:9:55","nodeType":"YulIdentifier","src":"32910:9:55"},{"kind":"number","nativeSrc":"32921:3:55","nodeType":"YulLiteral","src":"32921:3:55","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"32906:3:55","nodeType":"YulIdentifier","src":"32906:3:55"},"nativeSrc":"32906:19:55","nodeType":"YulFunctionCall","src":"32906:19:55"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"32853:43:55","nodeType":"YulIdentifier","src":"32853:43:55"},"nativeSrc":"32853:73:55","nodeType":"YulFunctionCall","src":"32853:73:55"},"nativeSrc":"32853:73:55","nodeType":"YulExpressionStatement","src":"32853:73:55"}]},"name":"abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed","nativeSrc":"32269:664:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"32419:9:55","nodeType":"YulTypedName","src":"32419:9:55","type":""},{"name":"value4","nativeSrc":"32431:6:55","nodeType":"YulTypedName","src":"32431:6:55","type":""},{"name":"value3","nativeSrc":"32439:6:55","nodeType":"YulTypedName","src":"32439:6:55","type":""},{"name":"value2","nativeSrc":"32447:6:55","nodeType":"YulTypedName","src":"32447:6:55","type":""},{"name":"value1","nativeSrc":"32455:6:55","nodeType":"YulTypedName","src":"32455:6:55","type":""},{"name":"value0","nativeSrc":"32463:6:55","nodeType":"YulTypedName","src":"32463:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"32474:4:55","nodeType":"YulTypedName","src":"32474:4:55","type":""}],"src":"32269:664:55"}]},"contents":"{\n\n    function allocate_unbounded() -> memPtr {\n        memPtr := mload(64)\n    }\n\n    function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n        revert(0, 0)\n    }\n\n    function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n        revert(0, 0)\n    }\n\n    function cleanup_t_bytes32(value) -> cleaned {\n        cleaned := value\n    }\n\n    function validator_revert_t_bytes32(value) {\n        if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n    }\n\n    function abi_decode_t_bytes32(offset, end) -> value {\n        value := calldataload(offset)\n        validator_revert_t_bytes32(value)\n    }\n\n    function abi_decode_tuple_t_bytes32(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_bytes32(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 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 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 revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n        revert(0, 0)\n    }\n\n    function revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() {\n        revert(0, 0)\n    }\n\n    function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n        revert(0, 0)\n    }\n\n    // bytes\n    function abi_decode_t_bytes_calldata_ptr(offset, end) -> arrayPos, length {\n        if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n        arrayPos := add(offset, 0x20)\n        if gt(add(arrayPos, mul(length, 0x01)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n    }\n\n    function abi_decode_tuple_t_addresst_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2 {\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 := calldataload(add(headStart, 32))\n            if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n            value1, value2 := abi_decode_t_bytes_calldata_ptr(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 cleanup_t_bytes1(value) -> cleaned {\n        cleaned := and(value, 0xff00000000000000000000000000000000000000000000000000000000000000)\n    }\n\n    function abi_encode_t_bytes1_to_t_bytes1_fromStack(value, pos) {\n        mstore(pos, cleanup_t_bytes1(value))\n    }\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\n        mcopy(dst, src, length)\n        mstore(add(dst, length), 0)\n\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 cleanup_t_uint256(value) -> cleaned {\n        cleaned := value\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_t_bytes32_to_t_bytes32_fromStack(value, pos) {\n        mstore(pos, cleanup_t_bytes32(value))\n    }\n\n    function array_length_t_array$_t_uint256_$dyn_memory_ptr(value) -> length {\n\n        length := mload(value)\n\n    }\n\n    function array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack(pos, length) -> updated_pos {\n        mstore(pos, length)\n        updated_pos := add(pos, 0x20)\n    }\n\n    function array_dataslot_t_array$_t_uint256_$dyn_memory_ptr(ptr) -> data {\n        data := ptr\n\n        data := add(ptr, 0x20)\n\n    }\n\n    function abi_encode_t_uint256_to_t_uint256(value, pos) {\n        mstore(pos, cleanup_t_uint256(value))\n    }\n\n    function abi_encodeUpdatedPos_t_uint256_to_t_uint256(value0, pos) -> updatedPos {\n        abi_encode_t_uint256_to_t_uint256(value0, pos)\n        updatedPos := add(pos, 0x20)\n    }\n\n    function array_nextElement_t_array$_t_uint256_$dyn_memory_ptr(ptr) -> next {\n        next := add(ptr, 0x20)\n    }\n\n    // uint256[] -> uint256[]\n    function abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value, pos)  -> end  {\n        let length := array_length_t_array$_t_uint256_$dyn_memory_ptr(value)\n        pos := array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack(pos, length)\n        let baseRef := array_dataslot_t_array$_t_uint256_$dyn_memory_ptr(value)\n        let srcPtr := baseRef\n        for { let i := 0 } lt(i, length) { i := add(i, 1) }\n        {\n            let elementValue0 := mload(srcPtr)\n            pos := abi_encodeUpdatedPos_t_uint256_to_t_uint256(elementValue0, pos)\n            srcPtr := array_nextElement_t_array$_t_uint256_$dyn_memory_ptr(srcPtr)\n        }\n        end := pos\n    }\n\n    function abi_encode_tuple_t_bytes1_t_string_memory_ptr_t_string_memory_ptr_t_uint256_t_address_t_bytes32_t_array$_t_uint256_$dyn_memory_ptr__to_t_bytes1_t_string_memory_ptr_t_string_memory_ptr_t_uint256_t_address_t_bytes32_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart , value6, value5, value4, value3, value2, value1, value0) -> tail {\n        tail := add(headStart, 224)\n\n        abi_encode_t_bytes1_to_t_bytes1_fromStack(value0,  add(headStart, 0))\n\n        mstore(add(headStart, 32), sub(tail, headStart))\n        tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value1,  tail)\n\n        mstore(add(headStart, 64), sub(tail, headStart))\n        tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value2,  tail)\n\n        abi_encode_t_uint256_to_t_uint256_fromStack(value3,  add(headStart, 96))\n\n        abi_encode_t_address_to_t_address_fromStack(value4,  add(headStart, 128))\n\n        abi_encode_t_bytes32_to_t_bytes32_fromStack(value5,  add(headStart, 160))\n\n        mstore(add(headStart, 192), sub(tail, headStart))\n        tail := abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack(value6,  tail)\n\n    }\n\n    // bytes[]\n    function abi_decode_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(offset, end) -> arrayPos, length {\n        if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n        arrayPos := add(offset, 0x20)\n        if gt(add(arrayPos, mul(length, 0x20)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\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_array$_t_bytes_calldata_ptr_$dyn_calldata_ptrt_uint256t_bytes32t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5 {\n        if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n        {\n\n            let offset := calldataload(add(headStart, 0))\n            if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n            value0, value1 := abi_decode_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 32\n\n            value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 64\n\n            value3 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := calldataload(add(headStart, 96))\n            if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n            value4, value5 := abi_decode_t_bytes_calldata_ptr(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function cleanup_t_contract$_IERC20Upgradeable_$617(value) -> cleaned {\n        cleaned := cleanup_t_address(value)\n    }\n\n    function validator_revert_t_contract$_IERC20Upgradeable_$617(value) {\n        if iszero(eq(value, cleanup_t_contract$_IERC20Upgradeable_$617(value))) { revert(0, 0) }\n    }\n\n    function abi_decode_t_contract$_IERC20Upgradeable_$617(offset, end) -> value {\n        value := calldataload(offset)\n        validator_revert_t_contract$_IERC20Upgradeable_$617(value)\n    }\n\n    function abi_decode_tuple_t_contract$_IERC20Upgradeable_$617t_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_contract$_IERC20Upgradeable_$617(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 array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n        mstore(pos, length)\n        updated_pos := add(pos, 0x20)\n    }\n\n    function copy_calldata_to_memory_with_cleanup(src, dst, length) {\n\n        calldatacopy(dst, src, length)\n        mstore(add(dst, length), 0)\n\n    }\n\n    // bytes -> bytes\n    function abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack(start, length, pos) -> end {\n        pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n\n        copy_calldata_to_memory_with_cleanup(start, pos, length)\n        end := add(pos, round_up_to_mul_of_32(length))\n    }\n\n    function abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart , value1, value0) -> tail {\n        tail := add(headStart, 32)\n\n        mstore(add(headStart, 0), sub(tail, headStart))\n        tail := abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack(value0, value1,  tail)\n\n    }\n\n    function store_literal_in_memory_225559eb8402045bea7ff07c35d0ad8c0547830223ac1c21d44fb948d6896ebc(memPtr) {\n\n        mstore(add(memPtr, 0), \"Ownable2Step: caller is not the \")\n\n        mstore(add(memPtr, 32), \"new owner\")\n\n    }\n\n    function abi_encode_t_stringliteral_225559eb8402045bea7ff07c35d0ad8c0547830223ac1c21d44fb948d6896ebc_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 41)\n        store_literal_in_memory_225559eb8402045bea7ff07c35d0ad8c0547830223ac1c21d44fb948d6896ebc(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_225559eb8402045bea7ff07c35d0ad8c0547830223ac1c21d44fb948d6896ebc__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_225559eb8402045bea7ff07c35d0ad8c0547830223ac1c21d44fb948d6896ebc_to_t_string_memory_ptr_fromStack( tail)\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_0x32() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n\n    function revert_error_356d538aaf70fba12156cc466564b792649f8f3befb07b071c91142253e175ad() {\n        revert(0, 0)\n    }\n\n    function revert_error_1e55d03107e9c4f1b5e21c76a16fba166a461117ab153bcce65e6a4ea8e5fc8a() {\n        revert(0, 0)\n    }\n\n    function revert_error_977805620ff29572292dee35f70b0f3f3f73d3fdd0e9f4d7a901c2e43ab18a2e() {\n        revert(0, 0)\n    }\n\n    function access_calldata_tail_t_bytes_calldata_ptr(base_ref, ptr_to_tail) -> addr, length {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, sub(sub(calldatasize(), base_ref), sub(0x20, 1)))) { revert_error_356d538aaf70fba12156cc466564b792649f8f3befb07b071c91142253e175ad() }\n        addr := add(base_ref, rel_offset_of_tail)\n\n        length := calldataload(addr)\n        if gt(length, 0xffffffffffffffff) { revert_error_1e55d03107e9c4f1b5e21c76a16fba166a461117ab153bcce65e6a4ea8e5fc8a() }\n        addr := add(addr, 32)\n        if sgt(addr, sub(calldatasize(), mul(length, 0x01))) { revert_error_977805620ff29572292dee35f70b0f3f3f73d3fdd0e9f4d7a901c2e43ab18a2e() }\n\n    }\n\n    function array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n        updated_pos := pos\n    }\n\n    // bytes -> bytes\n    function abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(start, length, pos) -> end {\n        pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n\n        copy_calldata_to_memory_with_cleanup(start, pos, length)\n        end := add(pos, length)\n    }\n\n    function abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value1, value0) -> end {\n\n        pos := abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value0, value1,  pos)\n\n        end := pos\n    }\n\n    function abi_encode_tuple_t_uint256_t_uint256_t_bytes32__to_t_uint256_t_uint256_t_bytes32__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n        tail := add(headStart, 96)\n\n        abi_encode_t_uint256_to_t_uint256_fromStack(value0,  add(headStart, 0))\n\n        abi_encode_t_uint256_to_t_uint256_fromStack(value1,  add(headStart, 32))\n\n        abi_encode_t_bytes32_to_t_bytes32_fromStack(value2,  add(headStart, 64))\n\n    }\n\n    function abi_decode_t_uint256_fromMemory(offset, end) -> value {\n        value := mload(offset)\n        validator_revert_t_uint256(value)\n    }\n\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0 {\n        if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function 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 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 panic_error_0x22() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x22)\n        revert(0, 0x24)\n    }\n\n    function extract_byte_array_length(data) -> length {\n        length := div(data, 2)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) {\n            length := and(length, 0x7f)\n        }\n\n        if eq(outOfPlaceEncoding, lt(length, 32)) {\n            panic_error_0x22()\n        }\n    }\n\n    function store_literal_in_memory_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619(memPtr) {\n\n        mstore(add(memPtr, 0), \"ReentrancyGuard: reentrant call\")\n\n    }\n\n    function abi_encode_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 31)\n        store_literal_in_memory_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619(pos)\n        end := add(pos, 32)\n    }\n\n    function abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__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_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function array_length_t_array$_t_bytes32_$dyn_memory_ptr(value) -> length {\n\n        length := mload(value)\n\n    }\n\n    function array_storeLengthForEncoding_t_array$_t_bytes32_$dyn_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n        updated_pos := pos\n    }\n\n    function array_dataslot_t_array$_t_bytes32_$dyn_memory_ptr(ptr) -> data {\n        data := ptr\n\n        data := add(ptr, 0x20)\n\n    }\n\n    function abi_encode_t_bytes32_to_t_bytes32_inplace(value, pos) {\n        mstore(pos, cleanup_t_bytes32(value))\n    }\n\n    function abi_encodeUpdatedPos_t_bytes32_to_t_bytes32_inplace(value0, pos) -> updatedPos {\n        abi_encode_t_bytes32_to_t_bytes32_inplace(value0, pos)\n        updatedPos := add(pos, 0x20)\n    }\n\n    function array_nextElement_t_array$_t_bytes32_$dyn_memory_ptr(ptr) -> next {\n        next := add(ptr, 0x20)\n    }\n\n    // bytes32[] -> bytes32[]\n    function abi_encode_t_array$_t_bytes32_$dyn_memory_ptr_to_t_array$_t_bytes32_$dyn_memory_ptr_nonPadded_inplace_fromStack(value, pos)  -> end  {\n        let length := array_length_t_array$_t_bytes32_$dyn_memory_ptr(value)\n        pos := array_storeLengthForEncoding_t_array$_t_bytes32_$dyn_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n        let baseRef := array_dataslot_t_array$_t_bytes32_$dyn_memory_ptr(value)\n        let srcPtr := baseRef\n        for { let i := 0 } lt(i, length) { i := add(i, 1) }\n        {\n            let elementValue0 := mload(srcPtr)\n            pos := abi_encodeUpdatedPos_t_bytes32_to_t_bytes32_inplace(elementValue0, pos)\n            srcPtr := array_nextElement_t_array$_t_bytes32_$dyn_memory_ptr(srcPtr)\n        }\n        end := pos\n    }\n\n    function abi_encode_tuple_packed_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value0) -> end {\n\n        pos := abi_encode_t_array$_t_bytes32_$dyn_memory_ptr_to_t_array$_t_bytes32_$dyn_memory_ptr_nonPadded_inplace_fromStack(value0,  pos)\n\n        end := pos\n    }\n\n    function abi_encode_tuple_t_bytes32_t_address_t_bytes32_t_uint256_t_bytes32__to_t_bytes32_t_address_t_bytes32_t_uint256_t_bytes32__fromStack_reversed(headStart , value4, value3, value2, value1, value0) -> tail {\n        tail := add(headStart, 160)\n\n        abi_encode_t_bytes32_to_t_bytes32_fromStack(value0,  add(headStart, 0))\n\n        abi_encode_t_address_to_t_address_fromStack(value1,  add(headStart, 32))\n\n        abi_encode_t_bytes32_to_t_bytes32_fromStack(value2,  add(headStart, 64))\n\n        abi_encode_t_uint256_to_t_uint256_fromStack(value3,  add(headStart, 96))\n\n        abi_encode_t_bytes32_to_t_bytes32_fromStack(value4,  add(headStart, 128))\n\n    }\n\n    function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n        tail := add(headStart, 64)\n\n        abi_encode_t_address_to_t_address_fromStack(value0,  add(headStart, 0))\n\n        abi_encode_t_uint256_to_t_uint256_fromStack(value1,  add(headStart, 32))\n\n    }\n\n    function cleanup_t_rational_0_by_1(value) -> cleaned {\n        cleaned := value\n    }\n\n    function cleanup_t_uint8(value) -> cleaned {\n        cleaned := and(value, 0xff)\n    }\n\n    function identity(value) -> ret {\n        ret := value\n    }\n\n    function convert_t_rational_0_by_1_to_t_uint8(value) -> converted {\n        converted := cleanup_t_uint8(identity(cleanup_t_rational_0_by_1(value)))\n    }\n\n    function abi_encode_t_rational_0_by_1_to_t_uint8_fromStack(value, pos) {\n        mstore(pos, convert_t_rational_0_by_1_to_t_uint8(value))\n    }\n\n    function abi_encode_tuple_t_address_t_rational_0_by_1__to_t_address_t_uint8__fromStack_reversed(headStart , value1, value0) -> tail {\n        tail := add(headStart, 64)\n\n        abi_encode_t_address_to_t_address_fromStack(value0,  add(headStart, 0))\n\n        abi_encode_t_rational_0_by_1_to_t_uint8_fromStack(value1,  add(headStart, 32))\n\n    }\n\n    function store_literal_in_memory_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c(memPtr) {\n\n        mstore(add(memPtr, 0), \"Address: insufficient balance fo\")\n\n        mstore(add(memPtr, 32), \"r call\")\n\n    }\n\n    function abi_encode_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 38)\n        store_literal_in_memory_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__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_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function array_length_t_bytes_memory_ptr(value) -> length {\n\n        length := mload(value)\n\n    }\n\n    function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n        let length := array_length_t_bytes_memory_ptr(value)\n        pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n        copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n        end := add(pos, length)\n    }\n\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value0) -> end {\n\n        pos := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value0,  pos)\n\n        end := pos\n    }\n\n    function panic_error_0x21() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n\n    function store_literal_in_memory_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be(memPtr) {\n\n        mstore(add(memPtr, 0), \"ECDSA: invalid signature\")\n\n    }\n\n    function abi_encode_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 24)\n        store_literal_in_memory_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be(pos)\n        end := add(pos, 32)\n    }\n\n    function abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__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_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77(memPtr) {\n\n        mstore(add(memPtr, 0), \"ECDSA: invalid signature length\")\n\n    }\n\n    function abi_encode_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 31)\n        store_literal_in_memory_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77(pos)\n        end := add(pos, 32)\n    }\n\n    function abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__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_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd(memPtr) {\n\n        mstore(add(memPtr, 0), \"ECDSA: invalid signature 's' val\")\n\n        mstore(add(memPtr, 32), \"ue\")\n\n    }\n\n    function abi_encode_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 34)\n        store_literal_in_memory_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__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_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function validator_revert_t_bool(value) {\n        if iszero(eq(value, cleanup_t_bool(value))) { revert(0, 0) }\n    }\n\n    function abi_decode_t_bool_fromMemory(offset, end) -> value {\n        value := mload(offset)\n        validator_revert_t_bool(value)\n    }\n\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0 {\n        if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_bool_fromMemory(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function store_literal_in_memory_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd(memPtr) {\n\n        mstore(add(memPtr, 0), \"SafeERC20: ERC20 operation did n\")\n\n        mstore(add(memPtr, 32), \"ot succeed\")\n\n    }\n\n    function abi_encode_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 42)\n        store_literal_in_memory_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd__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_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad(memPtr) {\n\n        mstore(add(memPtr, 0), \"Address: call to non-contract\")\n\n    }\n\n    function abi_encode_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 29)\n        store_literal_in_memory_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad(pos)\n        end := add(pos, 32)\n    }\n\n    function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__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_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad_to_t_string_memory_ptr_fromStack( tail)\n\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_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n        tail := add(headStart, 128)\n\n        abi_encode_t_bytes32_to_t_bytes32_fromStack(value0,  add(headStart, 0))\n\n        abi_encode_t_uint8_to_t_uint8_fromStack(value1,  add(headStart, 32))\n\n        abi_encode_t_bytes32_to_t_bytes32_fromStack(value2,  add(headStart, 64))\n\n        abi_encode_t_bytes32_to_t_bytes32_fromStack(value3,  add(headStart, 96))\n\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 abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart , value4, value3, value2, value1, value0) -> tail {\n        tail := add(headStart, 160)\n\n        abi_encode_t_bytes32_to_t_bytes32_fromStack(value0,  add(headStart, 0))\n\n        abi_encode_t_bytes32_to_t_bytes32_fromStack(value1,  add(headStart, 32))\n\n        abi_encode_t_bytes32_to_t_bytes32_fromStack(value2,  add(headStart, 64))\n\n        abi_encode_t_uint256_to_t_uint256_fromStack(value3,  add(headStart, 96))\n\n        abi_encode_t_address_to_t_address_fromStack(value4,  add(headStart, 128))\n\n    }\n\n}\n","id":55,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"3582":[{"length":32,"start":4202}],"3584":[{"length":32,"start":4160}],"3586":[{"length":32,"start":4118}],"3588":[{"length":32,"start":4526}],"3590":[{"length":32,"start":4559}],"3593":[{"length":32,"start":926}],"3596":[{"length":32,"start":968}]},"linkReferences":{},"object":"608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c806384b0196e11610088578063aec42a1711610063578063aec42a171461019e578063b8dc491b146101b1578063e30c3978146101c4578063f2fde38b146101d5575f5ffd5b806384b0196e1461015f5780638da5cb5b1461017a578063a0e069091461018b575f5ffd5b80630b0fdb3d146100cf57806336f95670146101075780634650c3081461011c57806365d65e861461012f578063715018a61461014f57806379ba509714610157575b5f5ffd5b6100f16100dd366004611236565b60066020525f908152604090205460ff1681565b6040516100fe919061125e565b60405180910390f35b61011a610115366004611290565b6101e8565b005b61011a61012a3660046112f5565b610272565b600554610142906001600160a01b031681565b6040516100fe9190611355565b61011a61033d565b61011a610350565b610167610391565b6040516100fe9796959493929190611411565b6002546001600160a01b0316610142565b61011a6101993660046114d4565b610417565b61011a6101ac36600461158d565b610634565b61011a6101bf36600461158d565b6106c6565b6003546001600160a01b0316610142565b61011a6101e3366004611290565b610813565b6101f0610884565b6001600160a01b0381166102175760405163d92e233d60e01b815260040160405180910390fd5b6005546040516001600160a01b038084169216907f93f9d0472cb0fc12887bf8f1f15cc7a197a5acd122ab23b8dcc25de0191e0d5e905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6002546001600160a01b0316331480159061028d5750333014155b156102ab5760405163c183bcef60e01b815260040160405180910390fd5b6102f482828080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250506001600160a01b038716929150506108ae565b50826001600160a01b03167f9bef3e449f25221aa6ab339a3eb184cfc318ea4ac85512f02e6c22b913324eb283836040516103309291906115f4565b60405180910390a2505050565b610345610884565b61034e5f6108fa565b565b60035433906001600160a01b031681146103855760405162461bcd60e51b815260040161037c9061164e565b60405180910390fd5b61038e816108fa565b50565b5f606080828080836103c37f000000000000000000000000000000000000000000000000000000000000000083610913565b6103ee7f00000000000000000000000000000000000000000000000000000000000000006001610913565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b61041f6109bc565b5f85900361044057604051633ce6169160e11b815260040160405180910390fd5b834211156104615760405163b08ce5b360e01b815260040160405180910390fd5b5f8190036104825760405163166c700d60e21b815260040160405180910390fd5b5f8381526006602052604090205460ff16156104b157604051630ced304360e01b815260040160405180910390fd5b5f838152600660205260408120805460ff191660011790556104d633888888886109e5565b90505f6105188285858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610b2092505050565b6005549091506001600160a01b03808316911614610548576040516282b42960e81b815260040160405180910390fd5b5f5b878110156105e1575f80308b8b8581811061056757610567611672565b90506020028101906105799190611686565b6040516105879291906116f3565b5f604051808303815f865af19150503d805f81146105c0576040519150601f19603f3d011682016040523d82523d5f602084013e6105c5565b606091505b5091509150816105d757805160208201fd5b505060010161054a565b5060405133907f704d392ae0677a1e26b4358b06346bfa8e93d60615e56c3764c867b35c14746390610618908a908a908a906116ff565b60405180910390a2505061062c6001600455565b505050505050565b6002546001600160a01b0316331480159061064f5750333014155b1561066d5760405163c183bcef60e01b815260040160405180910390fd5b6106826001600160a01b038316825f19610b42565b806001600160a01b0316826001600160a01b03167fc98957213fcf2b4a542a2f88d854c847b00e87d84fc4a7e66a009196f1cf224060405160405180910390a35050565b6002546001600160a01b031633148015906106e15750333014155b156106ff5760405163c183bcef60e01b815260040160405180910390fd5b6001600160a01b038216158061071c57506001600160a01b038116155b1561073a5760405163d92e233d60e01b815260040160405180910390fd5b6040516370a0823160e01b81525f906001600160a01b038416906370a0823190610768903090600401611355565b602060405180830381865afa158015610783573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107a79190611732565b905080156107c3576107c36001600160a01b0384168383610c06565b816001600160a01b0316836001600160a01b03167f7b09c29f9106defeccc9ac3b823f3aad0b470d120e5df7aed033b5c43a4bf718836040516108069190611750565b60405180910390a3505050565b61081b610884565b600380546001600160a01b0383166001600160a01b0319909116811790915561084c6002546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6002546001600160a01b0316331461034e5760405162461bcd60e51b815260040161037c90611792565b60606108f183835f6040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c65640000815250610c2a565b90505b92915050565b600380546001600160a01b031916905561038e81610cc4565b606060ff831461092d5761092683610d15565b90506108f4565b818054610939906117b6565b80601f0160208091040260200160405190810160405280929190818152602001828054610965906117b6565b80156109b05780601f10610987576101008083540402835291602001916109b0565b820191905f5260205f20905b81548152906001019060200180831161099357829003601f168201915b505050505090506108f4565b6002600454036109de5760405162461bcd60e51b815260040161037c90611815565b6002600455565b5f808467ffffffffffffffff811115610a0057610a0061165e565b604051908082528060200260200182016040528015610a29578160200160208202803683370190505b5090505f5b85811015610a9557868682818110610a4857610a48611672565b9050602002810190610a5a9190611686565b604051610a689291906116f3565b6040518091039020828281518110610a8257610a82611672565b6020908102919091010152600101610a2e565b50610b137f0c545221cb71dea46b10349167d787bba14b050610e9eab8d78f64fe47b581368883604051602001610acc919061185a565b604051602081830303815290604052805190602001208787604051602001610af8959493929190611865565b60405160208183030381529060405280519060200120610d52565b9150505b95945050505050565b5f5f5f610b2d8585610d7e565b91509150610b3a81610dc0565b509392505050565b5f63095ea7b360e01b8383604051602401610b5e9291906118b1565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529050610b9c8482610e6e565b610c0057610bf68463095ea7b360e01b855f604051602401610bbf9291906118df565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610f0b565b610c008482610f0b565b50505050565b610c258363a9059cbb60e01b8484604051602401610bbf9291906118b1565b505050565b606082471015610c4c5760405162461bcd60e51b815260040161037c9061193c565b5f5f866001600160a01b03168587604051610c67919061196d565b5f6040518083038185875af1925050503d805f8114610ca1576040519150601f19603f3d011682016040523d82523d5f602084013e610ca6565b606091505b5091509150610cb787838387610f9b565b925050505b949350505050565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60605f610d2183610fe3565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f6108f4610d5e61100a565b8360405161190160f01b8152600281019290925260228201526042902090565b5f5f8251604103610db2576020830151604084015160608501515f1a610da687828585611099565b94509450505050610db9565b505f905060025b9250929050565b5f816004811115610dd357610dd3611978565b03610ddb5750565b6001816004811115610def57610def611978565b03610e0c5760405162461bcd60e51b815260040161037c906119bf565b6002816004811115610e2057610e20611978565b03610e3d5760405162461bcd60e51b815260040161037c90611a02565b6003816004811115610e5157610e51611978565b0361038e5760405162461bcd60e51b815260040161037c90611a50565b5f5f5f846001600160a01b031684604051610e89919061196d565b5f604051808303815f865af19150503d805f8114610ec2576040519150601f19603f3d011682016040523d82523d5f602084013e610ec7565b606091505b5091509150818015610ef1575080511580610ef1575080806020019051810190610ef19190611a73565b8015610b175750505050506001600160a01b03163b151590565b5f610f5f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166111489092919063ffffffff16565b905080515f1480610f7f575080806020019051810190610f7f9190611a73565b610c255760405162461bcd60e51b815260040161037c90611ad7565b60608315610fd95782515f03610fd2576001600160a01b0385163b610fd25760405162461bcd60e51b815260040161037c90611b1a565b5081610cbc565b610cbc8383611160565b5f60ff8216601f8111156108f457604051632cd44ac360e21b815260040160405180910390fd5b5f306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561106257507f000000000000000000000000000000000000000000000000000000000000000046145b1561108c57507f000000000000000000000000000000000000000000000000000000000000000090565b61109461118a565b905090565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156110ce57505f9050600361113f565b5f6001878787876040515f81526020016040526040516110f19493929190611b33565b6020604051602081039080840390855afa158015611111573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611139575f6001925092505061113f565b91505f90505b94509492505050565b606061115684845f85610c2a565b90505b9392505050565b8151156111705781518083602001fd5b8060405162461bcd60e51b815260040161037c9190611b68565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000004630604051602001611204959493929190611b79565b60405160208183030381529060405280519060200120905090565b805b811461038e575f5ffd5b80356108f48161121f565b5f60208284031215611249576112495f5ffd5b5f610cbc848461122b565b8015155b82525050565b602081016108f48284611254565b5f6001600160a01b0382166108f4565b6112218161126c565b80356108f48161127c565b5f602082840312156112a3576112a35f5ffd5b5f610cbc8484611285565b5f5f83601f8401126112c1576112c15f5ffd5b50813567ffffffffffffffff8111156112db576112db5f5ffd5b602083019150836001820283011115610db957610db95f5ffd5b5f5f5f6040848603121561130a5761130a5f5ffd5b5f6113158686611285565b935050602084013567ffffffffffffffff811115611334576113345f5ffd5b611340868287016112ae565b92509250509250925092565b6112588161126c565b602081016108f4828461134c565b6001600160f81b03198116611258565b8281835e505f910152565b5f611387825190565b80845260208401935061139e818560208601611373565b601f19601f8201165b9093019392505050565b80611258565b5f6113c283836113b1565b505060200190565b5f6113d3825190565b8084526020938401938301805f5b838110156114065781516113f588826113b7565b9750602083019250506001016113e1565b509495945050505050565b60e0810161141f828a611363565b8181036020830152611431818961137e565b90508181036040830152611445818861137e565b905061145460608301876113b1565b611461608083018661134c565b61146e60a08301856113b1565b81810360c083015261148081846113ca565b9998505050505050505050565b5f5f83601f8401126114a0576114a05f5ffd5b50813567ffffffffffffffff8111156114ba576114ba5f5ffd5b602083019150836020820283011115610db957610db95f5ffd5b5f5f5f5f5f5f608087890312156114ec576114ec5f5ffd5b863567ffffffffffffffff811115611505576115055f5ffd5b61151189828a0161148d565b9650965050602061152489828a0161122b565b945050604061153589828a0161122b565b935050606087013567ffffffffffffffff811115611554576115545f5ffd5b61156089828a016112ae565b92509250509295509295509295565b5f6108f48261126c565b6112218161156f565b80356108f481611579565b5f5f604083850312156115a1576115a15f5ffd5b5f6115ac8585611582565b92505060206115bd85828601611285565b9150509250929050565b82818337505f910152565b8183525f6020840193506115e78385846115c7565b601f19601f8401166113a7565b602080825281016111568184866115d2565b602981525f602082017f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865208152683732bb9037bbb732b960b91b602082015291505b5060400190565b602080825281016108f481611606565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f808335601e193685900301811261169f5761169f5f5ffd5b80840192508235915067ffffffffffffffff8211156116bf576116bf5f5ffd5b6020830192506001820236038313156116d9576116d95f5ffd5b509250929050565b5f6116ed8385846115c7565b50500190565b5f610cbc8284866116e1565b6060810161170d82866113b1565b61171a60208301856113b1565b610cbc60408301846113b1565b80516108f48161121f565b5f60208284031215611745576117455f5ffd5b5f610cbc8484611727565b602081016108f482846113b1565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657291019081525f5b5060200190565b602080825281016108f48161175e565b634e487b7160e01b5f52602260045260245ffd5b6002810460018216806117ca57607f821691505b6020821081036117dc576117dc6117a2565b50919050565b601f81525f602082017f5265656e7472616e637947756172643a207265656e7472616e742063616c6c008152915061178b565b602080825281016108f4816117e2565b5f61182e825190565b60208301805f5b8381101561140657815161184988826113b7565b975060208301925050600101611835565b5f6111598284611825565b60a0810161187382886113b1565b611880602083018761134c565b61188d60408301866113b1565b61189a60608301856113b1565b6118a760808301846113b1565b9695505050505050565b604081016118bf828561134c565b61115960208301846113b1565b5f60ff82166108f4565b611258816118cc565b604081016118ed828561134c565b61115960208301846118d6565b602681525f602082017f416464726573733a20696e73756666696369656e742062616c616e636520666f8152651c8818d85b1b60d21b60208201529150611647565b602080825281016108f4816118fa565b5f611955825190565b611963818560208601611373565b9290920192915050565b5f611159828461194c565b634e487b7160e01b5f52602160045260245ffd5b601881525f602082017f45434453413a20696e76616c6964207369676e617475726500000000000000008152915061178b565b602080825281016108f48161198c565b601f81525f602082017f45434453413a20696e76616c6964207369676e6174757265206c656e677468008152915061178b565b602080825281016108f4816119cf565b602281525f602082017f45434453413a20696e76616c6964207369676e6174757265202773272076616c815261756560f01b60208201529150611647565b602080825281016108f481611a12565b801515611221565b80516108f481611a60565b5f60208284031215611a8657611a865f5ffd5b5f610cbc8484611a68565b602a81525f602082017f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b60208201529150611647565b602080825281016108f481611a91565b601d81525f602082017f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000008152915061178b565b602080825281016108f481611ae7565b60ff8116611258565b60808101611b4182876113b1565b611b4e6020830186611b2a565b611b5b60408301856113b1565b610b1760608301846113b1565b602080825281016108f1818461137e565b60a08101611b8782886113b1565b611b9460208301876113b1565b611ba160408301866113b1565b611bae60608301856113b1565b6118a7608083018461134c56fea2646970667358221220e9fdb211ce64c20212021c9e5de9fcfc940a1c512fe7fccef3a30715695d872b64736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCB JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x84B0196E GT PUSH2 0x88 JUMPI DUP1 PUSH4 0xAEC42A17 GT PUSH2 0x63 JUMPI DUP1 PUSH4 0xAEC42A17 EQ PUSH2 0x19E JUMPI DUP1 PUSH4 0xB8DC491B EQ PUSH2 0x1B1 JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH2 0x1C4 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x1D5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x84B0196E EQ PUSH2 0x15F JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x17A JUMPI DUP1 PUSH4 0xA0E06909 EQ PUSH2 0x18B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xB0FDB3D EQ PUSH2 0xCF JUMPI DUP1 PUSH4 0x36F95670 EQ PUSH2 0x107 JUMPI DUP1 PUSH4 0x4650C308 EQ PUSH2 0x11C JUMPI DUP1 PUSH4 0x65D65E86 EQ PUSH2 0x12F JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x14F JUMPI DUP1 PUSH4 0x79BA5097 EQ PUSH2 0x157 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xF1 PUSH2 0xDD CALLDATASIZE PUSH1 0x4 PUSH2 0x1236 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFE SWAP2 SWAP1 PUSH2 0x125E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x11A PUSH2 0x115 CALLDATASIZE PUSH1 0x4 PUSH2 0x1290 JUMP JUMPDEST PUSH2 0x1E8 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11A PUSH2 0x12A CALLDATASIZE PUSH1 0x4 PUSH2 0x12F5 JUMP JUMPDEST PUSH2 0x272 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x142 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFE SWAP2 SWAP1 PUSH2 0x1355 JUMP JUMPDEST PUSH2 0x11A PUSH2 0x33D JUMP JUMPDEST PUSH2 0x11A PUSH2 0x350 JUMP JUMPDEST PUSH2 0x167 PUSH2 0x391 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFE SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1411 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x142 JUMP JUMPDEST PUSH2 0x11A PUSH2 0x199 CALLDATASIZE PUSH1 0x4 PUSH2 0x14D4 JUMP JUMPDEST PUSH2 0x417 JUMP JUMPDEST PUSH2 0x11A PUSH2 0x1AC CALLDATASIZE PUSH1 0x4 PUSH2 0x158D JUMP JUMPDEST PUSH2 0x634 JUMP JUMPDEST PUSH2 0x11A PUSH2 0x1BF CALLDATASIZE PUSH1 0x4 PUSH2 0x158D JUMP JUMPDEST PUSH2 0x6C6 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x142 JUMP JUMPDEST PUSH2 0x11A PUSH2 0x1E3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1290 JUMP JUMPDEST PUSH2 0x813 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x884 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x217 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x93F9D0472CB0FC12887BF8F1F15CC7A197A5ACD122AB23B8DCC25DE0191E0D5E SWAP1 PUSH0 SWAP1 LOG3 PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 ISZERO SWAP1 PUSH2 0x28D JUMPI POP CALLER ADDRESS EQ ISZERO JUMPDEST ISZERO PUSH2 0x2AB JUMPI PUSH1 0x40 MLOAD PUSH4 0xC183BCEF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2F4 DUP3 DUP3 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP3 SWAP2 POP POP PUSH2 0x8AE JUMP JUMPDEST POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x9BEF3E449F25221AA6AB339A3EB184CFC318EA4AC85512F02E6C22B913324EB2 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x330 SWAP3 SWAP2 SWAP1 PUSH2 0x15F4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH2 0x345 PUSH2 0x884 JUMP JUMPDEST PUSH2 0x34E PUSH0 PUSH2 0x8FA JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x3 SLOAD CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 EQ PUSH2 0x385 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x37C SWAP1 PUSH2 0x164E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x38E DUP2 PUSH2 0x8FA JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP1 DUP3 DUP1 DUP1 DUP4 PUSH2 0x3C3 PUSH32 0x0 DUP4 PUSH2 0x913 JUMP JUMPDEST PUSH2 0x3EE PUSH32 0x0 PUSH1 0x1 PUSH2 0x913 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0xF PUSH1 0xF8 SHL SWAP12 SWAP4 SWAP11 POP SWAP2 SWAP9 POP CHAINID SWAP8 POP ADDRESS SWAP7 POP SWAP5 POP SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH2 0x41F PUSH2 0x9BC JUMP JUMPDEST PUSH0 DUP6 SWAP1 SUB PUSH2 0x440 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3CE61691 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 TIMESTAMP GT ISZERO PUSH2 0x461 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB08CE5B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP2 SWAP1 SUB PUSH2 0x482 JUMPI PUSH1 0x40 MLOAD PUSH4 0x166C700D PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP4 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x4B1 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCED3043 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP4 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x4D6 CALLER DUP9 DUP9 DUP9 DUP9 PUSH2 0x9E5 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x518 DUP3 DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0xB20 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP2 AND EQ PUSH2 0x548 JUMPI PUSH1 0x40 MLOAD PUSH3 0x82B429 PUSH1 0xE8 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x5E1 JUMPI PUSH0 DUP1 ADDRESS DUP12 DUP12 DUP6 DUP2 DUP2 LT PUSH2 0x567 JUMPI PUSH2 0x567 PUSH2 0x1672 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x579 SWAP2 SWAP1 PUSH2 0x1686 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x587 SWAP3 SWAP2 SWAP1 PUSH2 0x16F3 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x5C0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x5C5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x5D7 JUMPI DUP1 MLOAD PUSH1 0x20 DUP3 ADD REVERT JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x54A JUMP JUMPDEST POP PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0x704D392AE0677A1E26B4358B06346BFA8E93D60615E56C3764C867B35C147463 SWAP1 PUSH2 0x618 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH2 0x16FF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP PUSH2 0x62C PUSH1 0x1 PUSH1 0x4 SSTORE JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 ISZERO SWAP1 PUSH2 0x64F JUMPI POP CALLER ADDRESS EQ ISZERO JUMPDEST ISZERO PUSH2 0x66D JUMPI PUSH1 0x40 MLOAD PUSH4 0xC183BCEF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x682 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP3 PUSH0 NOT PUSH2 0xB42 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xC98957213FCF2B4A542A2F88D854C847B00E87D84FC4A7E66A009196F1CF2240 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ DUP1 ISZERO SWAP1 PUSH2 0x6E1 JUMPI POP CALLER ADDRESS EQ ISZERO JUMPDEST ISZERO PUSH2 0x6FF JUMPI PUSH1 0x40 MLOAD PUSH4 0xC183BCEF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO DUP1 PUSH2 0x71C JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO JUMPDEST ISZERO PUSH2 0x73A JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x768 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x1355 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x783 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7A7 SWAP2 SWAP1 PUSH2 0x1732 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x7C3 JUMPI PUSH2 0x7C3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 DUP4 PUSH2 0xC06 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x7B09C29F9106DEFECCC9AC3B823F3AAD0B470D120E5DF7AED033B5C43A4BF718 DUP4 PUSH1 0x40 MLOAD PUSH2 0x806 SWAP2 SWAP1 PUSH2 0x1750 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x81B PUSH2 0x884 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH2 0x84C PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x38D16B8CAC22D99FC7C124B9CD0DE2D3FA1FAEF420BFE791D8C362D765E22700 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x34E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x37C SWAP1 PUSH2 0x1792 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x8F1 DUP4 DUP4 PUSH0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x416464726573733A206C6F772D6C6576656C2063616C6C206661696C65640000 DUP2 MSTORE POP PUSH2 0xC2A JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH2 0x38E DUP2 PUSH2 0xCC4 JUMP JUMPDEST PUSH1 0x60 PUSH1 0xFF DUP4 EQ PUSH2 0x92D JUMPI PUSH2 0x926 DUP4 PUSH2 0xD15 JUMP JUMPDEST SWAP1 POP PUSH2 0x8F4 JUMP JUMPDEST DUP2 DUP1 SLOAD PUSH2 0x939 SWAP1 PUSH2 0x17B6 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 0x965 SWAP1 PUSH2 0x17B6 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x9B0 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x987 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x9B0 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x993 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP PUSH2 0x8F4 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x4 SLOAD SUB PUSH2 0x9DE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x37C SWAP1 PUSH2 0x1815 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x4 SSTORE JUMP JUMPDEST PUSH0 DUP1 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA00 JUMPI PUSH2 0xA00 PUSH2 0x165E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xA29 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0xA95 JUMPI DUP7 DUP7 DUP3 DUP2 DUP2 LT PUSH2 0xA48 JUMPI PUSH2 0xA48 PUSH2 0x1672 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0xA5A SWAP2 SWAP1 PUSH2 0x1686 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA68 SWAP3 SWAP2 SWAP1 PUSH2 0x16F3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xA82 JUMPI PUSH2 0xA82 PUSH2 0x1672 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xA2E JUMP JUMPDEST POP PUSH2 0xB13 PUSH32 0xC545221CB71DEA46B10349167D787BBA14B050610E9EAB8D78F64FE47B58136 DUP9 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xACC SWAP2 SWAP1 PUSH2 0x185A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xAF8 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1865 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xD52 JUMP JUMPDEST SWAP2 POP POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0xB2D DUP6 DUP6 PUSH2 0xD7E JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0xB3A DUP2 PUSH2 0xDC0 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0xB5E SWAP3 SWAP2 SWAP1 PUSH2 0x18B1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE SWAP1 POP PUSH2 0xB9C DUP5 DUP3 PUSH2 0xE6E JUMP JUMPDEST PUSH2 0xC00 JUMPI PUSH2 0xBF6 DUP5 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP6 PUSH0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0xBBF SWAP3 SWAP2 SWAP1 PUSH2 0x18DF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0xF0B JUMP JUMPDEST PUSH2 0xC00 DUP5 DUP3 PUSH2 0xF0B JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0xC25 DUP4 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0xBBF SWAP3 SWAP2 SWAP1 PUSH2 0x18B1 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0xC4C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x37C SWAP1 PUSH2 0x193C JUMP JUMPDEST PUSH0 PUSH0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0xC67 SWAP2 SWAP1 PUSH2 0x196D JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0xCA1 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xCA6 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xCB7 DUP8 DUP4 DUP4 DUP8 PUSH2 0xF9B JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH2 0xD21 DUP4 PUSH2 0xFE3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP2 SWAP3 POP PUSH0 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP POP POP SWAP2 DUP3 MSTORE POP PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x8F4 PUSH2 0xD5E PUSH2 0x100A JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD PUSH2 0x1901 PUSH1 0xF0 SHL DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH0 PUSH0 DUP3 MLOAD PUSH1 0x41 SUB PUSH2 0xDB2 JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH0 BYTE PUSH2 0xDA6 DUP8 DUP3 DUP6 DUP6 PUSH2 0x1099 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP PUSH2 0xDB9 JUMP JUMPDEST POP PUSH0 SWAP1 POP PUSH1 0x2 JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0xDD3 JUMPI PUSH2 0xDD3 PUSH2 0x1978 JUMP JUMPDEST SUB PUSH2 0xDDB JUMPI POP JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0xDEF JUMPI PUSH2 0xDEF PUSH2 0x1978 JUMP JUMPDEST SUB PUSH2 0xE0C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x37C SWAP1 PUSH2 0x19BF JUMP JUMPDEST PUSH1 0x2 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0xE20 JUMPI PUSH2 0xE20 PUSH2 0x1978 JUMP JUMPDEST SUB PUSH2 0xE3D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x37C SWAP1 PUSH2 0x1A02 JUMP JUMPDEST PUSH1 0x3 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0xE51 JUMPI PUSH2 0xE51 PUSH2 0x1978 JUMP JUMPDEST SUB PUSH2 0x38E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x37C SWAP1 PUSH2 0x1A50 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0xE89 SWAP2 SWAP1 PUSH2 0x196D JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0xEC2 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xEC7 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0xEF1 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0xEF1 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xEF1 SWAP2 SWAP1 PUSH2 0x1A73 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xB17 JUMPI POP POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0xF5F DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1148 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH0 EQ DUP1 PUSH2 0xF7F JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xF7F SWAP2 SWAP1 PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0xC25 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x37C SWAP1 PUSH2 0x1AD7 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xFD9 JUMPI DUP3 MLOAD PUSH0 SUB PUSH2 0xFD2 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODESIZE PUSH2 0xFD2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x37C SWAP1 PUSH2 0x1B1A JUMP JUMPDEST POP DUP2 PUSH2 0xCBC JUMP JUMPDEST PUSH2 0xCBC DUP4 DUP4 PUSH2 0x1160 JUMP JUMPDEST PUSH0 PUSH1 0xFF DUP3 AND PUSH1 0x1F DUP2 GT ISZERO PUSH2 0x8F4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2CD44AC3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 ISZERO PUSH2 0x1062 JUMPI POP PUSH32 0x0 CHAINID EQ JUMPDEST ISZERO PUSH2 0x108C JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x1094 PUSH2 0x118A JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP4 GT ISZERO PUSH2 0x10CE JUMPI POP PUSH0 SWAP1 POP PUSH1 0x3 PUSH2 0x113F JUMP JUMPDEST PUSH0 PUSH1 0x1 DUP8 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x10F1 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1B33 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1111 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1139 JUMPI PUSH0 PUSH1 0x1 SWAP3 POP SWAP3 POP POP PUSH2 0x113F JUMP JUMPDEST SWAP2 POP PUSH0 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1156 DUP5 DUP5 PUSH0 DUP6 PUSH2 0xC2A JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x1170 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x37C SWAP2 SWAP1 PUSH2 0x1B68 JUMP JUMPDEST PUSH0 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH32 0x0 PUSH32 0x0 CHAINID ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1204 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1B79 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP1 JUMPDEST DUP2 EQ PUSH2 0x38E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x8F4 DUP2 PUSH2 0x121F JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1249 JUMPI PUSH2 0x1249 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0xCBC DUP5 DUP5 PUSH2 0x122B JUMP JUMPDEST DUP1 ISZERO ISZERO JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x8F4 DUP3 DUP5 PUSH2 0x1254 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x8F4 JUMP JUMPDEST PUSH2 0x1221 DUP2 PUSH2 0x126C JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x8F4 DUP2 PUSH2 0x127C JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x12A3 JUMPI PUSH2 0x12A3 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0xCBC DUP5 DUP5 PUSH2 0x1285 JUMP JUMPDEST PUSH0 PUSH0 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x12C1 JUMPI PUSH2 0x12C1 PUSH0 PUSH0 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x12DB JUMPI PUSH2 0x12DB PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0xDB9 JUMPI PUSH2 0xDB9 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x130A JUMPI PUSH2 0x130A PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x1315 DUP7 DUP7 PUSH2 0x1285 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1334 JUMPI PUSH2 0x1334 PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1340 DUP7 DUP3 DUP8 ADD PUSH2 0x12AE JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x1258 DUP2 PUSH2 0x126C JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x8F4 DUP3 DUP5 PUSH2 0x134C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT DUP2 AND PUSH2 0x1258 JUMP JUMPDEST DUP3 DUP2 DUP4 MCOPY POP PUSH0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH0 PUSH2 0x1387 DUP3 MLOAD SWAP1 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH2 0x139E DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1373 JUMP JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND JUMPDEST SWAP1 SWAP4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 PUSH2 0x1258 JUMP JUMPDEST PUSH0 PUSH2 0x13C2 DUP4 DUP4 PUSH2 0x13B1 JUMP JUMPDEST POP POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x13D3 DUP3 MLOAD SWAP1 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 DUP4 ADD DUP1 PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1406 JUMPI DUP2 MLOAD PUSH2 0x13F5 DUP9 DUP3 PUSH2 0x13B7 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP4 ADD SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x13E1 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD PUSH2 0x141F DUP3 DUP11 PUSH2 0x1363 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x1431 DUP2 DUP10 PUSH2 0x137E JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x1445 DUP2 DUP9 PUSH2 0x137E JUMP JUMPDEST SWAP1 POP PUSH2 0x1454 PUSH1 0x60 DUP4 ADD DUP8 PUSH2 0x13B1 JUMP JUMPDEST PUSH2 0x1461 PUSH1 0x80 DUP4 ADD DUP7 PUSH2 0x134C JUMP JUMPDEST PUSH2 0x146E PUSH1 0xA0 DUP4 ADD DUP6 PUSH2 0x13B1 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0xC0 DUP4 ADD MSTORE PUSH2 0x1480 DUP2 DUP5 PUSH2 0x13CA JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x14A0 JUMPI PUSH2 0x14A0 PUSH0 PUSH0 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x14BA JUMPI PUSH2 0x14BA PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0xDB9 JUMPI PUSH2 0xDB9 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x80 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x14EC JUMPI PUSH2 0x14EC PUSH0 PUSH0 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1505 JUMPI PUSH2 0x1505 PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1511 DUP10 DUP3 DUP11 ADD PUSH2 0x148D JUMP JUMPDEST SWAP7 POP SWAP7 POP POP PUSH1 0x20 PUSH2 0x1524 DUP10 DUP3 DUP11 ADD PUSH2 0x122B JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x1535 DUP10 DUP3 DUP11 ADD PUSH2 0x122B JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1554 JUMPI PUSH2 0x1554 PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1560 DUP10 DUP3 DUP11 ADD PUSH2 0x12AE JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH0 PUSH2 0x8F4 DUP3 PUSH2 0x126C JUMP JUMPDEST PUSH2 0x1221 DUP2 PUSH2 0x156F JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x8F4 DUP2 PUSH2 0x1579 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x15A1 JUMPI PUSH2 0x15A1 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x15AC DUP6 DUP6 PUSH2 0x1582 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x15BD DUP6 DUP3 DUP7 ADD PUSH2 0x1285 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH0 SWAP2 ADD MSTORE JUMP JUMPDEST DUP2 DUP4 MSTORE PUSH0 PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH2 0x15E7 DUP4 DUP6 DUP5 PUSH2 0x15C7 JUMP JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND PUSH2 0x13A7 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1156 DUP2 DUP5 DUP7 PUSH2 0x15D2 JUMP JUMPDEST PUSH1 0x29 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x4F776E61626C6532537465703A2063616C6C6572206973206E6F742074686520 DUP2 MSTORE PUSH9 0x3732BB9037BBB732B9 PUSH1 0xB9 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP2 POP JUMPDEST POP PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x8F4 DUP2 PUSH2 0x1606 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT CALLDATASIZE DUP6 SWAP1 SUB ADD DUP2 SLT PUSH2 0x169F JUMPI PUSH2 0x169F PUSH0 PUSH0 REVERT JUMPDEST DUP1 DUP5 ADD SWAP3 POP DUP3 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x16BF JUMPI PUSH2 0x16BF PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP3 POP PUSH1 0x1 DUP3 MUL CALLDATASIZE SUB DUP4 SGT ISZERO PUSH2 0x16D9 JUMPI PUSH2 0x16D9 PUSH0 PUSH0 REVERT JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x16ED DUP4 DUP6 DUP5 PUSH2 0x15C7 JUMP JUMPDEST POP POP ADD SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0xCBC DUP3 DUP5 DUP7 PUSH2 0x16E1 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x170D DUP3 DUP7 PUSH2 0x13B1 JUMP JUMPDEST PUSH2 0x171A PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x13B1 JUMP JUMPDEST PUSH2 0xCBC PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x13B1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x8F4 DUP2 PUSH2 0x121F JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1745 JUMPI PUSH2 0x1745 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0xCBC DUP5 DUP5 PUSH2 0x1727 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x8F4 DUP3 DUP5 PUSH2 0x13B1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 SWAP2 ADD SWAP1 DUP2 MSTORE PUSH0 JUMPDEST POP PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x8F4 DUP2 PUSH2 0x175E JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x2 DUP2 DIV PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x17CA JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x17DC JUMPI PUSH2 0x17DC PUSH2 0x17A2 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 DUP2 MSTORE SWAP2 POP PUSH2 0x178B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x8F4 DUP2 PUSH2 0x17E2 JUMP JUMPDEST PUSH0 PUSH2 0x182E DUP3 MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD DUP1 PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1406 JUMPI DUP2 MLOAD PUSH2 0x1849 DUP9 DUP3 PUSH2 0x13B7 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP4 ADD SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x1835 JUMP JUMPDEST PUSH0 PUSH2 0x1159 DUP3 DUP5 PUSH2 0x1825 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x1873 DUP3 DUP9 PUSH2 0x13B1 JUMP JUMPDEST PUSH2 0x1880 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x134C JUMP JUMPDEST PUSH2 0x188D PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x13B1 JUMP JUMPDEST PUSH2 0x189A PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x13B1 JUMP JUMPDEST PUSH2 0x18A7 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x13B1 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x18BF DUP3 DUP6 PUSH2 0x134C JUMP JUMPDEST PUSH2 0x1159 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x13B1 JUMP JUMPDEST PUSH0 PUSH1 0xFF DUP3 AND PUSH2 0x8F4 JUMP JUMPDEST PUSH2 0x1258 DUP2 PUSH2 0x18CC JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x18ED DUP3 DUP6 PUSH2 0x134C JUMP JUMPDEST PUSH2 0x1159 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x18D6 JUMP JUMPDEST PUSH1 0x26 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F DUP2 MSTORE PUSH6 0x1C8818D85B1B PUSH1 0xD2 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP2 POP PUSH2 0x1647 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x8F4 DUP2 PUSH2 0x18FA JUMP JUMPDEST PUSH0 PUSH2 0x1955 DUP3 MLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1963 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1373 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x1159 DUP3 DUP5 PUSH2 0x194C JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x18 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x45434453413A20696E76616C6964207369676E61747572650000000000000000 DUP2 MSTORE SWAP2 POP PUSH2 0x178B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x8F4 DUP2 PUSH2 0x198C JUMP JUMPDEST PUSH1 0x1F DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x45434453413A20696E76616C6964207369676E6174757265206C656E67746800 DUP2 MSTORE SWAP2 POP PUSH2 0x178B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x8F4 DUP2 PUSH2 0x19CF JUMP JUMPDEST PUSH1 0x22 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202773272076616C DUP2 MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP2 POP PUSH2 0x1647 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x8F4 DUP2 PUSH2 0x1A12 JUMP JUMPDEST DUP1 ISZERO ISZERO PUSH2 0x1221 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x8F4 DUP2 PUSH2 0x1A60 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A86 JUMPI PUSH2 0x1A86 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0xCBC DUP5 DUP5 PUSH2 0x1A68 JUMP JUMPDEST PUSH1 0x2A DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E DUP2 MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP2 POP PUSH2 0x1647 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x8F4 DUP2 PUSH2 0x1A91 JUMP JUMPDEST PUSH1 0x1D DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 DUP2 MSTORE SWAP2 POP PUSH2 0x178B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x8F4 DUP2 PUSH2 0x1AE7 JUMP JUMPDEST PUSH1 0xFF DUP2 AND PUSH2 0x1258 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH2 0x1B41 DUP3 DUP8 PUSH2 0x13B1 JUMP JUMPDEST PUSH2 0x1B4E PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x1B2A JUMP JUMPDEST PUSH2 0x1B5B PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x13B1 JUMP JUMPDEST PUSH2 0xB17 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x13B1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x8F1 DUP2 DUP5 PUSH2 0x137E JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD PUSH2 0x1B87 DUP3 DUP9 PUSH2 0x13B1 JUMP JUMPDEST PUSH2 0x1B94 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x13B1 JUMP JUMPDEST PUSH2 0x1BA1 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x13B1 JUMP JUMPDEST PUSH2 0x1BAE PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x13B1 JUMP JUMPDEST PUSH2 0x18A7 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x134C JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE9 REVERT 0xB2 GT 0xCE PUSH5 0xC20212021C SWAP15 TSTORE 0xE9 0xFC 0xFC SWAP5 EXP SHR MLOAD 0x2F 0xE7 0xFC 0xCE RETURN LOG3 SMOD ISZERO PUSH10 0x5D872B64736F6C634300 ADDMOD SHR STOP CALLER ","sourceMap":"1132:11199:40:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1914:41;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;10969:251;;;;;;:::i;:::-;;:::i;:::-;;8623:173;;;;;;:::i;:::-;;:::i;1752:28::-;;;;;-1:-1:-1;;;;;1752:28:40;;;;;;;;;;:::i;1824:101:11:-;;;:::i;1734:212:12:-;;;:::i;5021:633:25:-;;;:::i;:::-;;;;;;;;;;;;;:::i;1201:85:11:-;1273:6;;-1:-1:-1;;;;;1273:6:11;1201:85;;6873:1137:40;;;;;;:::i;:::-;;:::i;10359:201::-;;;;;;:::i;:::-;;:::i;9379:377::-;;;;;;:::i;:::-;;:::i;847:99:12:-;926:13;;-1:-1:-1;;;;;926:13:12;847:99;;1139:178;;;;;;:::i;:::-;;:::i;10969:251:40:-;1094:13:11;:11;:13::i;:::-;-1:-1:-1;;;;;11047:23:40;::::1;11043:74;;11093:13;;-1:-1:-1::0;;;11093:13:40::1;;;;;;;;;;;11043:74;11153:13;::::0;11132:46:::1;::::0;-1:-1:-1;;;;;11132:46:40;;::::1;::::0;11153:13:::1;::::0;11132:46:::1;::::0;11153:13:::1;::::0;11132:46:::1;11188:13;:25:::0;;-1:-1:-1;;;;;;11188:25:40::1;-1:-1:-1::0;;;;;11188:25:40;;;::::1;::::0;;;::::1;::::0;;10969:251::o;8623:173::-;1273:6:11;;-1:-1:-1;;;;;1273:6:11;5304:10:40;:21;;;;:52;;-1:-1:-1;5329:10:40;5351:4;5329:27;;5304:52;5300:111;;;5379:21;;-1:-1:-1;;;5379:21:40;;;;;;;;;;;5300:111;8716:25:::1;8736:4;;8716:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;8716:19:40;::::1;::::0;:25;-1:-1:-1;;8716:19:40::1;:25::i;:::-;;8776:6;-1:-1:-1::0;;;;;8756:33:40::1;;8784:4;;8756:33;;;;;;;:::i;:::-;;;;;;;;8623:173:::0;;;:::o;1824:101:11:-;1094:13;:11;:13::i;:::-;1888:30:::1;1915:1;1888:18;:30::i;:::-;1824:101::o:0;1734:212:12:-;926:13;;734:10:20;;-1:-1:-1;;;;;926:13:12;1833:24;;1825:78;;;;-1:-1:-1;;;1825:78:12;;;;;;;:::i;:::-;;;;;;;;;1913:26;1932:6;1913:18;:26::i;:::-;1776:170;1734:212::o;5021:633:25:-;5136:13;5163:18;;5136:13;;;5163:18;5427:41;:5;5136:13;5427:26;:41::i;:::-;5482:47;:8;5512:16;5482:29;:47::i;:::-;5621:16;;;5605:1;5621:16;;;;;;;;;-1:-1:-1;;;5376:271:25;;;-1:-1:-1;5376:271:25;;-1:-1:-1;5543:13:25;;-1:-1:-1;5578:4:25;;-1:-1:-1;5605:1:25;-1:-1:-1;5621:16:25;-1:-1:-1;5376:271:25;-1:-1:-1;5021:633:25:o;6873:1137:40:-;2261:21:14;:19;:21::i;:::-;7064:1:40::1;7048:17:::0;;;7044:72:::1;;7088:17;;-1:-1:-1::0;;;7088:17:40::1;;;;;;;;;;;7044:72;7148:8;7130:15;:26;7126:81;;;7179:17;;-1:-1:-1::0;;;7179:17:40::1;;;;;;;;;;;7126:81;7241:1;7221:21:::0;;;7217:77:::1;;7265:18;;-1:-1:-1::0;;;7265:18:40::1;;;;;;;;;;;7217:77;7307:15;::::0;;;:9:::1;:15;::::0;;;;;::::1;;7303:70;;;7345:17;;-1:-1:-1::0;;;7345:17:40::1;;;;;;;;;;;7303:70;7382:15;::::0;;;:9:::1;:15;::::0;;;;:22;;-1:-1:-1;;7382:22:40::1;7400:4;7382:22;::::0;;7432:49:::1;7447:10;7459:5:::0;;7466:8;7392:4;7432:14:::1;:49::i;:::-;7415:66;;7491:14;7508:32;7522:6;7530:9;;7508:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;7508:13:40::1;::::0;-1:-1:-1;;;7508:32:40:i:1;:::-;7564:13;::::0;7491:49;;-1:-1:-1;;;;;;7554:23:40;;::::1;7564:13:::0;::::1;7554:23;7550:75;;7600:14;;-1:-1:-1::0;;;7600:14:40::1;;;;;;;;;;;7550:75;7640:9;7635:294;7655:16:::0;;::::1;7635:294;;;7693:12;::::0;7742:4:::1;7753:5:::0;;7759:1;7753:8;;::::1;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;7734:28;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7692:70;;;;7781:7;7776:143;;7875:10;7869:17;7862:4;7850:10;7846:21;7839:48;7776:143;-1:-1:-1::0;;7673:3:40::1;;7635:294;;;-1:-1:-1::0;7944:59:40::1;::::0;7962:10:::1;::::0;7944:59:::1;::::0;::::1;::::0;7974:5;;7988:8;;7998:4;;7944:59:::1;:::i;:::-;;;;;;;;7034:976;;2303:20:14::0;1716:1;2809:7;:22;2629:209;2303:20;6873:1137:40;;;;;;:::o;10359:201::-;1273:6:11;;-1:-1:-1;;;;;1273:6:11;5304:10:40;:21;;;;:52;;-1:-1:-1;5329:10:40;5351:4;5329:27;;5304:52;5300:111;;;5379:21;;-1:-1:-1;;;5379:21:40;;;;;;;;;;;5300:111;10456:46:::1;-1:-1:-1::0;;;;;10456:18:40;::::1;10475:7:::0;-1:-1:-1;;10456:18:40::1;:46::i;:::-;10545:7;-1:-1:-1::0;;;;;10517:36:40::1;10537:5;-1:-1:-1::0;;;;;10517:36:40::1;;;;;;;;;;;10359:201:::0;;:::o;9379:377::-;1273:6:11;;-1:-1:-1;;;;;1273:6:11;5304:10:40;:21;;;;:52;;-1:-1:-1;5329:10:40;5351:4;5329:27;;5304:52;5300:111;;;5379:21;;-1:-1:-1;;;5379:21:40;;;;;;;;;;;5300:111;-1:-1:-1;;;;;9470:28:40;::::1;::::0;;:48:::1;;-1:-1:-1::0;;;;;;9502:16:40;::::1;::::0;9470:48:::1;9466:99;;;9541:13;;-1:-1:-1::0;;;9541:13:40::1;;;;;;;;;;;9466:99;9591:30;::::0;-1:-1:-1;;;9591:30:40;;9574:14:::1;::::0;-1:-1:-1;;;;;9591:15:40;::::1;::::0;::::1;::::0;:30:::1;::::0;9615:4:::1;::::0;9591:30:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9574:47:::0;-1:-1:-1;9635:10:40;;9631:71:::1;;9661:30;-1:-1:-1::0;;;;;9661:18:40;::::1;9680:2:::0;9684:6;9661:18:::1;:30::i;:::-;9738:2;-1:-1:-1::0;;;;;9716:33:40::1;9730:5;-1:-1:-1::0;;;;;9716:33:40::1;;9742:6;9716:33;;;;;;:::i;:::-;;;;;;;;9456:300;9379:377:::0;;:::o;1139:178:12:-;1094:13:11;:11;:13::i;:::-;1228::12::1;:24:::0;;-1:-1:-1;;;;;1228:24:12;::::1;-1:-1:-1::0;;;;;;1228:24:12;;::::1;::::0;::::1;::::0;;;1292:7:::1;1273:6:11::0;;-1:-1:-1;;;;;1273:6:11;;1201:85;1292:7:12::1;-1:-1:-1::0;;;;;1267:43:12::1;;;;;;;;;;;1139:178:::0;:::o;1359:130:11:-;1273:6;;-1:-1:-1;;;;;1273:6:11;734:10:20;1422:23:11;1414:68;;;;-1:-1:-1;;;1414:68:11;;;;;;;:::i;3712:185:8:-;3787:12;3818:72;3840:6;3848:4;3854:1;3818:72;;;;;;;;;;;;;;;;;:21;:72::i;:::-;3811:79;;3712:185;;;;;:::o;1501:153:12:-;1590:13;1583:20;;-1:-1:-1;;;;;;1583:20:12;;;1613:34;1638:8;1613:24;:34::i;3367:268:21:-;3461:13;1371:66;3490:47;;3486:143;;3560:15;3569:5;3560:8;:15::i;:::-;3553:22;;;;3486:143;3613:5;3606:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2336:287:14;1759:1;2468:7;;:19;2460:63;;;;-1:-1:-1;;;2460:63:14;;;;;;;:::i;:::-;1759:1;2598:7;:18;2336:287::o;11756:573:40:-;11913:7;;11976:5;11962:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11962:27:40;-1:-1:-1;11932:57:40;-1:-1:-1;12004:9:40;11999:103;12019:16;;;11999:103;;;12082:5;;12088:1;12082:8;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;12072:19;;;;;;;:::i;:::-;;;;;;;;12056:10;12067:1;12056:13;;;;;;;;:::i;:::-;;;;;;;;;;:35;12037:3;;11999:103;;;;12130:192;1532:82;12226:6;12261:10;12244:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;12234:39;;;;;;12275:8;12285:4;12195:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;12164:144;;;;;;12130:16;:192::i;:::-;12111:211;;;11756:573;;;;;;;;:::o;3661:227:24:-;3739:7;3759:17;3778:18;3800:27;3811:4;3817:9;3800:10;:27::i;:::-;3758:69;;;;3837:18;3849:5;3837:11;:18::i;:::-;-1:-1:-1;3872:9:24;3661:227;-1:-1:-1;;;3661:227:24:o;3889:421:7:-;3987:25;4038:22;;;4062:7;4071:5;4015:62;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;4015:62:7;;;;;;;;;;;;;;-1:-1:-1;;;;;4015:62:7;-1:-1:-1;;;;;;4015:62:7;;;;;;;;;;;-1:-1:-1;4093:44:7;4117:5;4015:62;4093:23;:44::i;:::-;4088:216;;4153:86;4173:5;4203:22;;;4227:7;4236:1;4180:58;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;4180:58:7;;;;;;;;;;;;;;-1:-1:-1;;;;;4180:58:7;-1:-1:-1;;;;;;4180:58:7;;;;;;;;;;4153:19;:86::i;:::-;4253:40;4273:5;4280:12;4253:19;:40::i;:::-;3977:333;3889:421;;;:::o;996:186::-;1089:86;1109:5;1139:23;;;1164:2;1168:5;1116:58;;;;;;;;;:::i;1089:86::-;996:186;;;:::o;5176:446:8:-;5341:12;5398:5;5373:21;:30;;5365:81;;;;-1:-1:-1;;;5365:81:8;;;;;;;:::i;:::-;5457:12;5471:23;5498:6;-1:-1:-1;;;;;5498:11:8;5517:5;5524:4;5498:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5456:73;;;;5546:69;5573:6;5581:7;5590:10;5602:12;5546:26;:69::i;:::-;5539:76;;;;5176:446;;;;;;;:::o;2426:187:11:-;2518:6;;;-1:-1:-1;;;;;2534:17:11;;;-1:-1:-1;;;;;;2534:17:11;;;;;;;2566:40;;2518:6;;;2534:17;2518:6;;2566:40;;2499:16;;2566:40;2489:124;2426:187;:::o;2059:405:21:-;2118:13;2143:11;2157:16;2168:4;2157:10;:16::i;:::-;2281:14;;;2292:2;2281:14;;;;;;;;;2143:30;;-1:-1:-1;2261:17:21;;2281:14;;;;;;;;;-1:-1:-1;;;2371:16:21;;;-1:-1:-1;2416:4:21;2407:14;;2400:28;;;;-1:-1:-1;2371:16:21;2059:405::o;4768:165:25:-;4845:7;4871:55;4893:20;:18;:20::i;:::-;4915:10;8536:4:24;8530:11;-1:-1:-1;;;8554:23:24;;8606:4;8597:14;;8590:39;;;;8658:4;8649:14;;8642:34;8712:4;8697:20;;;8336:397;2145:730;2226:7;2235:12;2263:9;:16;2283:2;2263:22;2259:610;;2599:4;2584:20;;2578:27;2648:4;2633:20;;2627:27;2705:4;2690:20;;2684:27;2301:9;2676:36;2746:25;2757:4;2676:36;2578:27;2627;2746:10;:25::i;:::-;2739:32;;;;;;;;;2259:610;-1:-1:-1;2818:1:24;;-1:-1:-1;2822:35:24;2259:610;2145:730;;;;;:::o;570:511::-;647:20;638:5;:29;;;;;;;;:::i;:::-;;634:441;;570:511;:::o;634:441::-;743:29;734:5;:38;;;;;;;;:::i;:::-;;730:345;;788:34;;-1:-1:-1;;;788:34:24;;;;;;;:::i;730:345::-;852:35;843:5;:44;;;;;;;;:::i;:::-;;839:236;;903:41;;-1:-1:-1;;;903:41:24;;;;;;;:::i;839:236::-;974:30;965:5;:39;;;;;;;;:::i;:::-;;961:114;;1020:44;;-1:-1:-1;;;1020:44:24;;;;;;;:::i;6482:616:7:-;6576:4;6878:12;6892:23;6927:5;-1:-1:-1;;;;;6919:19:7;6939:4;6919:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6877:67;;;;6973:7;:69;;;;-1:-1:-1;6985:17:7;;:22;;:56;;;7022:10;7011:30;;;;;;;;;;;;:::i;:::-;6973:118;;;;-1:-1:-1;;;;;;;;;;1713:19:8;;:23;;;6482:616:7:o;5328:653::-;5758:23;5784:69;5812:4;5784:69;;;;;;;;;;;;;;;;;5792:5;-1:-1:-1;;;;;5784:27:7;;;:69;;;;;:::i;:::-;5758:95;;5871:10;:17;5892:1;5871:22;:56;;;;5908:10;5897:30;;;;;;;;;;;;:::i;:::-;5863:111;;;;-1:-1:-1;;;5863:111:7;;;;;;;:::i;7682:628:8:-;7862:12;7890:7;7886:418;;;7917:10;:17;7938:1;7917:22;7913:286;;-1:-1:-1;;;;;1713:19:8;;;8124:60;;;;-1:-1:-1;;;8124:60:8;;;;;;;:::i;:::-;-1:-1:-1;8219:10:8;8212:17;;7886:418;8260:33;8268:10;8280:12;8260:7;:33::i;2536:245:21:-;2597:7;2669:4;2633:40;;2696:2;2687:11;;2683:69;;;2721:20;;-1:-1:-1;;;2721:20:21;;;;;;;;;;;3695:262:25;3748:7;3779:4;-1:-1:-1;;;;;3788:11:25;3771:28;;:63;;;;;3820:14;3803:13;:31;3771:63;3767:184;;;-1:-1:-1;3857:22:25;;3695:262::o;3767:184::-;3917:23;:21;:23::i;:::-;3910:30;;3695:262;:::o;5009:1456:24:-;5097:7;;6021:66;6008:79;;6004:161;;;-1:-1:-1;6119:1:24;;-1:-1:-1;6123:30:24;6103:51;;6004:161;6259:14;6276:24;6286:4;6292:1;6295;6298;6276:24;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6276:24:24;;-1:-1:-1;;6276:24:24;;;-1:-1:-1;;;;;;;6314:20:24;;6310:101;;6366:1;6370:29;6350:50;;;;;;;6310:101;6429:6;-1:-1:-1;6437:20:24;;-1:-1:-1;5009:1456:24;;;;;;;;:::o;4119:223:8:-;4252:12;4283:52;4305:6;4313:4;4319:1;4322:12;4283:21;:52::i;:::-;4276:59;;4119:223;;;;;;:::o;8832:540::-;8991:17;;:21;8987:379;;9219:10;9213:17;9275:15;9262:10;9258:2;9254:19;9247:44;8987:379;9342:12;9335:20;;-1:-1:-1;;;9335:20:8;;;;;;;;:::i;3963:180:25:-;4018:7;1929:95;4077:11;4090:14;4106:13;4129:4;4054:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4044:92;;;;;;4037:99;;3963:180;:::o;417:122:55:-;508:5;490:24;483:5;480:35;470:63;;529:1;526;519:12;545:139;616:20;;645:33;616:20;645:33;:::i;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;197:1;194;187:12;804:79;924:1;949:53;994:7;974:9;949:53;:::i;1121:109::-;1095:13;;1088:21;1202;1197:3;1190:34;1121:109;;:::o;1236:210::-;1361:2;1346:18;;1374:65;1350:9;1412:6;1374:65;:::i;1584:96::-;1621:7;-1:-1:-1;;;;;1518:54:55;;1650:24;1452:126;1686:122;1759:24;1777:5;1759:24;:::i;1814:139::-;1885:20;;1914:33;1885:20;1914:33;:::i;1959:329::-;2018:6;2067:2;2055:9;2046:7;2042:23;2038:32;2035:119;;;2073:79;197:1;194;187:12;2073:79;2193:1;2218:53;2263:7;2243:9;2218:53;:::i;2676:552::-;2733:8;2743:6;2793:3;2786:4;2778:6;2774:17;2770:27;2760:122;;2801:79;2403:1;2400;2393:12;2801:79;-1:-1:-1;2901:20:55;;2944:18;2933:30;;2930:117;;;2966:79;2526:1;2523;2516:12;2966:79;3080:4;3072:6;3068:17;3056:29;;3134:3;3126:4;3118:6;3114:17;3104:8;3100:32;3097:41;3094:128;;;3141:79;2649:1;2646;2639:12;3234:672;3313:6;3321;3329;3378:2;3366:9;3357:7;3353:23;3349:32;3346:119;;;3384:79;197:1;194;187:12;3384:79;3504:1;3529:53;3574:7;3554:9;3529:53;:::i;:::-;3519:63;;3475:117;3659:2;3648:9;3644:18;3631:32;3690:18;3682:6;3679:30;3676:117;;;3712:79;320:1;317;310:12;3712:79;3825:64;3881:7;3872:6;3861:9;3857:22;3825:64;:::i;:::-;3807:82;;;;3602:297;3234:672;;;;;:::o;3912:118::-;3999:24;4017:5;3999:24;:::i;4036:222::-;4167:2;4152:18;;4180:71;4156:9;4224:6;4180:71;:::i;4419:115::-;-1:-1:-1;;;;;;4329:78:55;;4504:23;4264:149;4820:139;4909:6;4904:3;4899;4893:23;-1:-1:-1;4950:1:55;4932:16;;4925:27;4820:139::o;5073:377::-;5161:3;5189:39;5222:5;4620:12;;4540:99;5189:39;4751:19;;;4803:4;4794:14;;5237:78;;5324:65;5382:6;5377:3;5370:4;5363:5;5359:16;5324:65;:::i;:::-;-1:-1:-1;;5057:2:55;5037:14;;5033:28;5414:29;5405:39;;;;5073:377;-1:-1:-1;;;5073:377:55:o;5539:118::-;5644:5;5626:24;334:77;6349:179;6418:10;6439:46;6481:3;6473:6;6439:46;:::i;:::-;-1:-1:-1;;6517:4:55;6508:14;;6349:179::o;6683:732::-;6802:3;6831:54;6879:5;4620:12;;4540:99;6831:54;4751:19;;;4803:4;4794:14;;;;6208;;;7121:1;7106:284;7131:6;7128:1;7125:13;7106:284;;;7207:6;7201:13;7234:63;7293:3;7278:13;7234:63;:::i;:::-;7227:70;-1:-1:-1;6636:4:55;6627:14;;7310:70;-1:-1:-1;;7153:1:55;7146:9;7106:284;;;-1:-1:-1;7406:3:55;;6683:732;-1:-1:-1;;;;;6683:732:55:o;7421:1215::-;7808:3;7793:19;;7822:69;7797:9;7864:6;7822:69;:::i;:::-;7938:9;7932:4;7928:20;7923:2;7912:9;7908:18;7901:48;7966:78;8039:4;8030:6;7966:78;:::i;:::-;7958:86;;8091:9;8085:4;8081:20;8076:2;8065:9;8061:18;8054:48;8119:78;8192:4;8183:6;8119:78;:::i;:::-;8111:86;;8207:72;8275:2;8264:9;8260:18;8251:6;8207:72;:::i;:::-;8289:73;8357:3;8346:9;8342:19;8333:6;8289:73;:::i;:::-;8372;8440:3;8429:9;8425:19;8416:6;8372:73;:::i;:::-;8493:9;8487:4;8483:20;8477:3;8466:9;8462:19;8455:49;8521:108;8624:4;8615:6;8521:108;:::i;:::-;8513:116;7421:1215;-1:-1:-1;;;;;;;;;7421:1215:55:o;8657:579::-;8741:8;8751:6;8801:3;8794:4;8786:6;8782:17;8778:27;8768:122;;8809:79;2403:1;2400;2393:12;8809:79;-1:-1:-1;8909:20:55;;8952:18;8941:30;;8938:117;;;8974:79;2526:1;2523;2516:12;8974:79;9088:4;9080:6;9076:17;9064:29;;9142:3;9134:4;9126:6;9122:17;9112:8;9108:32;9105:41;9102:128;;;9149:79;2649:1;2646;2639:12;9515:1215;9650:6;9658;9666;9674;9682;9690;9739:3;9727:9;9718:7;9714:23;9710:33;9707:120;;;9746:79;197:1;194;187:12;9746:79;9866:31;;9924:18;9913:30;;9910:117;;;9946:79;320:1;317;310:12;9946:79;10059:91;10142:7;10133:6;10122:9;10118:22;10059:91;:::i;:::-;10041:109;;;;9837:323;10199:2;10225:53;10270:7;10261:6;10250:9;10246:22;10225:53;:::i;:::-;10215:63;;10170:118;10327:2;10353:53;10398:7;10389:6;10378:9;10374:22;10353:53;:::i;:::-;10343:63;;10298:118;10483:2;10472:9;10468:18;10455:32;10514:18;10506:6;10503:30;10500:117;;;10536:79;320:1;317;310:12;10536:79;10649:64;10705:7;10696:6;10685:9;10681:22;10649:64;:::i;:::-;10631:82;;;;10426:297;9515:1215;;;;;;;;:::o;10736:121::-;10798:7;10827:24;10845:5;10827:24;:::i;10863:172::-;10961:49;11004:5;10961:49;:::i;11041:189::-;11137:20;;11166:58;11137:20;11166:58;:::i;11236:524::-;11329:6;11337;11386:2;11374:9;11365:7;11361:23;11357:32;11354:119;;;11392:79;197:1;194;187:12;11392:79;11512:1;11537:78;11607:7;11587:9;11537:78;:::i;:::-;11527:88;;11483:142;11664:2;11690:53;11735:7;11726:6;11715:9;11711:22;11690:53;:::i;:::-;11680:63;;11635:118;11236:524;;;;;:::o;11940:148::-;12038:6;12033:3;12028;12015:30;-1:-1:-1;12079:1:55;12061:16;;12054:27;11940:148::o;12116:314::-;4751:19;;;12212:3;4803:4;4794:14;;12226:77;;12313:56;12362:6;12357:3;12350:5;12313:56;:::i;:::-;-1:-1:-1;;5057:2:55;5037:14;;5033:28;12394:29;4965:102;12436:329;12595:2;12608:47;;;12580:18;;12672:86;12580:18;12744:6;12736;12672:86;:::i;13005:366::-;13232:2;4751:19;;13147:3;4803:4;4794:14;;12911:34;12888:58;;-1:-1:-1;;;12975:2:55;12963:15;;12956:36;13161:74;-1:-1:-1;13244:93:55;-1:-1:-1;13362:2:55;13353:12;;13005:366::o;13377:419::-;13581:2;13594:47;;;13566:18;;13658:131;13566:18;13658:131;:::i;13802:180::-;-1:-1:-1;;;13847:1:55;13840:88;13947:4;13944:1;13937:15;13971:4;13968:1;13961:15;13988:180;-1:-1:-1;;;14033:1:55;14026:88;14133:4;14130:1;14123:15;14157:4;14154:1;14147:15;14543:724;14620:4;;14669:25;;-1:-1:-1;;14745:14:55;14741:29;;;14737:48;14713:73;;14703:168;;14790:79;14283:1;14280;14273:12;14790:79;14902:18;14892:8;14888:33;14880:41;;14954:4;14941:18;14931:28;;14982:18;14974:6;14971:30;14968:117;;;15004:79;14406:1;14403;14396:12;15004:79;15112:2;15106:4;15102:13;15094:21;;15169:4;15161:6;15157:17;15141:14;15137:38;15131:4;15127:49;15124:136;;;15179:79;14529:1;14526;14519:12;15179:79;14633:634;14543:724;;;;;:::o;15448:327::-;15562:3;15681:56;15730:6;15725:3;15718:5;15681:56;:::i;:::-;-1:-1:-1;;15753:16:55;;15448:327::o;15781:291::-;15921:3;15943:103;16042:3;16033:6;16025;15943:103;:::i;16078:442::-;16265:2;16250:18;;16278:71;16254:9;16322:6;16278:71;:::i;:::-;16359:72;16427:2;16416:9;16412:18;16403:6;16359:72;:::i;:::-;16441;16509:2;16498:9;16494:18;16485:6;16441:72;:::i;16526:143::-;16608:13;;16630:33;16608:13;16630:33;:::i;16675:351::-;16745:6;16794:2;16782:9;16773:7;16769:23;16765:32;16762:119;;;16800:79;197:1;194;187:12;16800:79;16920:1;16945:64;17001:7;16981:9;16945:64;:::i;17032:222::-;17163:2;17148:18;;17176:71;17152:9;17220:6;17176:71;:::i;17448:366::-;17675:2;4751:19;;;17400:34;4794:14;;17377:58;;;17590:3;17687:93;-1:-1:-1;17805:2:55;17796:12;;17448:366::o;17820:419::-;18024:2;18037:47;;;18009:18;;18101:131;18009:18;18101:131;:::i;18245:180::-;-1:-1:-1;;;18290:1:55;18283:88;18390:4;18387:1;18380:15;18414:4;18411:1;18404:15;18431:320;18512:1;18502:12;;18559:1;18549:12;;;18570:81;;18636:4;18628:6;18624:17;18614:27;;18570:81;18698:2;18690:6;18687:14;18667:18;18664:38;18661:84;;18717:18;;:::i;:::-;18482:269;18431:320;;;:::o;18944:366::-;19171:2;4751:19;;19086:3;4803:4;4794:14;;18897:33;18874:57;;19100:74;-1:-1:-1;19183:93:55;18757:181;19316:419;19520:2;19533:47;;;19505:18;;19597:131;19505:18;19597:131;:::i;20640:776::-;20777:3;20806:54;20854:5;4620:12;;4540:99;20806:54;6217:4;6208:14;;21083:7;21114:1;21099:292;21124:6;21121:1;21118:13;21099:292;;;21200:6;21194:13;21227:71;21294:3;21279:13;21227:71;:::i;:::-;21220:78;-1:-1:-1;6636:4:55;6627:14;;21311:70;-1:-1:-1;;21146:1:55;21139:9;21099:292;;21422:335;21584:3;21606:125;21727:3;21718:6;21606:125;:::i;21763:664::-;22006:3;21991:19;;22020:71;21995:9;22064:6;22020:71;:::i;:::-;22101:72;22169:2;22158:9;22154:18;22145:6;22101:72;:::i;:::-;22183;22251:2;22240:9;22236:18;22227:6;22183:72;:::i;:::-;22265;22333:2;22322:9;22318:18;22309:6;22265:72;:::i;:::-;22347:73;22415:3;22404:9;22400:19;22391:6;22347:73;:::i;:::-;21763:664;;;;;;;;:::o;22433:332::-;22592:2;22577:18;;22605:71;22581:9;22649:6;22605:71;:::i;:::-;22686:72;22754:2;22743:9;22739:18;22730:6;22686:72;:::i;23020:154::-;23076:9;22937:4;22926:16;;23109:59;22862:86;23180:143;23273:43;23310:5;23273:43;:::i;23329:344::-;23494:2;23479:18;;23507:71;23483:9;23551:6;23507:71;:::i;:::-;23588:78;23662:2;23651:9;23647:18;23638:6;23588:78;:::i;23910:366::-;24137:2;4751:19;;24052:3;4803:4;4794:14;;23819:34;23796:58;;-1:-1:-1;;;23883:2:55;23871:15;;23864:33;24066:74;-1:-1:-1;24149:93:55;23679:225;24282:419;24486:2;24499:47;;;24471:18;;24563:131;24471:18;24563:131;:::i;24811:386::-;24915:3;24943:38;24975:5;4620:12;;4540:99;24943:38;25094:65;25152:6;25147:3;25140:4;25133:5;25129:16;25094:65;:::i;:::-;25175:16;;;;;24811:386;-1:-1:-1;;24811:386:55:o;25203:271::-;25333:3;25355:93;25444:3;25435:6;25355:93;:::i;25480:180::-;-1:-1:-1;;;25525:1:55;25518:88;25625:4;25622:1;25615:15;25649:4;25646:1;25639:15;25846:366;26073:2;4751:19;;25988:3;4803:4;4794:14;;25806:26;25783:50;;26002:74;-1:-1:-1;26085:93:55;25666:174;26218:419;26422:2;26435:47;;;26407:18;;26499:131;26407:18;26499:131;:::i;26830:366::-;27057:2;4751:19;;26972:3;4803:4;4794:14;;26783:33;26760:57;;26986:74;-1:-1:-1;27069:93:55;26643:181;27202:419;27406:2;27419:47;;;27391:18;;27483:131;27391:18;27483:131;:::i;27854:366::-;28081:2;4751:19;;27996:3;4803:4;4794:14;;27767:34;27744:58;;-1:-1:-1;;;27831:2:55;27819:15;;27812:29;28010:74;-1:-1:-1;28093:93:55;27627:221;28226:419;28430:2;28443:47;;;28415:18;;28507:131;28415:18;28507:131;:::i;28651:116::-;1095:13;;1088:21;28721;1025:90;28773:137;28852:13;;28874:30;28852:13;28874:30;:::i;28916:345::-;28983:6;29032:2;29020:9;29011:7;29007:23;29003:32;29000:119;;;29038:79;197:1;194;187:12;29038:79;29158:1;29183:61;29236:7;29216:9;29183:61;:::i;29502:366::-;29729:2;4751:19;;29644:3;4803:4;4794:14;;29407:34;29384:58;;-1:-1:-1;;;29471:2:55;29459:15;;29452:37;29658:74;-1:-1:-1;29741:93:55;29267:229;29874:419;30078:2;30091:47;;;30063:18;;30155:131;30063:18;30155:131;:::i;30484:366::-;30711:2;4751:19;;30626:3;4803:4;4794:14;;30439:31;30416:55;;30640:74;-1:-1:-1;30723:93:55;30299:179;30856:419;31060:2;31073:47;;;31045:18;;31137:131;31045:18;31137:131;:::i;31281:112::-;22937:4;22926:16;;31364:22;22862:86;31399:545;31610:3;31595:19;;31624:71;31599:9;31668:6;31624:71;:::i;:::-;31705:68;31769:2;31758:9;31754:18;31745:6;31705:68;:::i;:::-;31783:72;31851:2;31840:9;31836:18;31827:6;31783:72;:::i;:::-;31865;31933:2;31922:9;31918:18;31909:6;31865:72;:::i;31950:313::-;32101:2;32114:47;;;32086:18;;32178:78;32086:18;32242:6;32178:78;:::i;32269:664::-;32512:3;32497:19;;32526:71;32501:9;32570:6;32526:71;:::i;:::-;32607:72;32675:2;32664:9;32660:18;32651:6;32607:72;:::i;:::-;32689;32757:2;32746:9;32742:18;32733:6;32689:72;:::i;:::-;32771;32839:2;32828:9;32824:18;32815:6;32771:72;:::i;:::-;32853:73;32921:3;32910:9;32906:19;32897:6;32853:73;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"1430600","executionCost":"infinite","totalCost":"infinite"},"external":{"acceptOwnership()":"infinite","approveMax(address,address)":"infinite","backendSigner()":"infinite","eip712Domain()":"infinite","genericCall(address,bytes)":"infinite","multicall(bytes[],uint256,bytes32,bytes)":"infinite","owner()":"infinite","pendingOwner()":"infinite","renounceOwnership()":"infinite","setBackendSigner(address)":"infinite","sweep(address,address)":"infinite","transferOwnership(address)":"infinite","usedSalts(bytes32)":"infinite"},"internal":{"_hashMulticall(address,bytes calldata[] calldata,uint256,bytes32)":"infinite"}},"methodIdentifiers":{"acceptOwnership()":"79ba5097","approveMax(address,address)":"aec42a17","backendSigner()":"65d65e86","eip712Domain()":"84b0196e","genericCall(address,bytes)":"4650c308","multicall(bytes[],uint256,bytes32,bytes)":"a0e06909","owner()":"8da5cb5b","pendingOwner()":"e30c3978","renounceOwnership()":"715018a6","setBackendSigner(address)":"36f95670","sweep(address,address)":"b8dc491b","transferOwnership(address)":"f2fde38b","usedSalts(bytes32)":"0b0fdb3d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"backendSigner_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CallerNotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DeadlineReached\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidShortString\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoCallsProvided\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SaltAlreadyUsed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"name\":\"StringTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ApprovedMax\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldSigner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newSigner\",\"type\":\"address\"}],\"name\":\"BackendSignerUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"GenericCallExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"callsCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"MulticallExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Swept\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Upgradeable\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"approveMax\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"backendSigner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"genericCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"calls\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"multicall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newSigner\",\"type\":\"address\"}],\"name\":\"setBackendSigner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Upgradeable\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"sweep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"usedSalts\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus Protocol\",\"custom:security-contact\":\"security@venus.io\",\"details\":\"This contract provides utilities for managing approvals,      and executing arbitrary calls in a single transaction. It supports      signature verification using EIP-712 for backend-authorized operations.      All functions except multicall are designed to be called internally via multicall.\",\"errors\":{\"CallerNotAuthorized()\":[{\"details\":\"Only owner or contract itself can call protected functions\"}],\"DeadlineReached()\":[{\"details\":\"Emitted when block.timestamp > deadline in multicall\"}],\"MissingSignature()\":[{\"details\":\"Emitted when signature length is zero but verification is expected\"}],\"NoCallsProvided()\":[{\"details\":\"Emitted when calls array is empty in multicall\"}],\"SaltAlreadyUsed()\":[{\"details\":\"Prevents replay attacks by ensuring each salt is used only once\"}],\"Unauthorized()\":[{\"details\":\"Emitted when recovered signer doesn't match backendSigner\"}],\"ZeroAddress()\":[{\"details\":\"Used in constructor and setBackendSigner validation\"}]},\"events\":{\"ApprovedMax(address,address)\":{\"params\":{\"spender\":\"Address granted the approval\",\"token\":\"Address of the token approved\"}},\"BackendSignerUpdated(address,address)\":{\"params\":{\"newSigner\":\"New backend signer address\",\"oldSigner\":\"Previous backend signer address\"}},\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"},\"GenericCallExecuted(address,bytes)\":{\"params\":{\"data\":\"Encoded function call data\",\"target\":\"Address of the contract called\"}},\"MulticallExecuted(address,uint256,uint256,bytes32)\":{\"params\":{\"caller\":\"Address that initiated the multicall\",\"callsCount\":\"Number of calls executed in the batch\",\"deadline\":\"Deadline timestamp used for the operation\",\"salt\":\"Salt used for replay protection\"}},\"Swept(address,address,uint256)\":{\"params\":{\"amount\":\"Amount of tokens swept\",\"to\":\"Recipient address\",\"token\":\"Address of the token swept\"}}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"approveMax(address,address)\":{\"custom:error\":\"CallerNotAuthorized if caller is not owner or contract itself\",\"custom:security\":\"Grants unlimited approval - ensure spender is trusted\",\"details\":\"Sets approval to type(uint256).max for unlimited spendingUses forceApprove to handle tokens that require 0 approval firstShould only be called via multicall for safety, but can be called directly by owner\",\"params\":{\"spender\":\"Address to grant approval to\",\"token\":\"ERC-20 token contract to approve\"}},\"constructor\":{\"custom:error\":\"ZeroAddress if backendSigner_ is address(0)\",\"details\":\"Initializes EIP-712 domain with name \\\"VenusSwap\\\" and version \\\"1\\\"Transfers ownership to msg.senderReverts with ZeroAddress if parameter is address(0)\",\"params\":{\"backendSigner_\":\"Address authorized to sign multicall operations\"}},\"eip712Domain()\":{\"details\":\"See {EIP-5267}. _Available since v4.9._\"},\"genericCall(address,bytes)\":{\"custom:error\":\"CallerNotAuthorized if caller is not owner or contract itself\",\"custom:security\":\"Use with extreme caution - can call any contract with any dataEnsure proper validation of target and data in off-chain systems\",\"details\":\"This function can interact with any external contractShould only be called via multicall for safety, but can be called directly by owner\",\"params\":{\"data\":\"Encoded function call data\",\"target\":\"Address of the contract to call\"}},\"multicall(bytes[],uint256,bytes32,bytes)\":{\"custom:error\":\"NoCallsProvided if calls array is emptyDeadlineReached if block.timestamp > deadlineSaltAlreadyUsed if salt has been used beforeUnauthorized if signature verification failsMissingSignature if signature is empty\",\"custom:event\":\"MulticallExecuted emitted upon successful execution\",\"custom:security\":\"Only the contract itself can call sweep, approveMax, and genericCall\",\"details\":\"All calls are executed atomically - if any call fails, entire transaction revertsCalls must be to functions on this contract (address(this))Protected by nonReentrant modifier to prevent reentrancy attacksThis function should be called as a part of a transaction that sends tokens to this contract and verifies if they received desired tokens after execution.EOA that calls this function should not send tokens directly nor approve this contract to spend tokens on their behalf.\",\"params\":{\"calls\":\"Array of encoded function calls to execute on this contract\",\"deadline\":\"Unix timestamp after which the transaction will revert\",\"salt\":\"Unique value to ensure this exact multicall can only be executed once\",\"signature\":\"EIP-712 signature from backend signer\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setBackendSigner(address)\":{\"custom:error\":\"ZeroAddress if newSigner is address(0)Ownable: caller is not the owner (from OpenZeppelin Ownable)\",\"details\":\"Only callable by contract ownerReverts with ZeroAddress if newSigner is address(0)Emits BackendSignerUpdated event\",\"params\":{\"newSigner\":\"New backend signer address\"}},\"sweep(address,address)\":{\"custom:error\":\"CallerNotAuthorized if caller is not owner or contract itselfZeroAddress if token is address(0) or to is address(0)\",\"details\":\"Transfers the entire balance of token held by this contractUses SafeERC20 for safe transfer operationsShould only be called via multicall for safety, but can be called directly by owner\",\"params\":{\"to\":\"Recipient address for the swept tokens\",\"token\":\"ERC-20 token contract to sweep\"}},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.\"}},\"stateVariables\":{\"MULTICALL_TYPEHASH\":{\"details\":\"keccak256(\\\"Multicall(address caller,bytes[] calls,uint256 deadline,bytes32 salt)\\\")\"},\"backendSigner\":{\"details\":\"Can be updated by contract owner via setBackendSigner\"},\"usedSalts\":{\"details\":\"Maps salt => bool to prevent reuse of same salt\"}},\"title\":\"SwapHelper\",\"version\":1},\"userdoc\":{\"errors\":{\"CallerNotAuthorized()\":[{\"notice\":\"Error thrown when caller is not authorized\"}],\"DeadlineReached()\":[{\"notice\":\"Error thrown when transaction deadline has passed\"}],\"MissingSignature()\":[{\"notice\":\"Error thrown when signature is missing but required\"}],\"NoCallsProvided()\":[{\"notice\":\"Error thrown when no calls are provided to multicall\"}],\"SaltAlreadyUsed()\":[{\"notice\":\"Error thrown when salt has already been used\"}],\"Unauthorized()\":[{\"notice\":\"Error thrown when signature verification fails\"}],\"ZeroAddress()\":[{\"notice\":\"Error thrown when zero address is provided as parameter\"}]},\"events\":{\"ApprovedMax(address,address)\":{\"notice\":\"Event emitted when maximum approval is granted\"},\"BackendSignerUpdated(address,address)\":{\"notice\":\"Event emitted when backend signer is updated\"},\"GenericCallExecuted(address,bytes)\":{\"notice\":\"Event emitted when generic call is executed\"},\"MulticallExecuted(address,uint256,uint256,bytes32)\":{\"notice\":\"Event emitted when multicall is successfully executed\"},\"Swept(address,address,uint256)\":{\"notice\":\"Event emitted when tokens are swept from the contract\"}},\"kind\":\"user\",\"methods\":{\"approveMax(address,address)\":{\"notice\":\"Approves maximum amount of an ERC-20 token to a specified spender\"},\"backendSigner()\":{\"notice\":\"Address authorized to sign multicall operations\"},\"constructor\":{\"notice\":\"Constructor\"},\"genericCall(address,bytes)\":{\"notice\":\"Generic call function to execute a call to an arbitrary address\"},\"multicall(bytes[],uint256,bytes32,bytes)\":{\"notice\":\"Multicall function to execute multiple calls in a single transaction.\"},\"setBackendSigner(address)\":{\"notice\":\"Updates the backend signer address\"},\"sweep(address,address)\":{\"notice\":\"Sweeps entire balance of an ERC-20 token to a specified address\"},\"usedSalts(bytes32)\":{\"notice\":\"Mapping to track used salts for replay protection\"}},\"notice\":\"Helper contract for executing multiple token operations atomically\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/SwapHelper/SwapHelper.sol\":\"SwapHelper\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.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 IERC20Upgradeable {\\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(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x0e1f0f5f62f67a881cd1a9597acbc0a5e4071f3c2c10449a183b922ae7272e3f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (token/ERC20/extensions/IERC20Permit.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\\n *\\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\\n * need to send a transaction, and thus is not required to hold Ether at all.\\n *\\n * ==== Security Considerations\\n *\\n * There are two important considerations concerning the use of `permit`. The first is that a valid permit signature\\n * expresses an allowance, and it should not be assumed to convey additional meaning. In particular, it should not be\\n * considered as an intention to spend the allowance in any specific way. The second is that because permits have\\n * built-in replay protection and can be submitted by anyone, they can be frontrun. A protocol that uses permits should\\n * take this into consideration and allow a `permit` call to fail. Combining these two aspects, a pattern that may be\\n * generally recommended is:\\n *\\n * ```solidity\\n * function doThingWithPermit(..., uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {\\n *     try token.permit(msg.sender, address(this), value, deadline, v, r, s) {} catch {}\\n *     doThing(..., value);\\n * }\\n *\\n * function doThing(..., uint256 value) public {\\n *     token.safeTransferFrom(msg.sender, address(this), value);\\n *     ...\\n * }\\n * ```\\n *\\n * Observe that: 1) `msg.sender` is used as the owner, leaving no ambiguity as to the signer intent, and 2) the use of\\n * `try/catch` allows the permit to fail and makes the code tolerant to frontrunning. (See also\\n * {SafeERC20-safeTransferFrom}).\\n *\\n * Additionally, note that smart contract wallets (such as Argent or Safe) are not able to produce permit signatures, so\\n * contracts should have entry points that don't rely on permit.\\n */\\ninterface IERC20PermitUpgradeable {\\n    /**\\n     * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\\n     * given ``owner``'s signed approval.\\n     *\\n     * IMPORTANT: The same issues {IERC20-approve} has related to transaction\\n     * ordering also apply here.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     * - `deadline` must be a timestamp in the future.\\n     * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\\n     * over the EIP712-formatted function arguments.\\n     * - the signature must use ``owner``'s current nonce (see {nonces}).\\n     *\\n     * For more information on the signature format, see the\\n     * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\\n     * section].\\n     *\\n     * CAUTION: See Security Considerations above.\\n     */\\n    function permit(\\n        address owner,\\n        address spender,\\n        uint256 value,\\n        uint256 deadline,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external;\\n\\n    /**\\n     * @dev Returns the current nonce for `owner`. This value must be\\n     * included whenever a signature is generated for {permit}.\\n     *\\n     * Every successful call to {permit} increases ``owner``'s nonce by one. This\\n     * prevents a signature from being used multiple times.\\n     */\\n    function nonces(address owner) external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\\n     */\\n    // solhint-disable-next-line func-name-mixedcase\\n    function DOMAIN_SEPARATOR() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x07e881de3b9f6d2c07909f193f24b96c7fe4ea60013260f3f25aecd8bab3c2f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.3) (token/ERC20/utils/SafeERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20Upgradeable.sol\\\";\\nimport \\\"../extensions/IERC20PermitUpgradeable.sol\\\";\\nimport \\\"../../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20Upgradeable {\\n    using AddressUpgradeable for address;\\n\\n    /**\\n     * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     */\\n    function safeTransfer(IERC20Upgradeable token, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\\n    }\\n\\n    /**\\n     * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\\n     * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\\n     */\\n    function safeTransferFrom(IERC20Upgradeable token, address from, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\\n    }\\n\\n    /**\\n     * @dev Deprecated. This function has issues similar to the ones found in\\n     * {IERC20-approve}, and its usage is discouraged.\\n     *\\n     * Whenever possible, use {safeIncreaseAllowance} and\\n     * {safeDecreaseAllowance} instead.\\n     */\\n    function safeApprove(IERC20Upgradeable token, address spender, uint256 value) internal {\\n        // safeApprove should only be called when setting an initial allowance,\\n        // or when resetting it to zero. To increase and decrease it, use\\n        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\\n        require(\\n            (value == 0) || (token.allowance(address(this), spender) == 0),\\n            \\\"SafeERC20: approve from non-zero to non-zero allowance\\\"\\n        );\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\\n    }\\n\\n    /**\\n     * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     */\\n    function safeIncreaseAllowance(IERC20Upgradeable token, address spender, uint256 value) internal {\\n        uint256 oldAllowance = token.allowance(address(this), spender);\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance + value));\\n    }\\n\\n    /**\\n     * @dev Decrease the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     */\\n    function safeDecreaseAllowance(IERC20Upgradeable token, address spender, uint256 value) internal {\\n        unchecked {\\n            uint256 oldAllowance = token.allowance(address(this), spender);\\n            require(oldAllowance >= value, \\\"SafeERC20: decreased allowance below zero\\\");\\n            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance - value));\\n        }\\n    }\\n\\n    /**\\n     * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\\n     * to be set to zero before setting it to a non-zero value, such as USDT.\\n     */\\n    function forceApprove(IERC20Upgradeable token, address spender, uint256 value) internal {\\n        bytes memory approvalCall = abi.encodeWithSelector(token.approve.selector, spender, value);\\n\\n        if (!_callOptionalReturnBool(token, approvalCall)) {\\n            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, 0));\\n            _callOptionalReturn(token, approvalCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Use a ERC-2612 signature to set the `owner` approval toward `spender` on `token`.\\n     * Revert on invalid signature.\\n     */\\n    function safePermit(\\n        IERC20PermitUpgradeable token,\\n        address owner,\\n        address spender,\\n        uint256 value,\\n        uint256 deadline,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) internal {\\n        uint256 nonceBefore = token.nonces(owner);\\n        token.permit(owner, spender, value, deadline, v, r, s);\\n        uint256 nonceAfter = token.nonces(owner);\\n        require(nonceAfter == nonceBefore + 1, \\\"SafeERC20: permit did not succeed\\\");\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     */\\n    function _callOptionalReturn(IERC20Upgradeable token, bytes memory data) private {\\n        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n        // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that\\n        // the target address contains contract code and also asserts for success in the low-level call.\\n\\n        bytes memory returndata = address(token).functionCall(data, \\\"SafeERC20: low-level call failed\\\");\\n        require(returndata.length == 0 || abi.decode(returndata, (bool)), \\\"SafeERC20: ERC20 operation did not succeed\\\");\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     *\\n     * This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead.\\n     */\\n    function _callOptionalReturnBool(IERC20Upgradeable token, bytes memory data) private returns (bool) {\\n        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n        // we're implementing it ourselves. We cannot use {Address-functionCall} here since this should return false\\n        // and not revert is the subcall reverts.\\n\\n        (bool success, bytes memory returndata) = address(token).call(data);\\n        return\\n            success && (returndata.length == 0 || abi.decode(returndata, (bool))) && AddressUpgradeable.isContract(address(token));\\n    }\\n}\\n\",\"keccak256\":\"0x23b997be73d3dd46885262704f0f8cfc7273fdadfe303d37969a9561373972b5\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     *\\n     * Furthermore, `isContract` will also return true if the target contract within\\n     * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n     * which only has an effect at the end of a transaction.\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n     * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n     *\\n     * _Available since v4.8._\\n     */\\n    function verifyCallResultFromTarget(\\n        address target,\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        if (success) {\\n            if (returndata.length == 0) {\\n                // only check isContract if the call was successful and the return data is empty\\n                // otherwise we already know that it was a contract\\n                require(isContract(target), \\\"Address: call to non-contract\\\");\\n            }\\n            return returndata;\\n        } else {\\n            _revert(returndata, errorMessage);\\n        }\\n    }\\n\\n    /**\\n     * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason or using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            _revert(returndata, errorMessage);\\n        }\\n    }\\n\\n    function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n        // Look for revert reason and bubble it up if present\\n        if (returndata.length > 0) {\\n            // The easiest way to bubble the revert reason is using memory via assembly\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert(errorMessage);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\"},\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.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. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        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\",\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\"},\"@openzeppelin/contracts/access/Ownable2Step.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable2Step.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./Ownable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides 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} and {acceptOwnership}.\\n *\\n * This module is used through inheritance. It will make available all functions\\n * from parent (Ownable).\\n */\\nabstract contract Ownable2Step is Ownable {\\n    address private _pendingOwner;\\n\\n    event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Returns the address of the pending owner.\\n     */\\n    function pendingOwner() public view virtual returns (address) {\\n        return _pendingOwner;\\n    }\\n\\n    /**\\n     * @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual override onlyOwner {\\n        _pendingOwner = newOwner;\\n        emit OwnershipTransferStarted(owner(), newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual override {\\n        delete _pendingOwner;\\n        super._transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev The new owner accepts the ownership transfer.\\n     */\\n    function acceptOwnership() public virtual {\\n        address sender = _msgSender();\\n        require(pendingOwner() == sender, \\\"Ownable2Step: caller is not the new owner\\\");\\n        _transferOwnership(sender);\\n    }\\n}\\n\",\"keccak256\":\"0xde231558366826d7cb61725af8147965a61c53b77a352cc8c9af38fc5a92ac3c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC5267.sol)\\n\\npragma solidity ^0.8.0;\\n\\ninterface IERC5267 {\\n    /**\\n     * @dev MAY be emitted to signal that the domain could have changed.\\n     */\\n    event EIP712DomainChanged();\\n\\n    /**\\n     * @dev returns the fields and values that describe the domain separator used by this contract for EIP-712\\n     * signature.\\n     */\\n    function eip712Domain()\\n        external\\n        view\\n        returns (\\n            bytes1 fields,\\n            string memory name,\\n            string memory version,\\n            uint256 chainId,\\n            address verifyingContract,\\n            bytes32 salt,\\n            uint256[] memory extensions\\n        );\\n}\\n\",\"keccak256\":\"0xac6c2efc64baccbde4904ae18ed45139c9aa8cff96d6888344d1e4d2eb8b659f\",\"license\":\"MIT\"},\"@openzeppelin/contracts/security/ReentrancyGuard.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (security/ReentrancyGuard.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Contract module that helps prevent reentrant calls to a function.\\n *\\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\\n * available, which can be applied to functions to make sure there are no nested\\n * (reentrant) calls to them.\\n *\\n * Note that because there is a single `nonReentrant` guard, functions marked as\\n * `nonReentrant` may not call one another. This can be worked around by making\\n * those functions `private`, and then adding `external` `nonReentrant` entry\\n * points to them.\\n *\\n * TIP: If you would like to learn more about reentrancy and alternative ways\\n * to protect against it, check out our blog post\\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\\n */\\nabstract contract ReentrancyGuard {\\n    // Booleans are more expensive than uint256 or any type that takes up a full\\n    // word because each write operation emits an extra SLOAD to first read the\\n    // slot's contents, replace the bits taken up by the boolean, and then write\\n    // back. This is the compiler's defense against contract upgrades and\\n    // pointer aliasing, and it cannot be disabled.\\n\\n    // The values being non-zero value makes deployment a bit more expensive,\\n    // but in exchange the refund on every call to nonReentrant will be lower in\\n    // amount. Since refunds are capped to a percentage of the total\\n    // transaction's gas, it is best to keep them low in cases like this one, to\\n    // increase the likelihood of the full refund coming into effect.\\n    uint256 private constant _NOT_ENTERED = 1;\\n    uint256 private constant _ENTERED = 2;\\n\\n    uint256 private _status;\\n\\n    constructor() {\\n        _status = _NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Prevents a contract from calling itself, directly or indirectly.\\n     * Calling a `nonReentrant` function from another `nonReentrant`\\n     * function is not supported. It is possible to prevent this from happening\\n     * by making the `nonReentrant` function external, and making it call a\\n     * `private` function that does the actual work.\\n     */\\n    modifier nonReentrant() {\\n        _nonReentrantBefore();\\n        _;\\n        _nonReentrantAfter();\\n    }\\n\\n    function _nonReentrantBefore() private {\\n        // On the first call to nonReentrant, _status will be _NOT_ENTERED\\n        require(_status != _ENTERED, \\\"ReentrancyGuard: reentrant call\\\");\\n\\n        // Any calls to nonReentrant after this point will fail\\n        _status = _ENTERED;\\n    }\\n\\n    function _nonReentrantAfter() private {\\n        // By storing the original value once again, a refund is triggered (see\\n        // https://eips.ethereum.org/EIPS/eip-2200)\\n        _status = _NOT_ENTERED;\\n    }\\n\\n    /**\\n     * @dev Returns true if the reentrancy guard is currently set to \\\"entered\\\", which indicates there is a\\n     * `nonReentrant` function in the call stack.\\n     */\\n    function _reentrancyGuardEntered() internal view returns (bool) {\\n        return _status == _ENTERED;\\n    }\\n}\\n\",\"keccak256\":\"0xa535a5df777d44e945dd24aa43a11e44b024140fc340ad0dfe42acf4002aade1\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.4) (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    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/ShortStrings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/ShortStrings.sol)\\n\\npragma solidity ^0.8.8;\\n\\nimport \\\"./StorageSlot.sol\\\";\\n\\n// | string  | 0xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA   |\\n// | length  | 0x                                                              BB |\\ntype ShortString is bytes32;\\n\\n/**\\n * @dev This library provides functions to convert short memory strings\\n * into a `ShortString` type that can be used as an immutable variable.\\n *\\n * Strings of arbitrary length can be optimized using this library if\\n * they are short enough (up to 31 bytes) by packing them with their\\n * length (1 byte) in a single EVM word (32 bytes). Additionally, a\\n * fallback mechanism can be used for every other case.\\n *\\n * Usage example:\\n *\\n * ```solidity\\n * contract Named {\\n *     using ShortStrings for *;\\n *\\n *     ShortString private immutable _name;\\n *     string private _nameFallback;\\n *\\n *     constructor(string memory contractName) {\\n *         _name = contractName.toShortStringWithFallback(_nameFallback);\\n *     }\\n *\\n *     function name() external view returns (string memory) {\\n *         return _name.toStringWithFallback(_nameFallback);\\n *     }\\n * }\\n * ```\\n */\\nlibrary ShortStrings {\\n    // Used as an identifier for strings longer than 31 bytes.\\n    bytes32 private constant _FALLBACK_SENTINEL = 0x00000000000000000000000000000000000000000000000000000000000000FF;\\n\\n    error StringTooLong(string str);\\n    error InvalidShortString();\\n\\n    /**\\n     * @dev Encode a string of at most 31 chars into a `ShortString`.\\n     *\\n     * This will trigger a `StringTooLong` error is the input string is too long.\\n     */\\n    function toShortString(string memory str) internal pure returns (ShortString) {\\n        bytes memory bstr = bytes(str);\\n        if (bstr.length > 31) {\\n            revert StringTooLong(str);\\n        }\\n        return ShortString.wrap(bytes32(uint256(bytes32(bstr)) | bstr.length));\\n    }\\n\\n    /**\\n     * @dev Decode a `ShortString` back to a \\\"normal\\\" string.\\n     */\\n    function toString(ShortString sstr) internal pure returns (string memory) {\\n        uint256 len = byteLength(sstr);\\n        // using `new string(len)` would work locally but is not memory safe.\\n        string memory str = new string(32);\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            mstore(str, len)\\n            mstore(add(str, 0x20), sstr)\\n        }\\n        return str;\\n    }\\n\\n    /**\\n     * @dev Return the length of a `ShortString`.\\n     */\\n    function byteLength(ShortString sstr) internal pure returns (uint256) {\\n        uint256 result = uint256(ShortString.unwrap(sstr)) & 0xFF;\\n        if (result > 31) {\\n            revert InvalidShortString();\\n        }\\n        return result;\\n    }\\n\\n    /**\\n     * @dev Encode a string into a `ShortString`, or write it to storage if it is too long.\\n     */\\n    function toShortStringWithFallback(string memory value, string storage store) internal returns (ShortString) {\\n        if (bytes(value).length < 32) {\\n            return toShortString(value);\\n        } else {\\n            StorageSlot.getStringSlot(store).value = value;\\n            return ShortString.wrap(_FALLBACK_SENTINEL);\\n        }\\n    }\\n\\n    /**\\n     * @dev Decode a string that was encoded to `ShortString` or written to storage using {setWithFallback}.\\n     */\\n    function toStringWithFallback(ShortString value, string storage store) internal pure returns (string memory) {\\n        if (ShortString.unwrap(value) != _FALLBACK_SENTINEL) {\\n            return toString(value);\\n        } else {\\n            return store;\\n        }\\n    }\\n\\n    /**\\n     * @dev Return the length of a string that was encoded to `ShortString` or written to storage using {setWithFallback}.\\n     *\\n     * WARNING: This will return the \\\"byte length\\\" of the string. This may not reflect the actual length in terms of\\n     * actual characters as the UTF-8 encoding of a single character can span over multiple bytes.\\n     */\\n    function byteLengthWithFallback(ShortString value, string storage store) internal view returns (uint256) {\\n        if (ShortString.unwrap(value) != _FALLBACK_SENTINEL) {\\n            return byteLength(value);\\n        } else {\\n            return bytes(store).length;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xc0e310c163edf15db45d4ff938113ab357f94fa86e61ea8e790853c4d2e13256\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\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 * ```solidity\\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`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\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    struct StringSlot {\\n        string value;\\n    }\\n\\n    struct BytesSlot {\\n        bytes 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    /**\\n     * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n     */\\n    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n     */\\n    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n    bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n    uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        unchecked {\\n            uint256 length = Math.log10(value) + 1;\\n            string memory buffer = new string(length);\\n            uint256 ptr;\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                ptr := add(buffer, add(32, length))\\n            }\\n            while (true) {\\n                ptr--;\\n                /// @solidity memory-safe-assembly\\n                assembly {\\n                    mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n                }\\n                value /= 10;\\n                if (value == 0) break;\\n            }\\n            return buffer;\\n        }\\n    }\\n\\n    /**\\n     * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(int256 value) internal pure returns (string memory) {\\n        return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        unchecked {\\n            return toHexString(value, Math.log256(value) + 1);\\n        }\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = _SYMBOLS[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(address addr) internal pure returns (string memory) {\\n        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n    }\\n\\n    /**\\n     * @dev Returns true if the two strings are equal.\\n     */\\n    function equal(string memory a, string memory b) internal pure returns (bool) {\\n        return keccak256(bytes(a)) == keccak256(bytes(b));\\n    }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/cryptography/ECDSA.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Strings.sol\\\";\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSA {\\n    enum RecoverError {\\n        NoError,\\n        InvalidSignature,\\n        InvalidSignatureLength,\\n        InvalidSignatureS,\\n        InvalidSignatureV // Deprecated in v4.8\\n    }\\n\\n    function _throwError(RecoverError error) private pure {\\n        if (error == RecoverError.NoError) {\\n            return; // no error: do nothing\\n        } else if (error == RecoverError.InvalidSignature) {\\n            revert(\\\"ECDSA: invalid signature\\\");\\n        } else if (error == RecoverError.InvalidSignatureLength) {\\n            revert(\\\"ECDSA: invalid signature length\\\");\\n        } else if (error == RecoverError.InvalidSignatureS) {\\n            revert(\\\"ECDSA: invalid signature 's' value\\\");\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature` or error string. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {toEthSignedMessageHash} on it.\\n     *\\n     * Documentation for signature generation:\\n     * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n     * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\\n        if (signature.length == 65) {\\n            bytes32 r;\\n            bytes32 s;\\n            uint8 v;\\n            // ecrecover takes the signature parameters, and the only way to get them\\n            // currently is to use assembly.\\n            /// @solidity memory-safe-assembly\\n            assembly {\\n                r := mload(add(signature, 0x20))\\n                s := mload(add(signature, 0x40))\\n                v := byte(0, mload(add(signature, 0x60)))\\n            }\\n            return tryRecover(hash, v, r, s);\\n        } else {\\n            return (address(0), RecoverError.InvalidSignatureLength);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature`. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {toEthSignedMessageHash} on it.\\n     */\\n    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, signature);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\n     *\\n     * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address, RecoverError) {\\n        bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\n        uint8 v = uint8((uint256(vs) >> 255) + 27);\\n        return tryRecover(hash, v, r, s);\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\n     *\\n     * _Available since v4.2._\\n     */\\n    function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, r, vs);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function tryRecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address, RecoverError) {\\n        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n        // the valid range for s in (301): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (302): v \\u2208 {27, 28}. Most\\n        // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n        //\\n        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n        // these malleable signatures as well.\\n        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n            return (address(0), RecoverError.InvalidSignatureS);\\n        }\\n\\n        // If the signature is valid (and not malleable), return the signer address\\n        address signer = ecrecover(hash, v, r, s);\\n        if (signer == address(0)) {\\n            return (address(0), RecoverError.InvalidSignature);\\n        }\\n\\n        return (signer, RecoverError.NoError);\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     */\\n    function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {\\n        (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\\n        _throwError(error);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n     * produces hash corresponding to the one signed with the\\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n     * JSON-RPC method as part of EIP-191.\\n     *\\n     * See {recover}.\\n     */\\n    function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32 message) {\\n        // 32 is the length in bytes of hash,\\n        // enforced by the type signature above\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            mstore(0x00, \\\"\\\\x19Ethereum Signed Message:\\\\n32\\\")\\n            mstore(0x1c, hash)\\n            message := keccak256(0x00, 0x3c)\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Message, created from `s`. This\\n     * produces hash corresponding to the one signed with the\\n     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\\n     * JSON-RPC method as part of EIP-191.\\n     *\\n     * See {recover}.\\n     */\\n    function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\\n        return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n\\\", Strings.toString(s.length), s));\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Typed Data, created from a\\n     * `domainSeparator` and a `structHash`. This produces hash corresponding\\n     * to the one signed with the\\n     * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\\n     * JSON-RPC method as part of EIP-712.\\n     *\\n     * See {recover}.\\n     */\\n    function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32 data) {\\n        /// @solidity memory-safe-assembly\\n        assembly {\\n            let ptr := mload(0x40)\\n            mstore(ptr, \\\"\\\\x19\\\\x01\\\")\\n            mstore(add(ptr, 0x02), domainSeparator)\\n            mstore(add(ptr, 0x22), structHash)\\n            data := keccak256(ptr, 0x42)\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Data with intended validator, created from a\\n     * `validator` and `data` according to the version 0 of EIP-191.\\n     *\\n     * See {recover}.\\n     */\\n    function toDataWithIntendedValidatorHash(address validator, bytes memory data) internal pure returns (bytes32) {\\n        return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x00\\\", validator, data));\\n    }\\n}\\n\",\"keccak256\":\"0x809bc3edb4bcbef8263fa616c1b60ee0004b50a8a1bfa164d8f57fd31f520c58\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/cryptography/EIP712.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/cryptography/EIP712.sol)\\n\\npragma solidity ^0.8.8;\\n\\nimport \\\"./ECDSA.sol\\\";\\nimport \\\"../ShortStrings.sol\\\";\\nimport \\\"../../interfaces/IERC5267.sol\\\";\\n\\n/**\\n * @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\\n *\\n * The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,\\n * thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding\\n * they need in their contracts using a combination of `abi.encode` and `keccak256`.\\n *\\n * This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\\n * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\\n * ({_hashTypedDataV4}).\\n *\\n * The implementation of the domain separator was designed to be as efficient as possible while still properly updating\\n * the chain id to protect against replay attacks on an eventual fork of the chain.\\n *\\n * NOTE: This contract implements the version of the encoding known as \\\"v4\\\", as implemented by the JSON RPC method\\n * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\\n *\\n * NOTE: In the upgradeable version of this contract, the cached values will correspond to the address, and the domain\\n * separator of the implementation contract. This will cause the `_domainSeparatorV4` function to always rebuild the\\n * separator from the immutable values, which is cheaper than accessing a cached version in cold storage.\\n *\\n * _Available since v3.4._\\n *\\n * @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n */\\nabstract contract EIP712 is IERC5267 {\\n    using ShortStrings for *;\\n\\n    bytes32 private constant _TYPE_HASH =\\n        keccak256(\\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\");\\n\\n    // Cache the domain separator as an immutable value, but also store the chain id that it corresponds to, in order to\\n    // invalidate the cached domain separator if the chain id changes.\\n    bytes32 private immutable _cachedDomainSeparator;\\n    uint256 private immutable _cachedChainId;\\n    address private immutable _cachedThis;\\n\\n    bytes32 private immutable _hashedName;\\n    bytes32 private immutable _hashedVersion;\\n\\n    ShortString private immutable _name;\\n    ShortString private immutable _version;\\n    string private _nameFallback;\\n    string private _versionFallback;\\n\\n    /**\\n     * @dev Initializes the domain separator and parameter caches.\\n     *\\n     * The meaning of `name` and `version` is specified in\\n     * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\\n     *\\n     * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\\n     * - `version`: the current major version of the signing domain.\\n     *\\n     * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\\n     * contract upgrade].\\n     */\\n    constructor(string memory name, string memory version) {\\n        _name = name.toShortStringWithFallback(_nameFallback);\\n        _version = version.toShortStringWithFallback(_versionFallback);\\n        _hashedName = keccak256(bytes(name));\\n        _hashedVersion = keccak256(bytes(version));\\n\\n        _cachedChainId = block.chainid;\\n        _cachedDomainSeparator = _buildDomainSeparator();\\n        _cachedThis = address(this);\\n    }\\n\\n    /**\\n     * @dev Returns the domain separator for the current chain.\\n     */\\n    function _domainSeparatorV4() internal view returns (bytes32) {\\n        if (address(this) == _cachedThis && block.chainid == _cachedChainId) {\\n            return _cachedDomainSeparator;\\n        } else {\\n            return _buildDomainSeparator();\\n        }\\n    }\\n\\n    function _buildDomainSeparator() private view returns (bytes32) {\\n        return keccak256(abi.encode(_TYPE_HASH, _hashedName, _hashedVersion, block.chainid, address(this)));\\n    }\\n\\n    /**\\n     * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\\n     * function returns the hash of the fully encoded EIP712 message for this domain.\\n     *\\n     * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\\n     *\\n     * ```solidity\\n     * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\\n     *     keccak256(\\\"Mail(address to,string contents)\\\"),\\n     *     mailTo,\\n     *     keccak256(bytes(mailContents))\\n     * )));\\n     * address signer = ECDSA.recover(digest, signature);\\n     * ```\\n     */\\n    function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {\\n        return ECDSA.toTypedDataHash(_domainSeparatorV4(), structHash);\\n    }\\n\\n    /**\\n     * @dev See {EIP-5267}.\\n     *\\n     * _Available since v4.9._\\n     */\\n    function eip712Domain()\\n        public\\n        view\\n        virtual\\n        override\\n        returns (\\n            bytes1 fields,\\n            string memory name,\\n            string memory version,\\n            uint256 chainId,\\n            address verifyingContract,\\n            bytes32 salt,\\n            uint256[] memory extensions\\n        )\\n    {\\n        return (\\n            hex\\\"0f\\\", // 01111\\n            _name.toStringWithFallback(_nameFallback),\\n            _version.toStringWithFallback(_versionFallback),\\n            block.chainid,\\n            address(this),\\n            bytes32(0),\\n            new uint256[](0)\\n        );\\n    }\\n}\\n\",\"keccak256\":\"0x8432884527a7ad91e6eed1cfc5a0811ae2073e5bca107bd0ca442e9236b03dbd\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.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(uint256 x, uint256 y, uint256 denominator) 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                // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n                // The surrounding unchecked block does not change this fact.\\n                // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n                return prod0 / denominator;\\n            }\\n\\n            // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n            require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\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(uint256 x, uint256 y, uint256 denominator, Rounding rounding) 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        // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n        // \\u2192 `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 256, 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 << 3) < value ? 1 : 0);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n    /**\\n     * @dev Returns the largest of two signed numbers.\\n     */\\n    function max(int256 a, int256 b) internal pure returns (int256) {\\n        return a > b ? a : b;\\n    }\\n\\n    /**\\n     * @dev Returns the smallest of two signed numbers.\\n     */\\n    function min(int256 a, int256 b) internal pure returns (int256) {\\n        return a < b ? a : b;\\n    }\\n\\n    /**\\n     * @dev Returns the average of two signed numbers without overflow.\\n     * The result is rounded towards zero.\\n     */\\n    function average(int256 a, int256 b) internal pure returns (int256) {\\n        // Formula from the book \\\"Hacker's Delight\\\"\\n        int256 x = (a & b) + ((a ^ b) >> 1);\\n        return x + (int256(uint256(x) >> 255) & (a ^ b));\\n    }\\n\\n    /**\\n     * @dev Returns the absolute unsigned value of a signed value.\\n     */\\n    function abs(int256 n) internal pure returns (uint256) {\\n        unchecked {\\n            // must be unchecked in order to support `n = type(int256).min`\\n            return uint256(n >= 0 ? n : -n);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"},\"contracts/SwapHelper/SwapHelper.sol\":{\"content\":\"// SPDX-License-Identifier: BSD-3-Clause\\npragma solidity 0.8.28;\\n\\nimport {\\n    SafeERC20Upgradeable,\\n    IERC20Upgradeable\\n} from \\\"@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol\\\";\\nimport { AddressUpgradeable } from \\\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\\\";\\nimport { EIP712 } from \\\"@openzeppelin/contracts/utils/cryptography/EIP712.sol\\\";\\nimport { ECDSA } from \\\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\\\";\\nimport { Ownable2Step } from \\\"@openzeppelin/contracts/access/Ownable2Step.sol\\\";\\nimport { ReentrancyGuard } from \\\"@openzeppelin/contracts/security/ReentrancyGuard.sol\\\";\\n\\n/**\\n * @title SwapHelper\\n * @author Venus Protocol\\n * @notice Helper contract for executing multiple token operations atomically\\n * @dev This contract provides utilities for managing approvals,\\n *      and executing arbitrary calls in a single transaction. It supports\\n *      signature verification using EIP-712 for backend-authorized operations.\\n *      All functions except multicall are designed to be called internally via multicall.\\n * @custom:security-contact security@venus.io\\n */\\ncontract SwapHelper is EIP712, Ownable2Step, ReentrancyGuard {\\n    using SafeERC20Upgradeable for IERC20Upgradeable;\\n    using AddressUpgradeable for address;\\n\\n    /// @notice EIP-712 typehash for Multicall struct used in signature verification\\n    /// @dev keccak256(\\\"Multicall(address caller,bytes[] calls,uint256 deadline,bytes32 salt)\\\")\\n    bytes32 internal constant MULTICALL_TYPEHASH =\\n        keccak256(\\\"Multicall(address caller,bytes[] calls,uint256 deadline,bytes32 salt)\\\");\\n\\n    /// @notice Address authorized to sign multicall operations\\n    /// @dev Can be updated by contract owner via setBackendSigner\\n    address public backendSigner;\\n\\n    /// @notice Mapping to track used salts for replay protection\\n    /// @dev Maps salt => bool to prevent reuse of same salt\\n    mapping(bytes32 => bool) public usedSalts;\\n\\n    /// @notice Error thrown when transaction deadline has passed\\n    /// @dev Emitted when block.timestamp > deadline in multicall\\n    error DeadlineReached();\\n\\n    /// @notice Error thrown when signature verification fails\\n    /// @dev Emitted when recovered signer doesn't match backendSigner\\n    error Unauthorized();\\n\\n    /// @notice Error thrown when zero address is provided as parameter\\n    /// @dev Used in constructor and setBackendSigner validation\\n    error ZeroAddress();\\n\\n    /// @notice Error thrown when salt has already been used\\n    /// @dev Prevents replay attacks by ensuring each salt is used only once\\n    error SaltAlreadyUsed();\\n\\n    /// @notice Error thrown when caller is not authorized\\n    /// @dev Only owner or contract itself can call protected functions\\n    error CallerNotAuthorized();\\n\\n    /// @notice Error thrown when no calls are provided to multicall\\n    /// @dev Emitted when calls array is empty in multicall\\n    error NoCallsProvided();\\n\\n    /// @notice Error thrown when signature is missing but required\\n    /// @dev Emitted when signature length is zero but verification is expected\\n    error MissingSignature();\\n\\n    /// @notice Event emitted when backend signer is updated\\n    /// @param oldSigner Previous backend signer address\\n    /// @param newSigner New backend signer address\\n    event BackendSignerUpdated(address indexed oldSigner, address indexed newSigner);\\n\\n    /// @notice Event emitted when multicall is successfully executed\\n    /// @param caller Address that initiated the multicall\\n    /// @param callsCount Number of calls executed in the batch\\n    /// @param deadline Deadline timestamp used for the operation\\n    /// @param salt Salt used for replay protection\\n    event MulticallExecuted(address indexed caller, uint256 callsCount, uint256 deadline, bytes32 salt);\\n\\n    /// @notice Event emitted when tokens are swept from the contract\\n    /// @param token Address of the token swept\\n    /// @param to Recipient address\\n    /// @param amount Amount of tokens swept\\n    event Swept(address indexed token, address indexed to, uint256 amount);\\n\\n    /// @notice Event emitted when maximum approval is granted\\n    /// @param token Address of the token approved\\n    /// @param spender Address granted the approval\\n    event ApprovedMax(address indexed token, address indexed spender);\\n\\n    /// @notice Event emitted when generic call is executed\\n    /// @param target Address of the contract called\\n    /// @param data Encoded function call data\\n    event GenericCallExecuted(address indexed target, bytes data);\\n\\n    /// @notice Constructor\\n    /// @param backendSigner_ Address authorized to sign multicall operations\\n    /// @dev Initializes EIP-712 domain with name \\\"VenusSwap\\\" and version \\\"1\\\"\\n    /// @dev Transfers ownership to msg.sender\\n    /// @dev Reverts with ZeroAddress if parameter is address(0)\\n    /// @custom:error ZeroAddress if backendSigner_ is address(0)\\n    constructor(address backendSigner_) EIP712(\\\"VenusSwap\\\", \\\"1\\\") {\\n        if (backendSigner_ == address(0)) {\\n            revert ZeroAddress();\\n        }\\n\\n        backendSigner = backendSigner_;\\n    }\\n\\n    /// @notice Modifier to restrict access to owner or contract itself\\n    /// @dev Reverts with CallerNotAuthorized if caller is neither owner nor this contract\\n    modifier onlyOwnerOrSelf() {\\n        if (msg.sender != owner() && msg.sender != address(this)) {\\n            revert CallerNotAuthorized();\\n        }\\n        _;\\n    }\\n\\n    /// @notice Multicall function to execute multiple calls in a single transaction.\\n    /// @param calls Array of encoded function calls to execute on this contract\\n    /// @param deadline Unix timestamp after which the transaction will revert\\n    /// @param salt Unique value to ensure this exact multicall can only be executed once\\n    /// @param signature EIP-712 signature from backend signer\\n    /// @dev All calls are executed atomically - if any call fails, entire transaction reverts\\n    /// @dev Calls must be to functions on this contract (address(this))\\n    /// @dev Protected by nonReentrant modifier to prevent reentrancy attacks\\n    /// @dev This function should be called as a part of a transaction that sends tokens to this contract and verifies if they received desired tokens after execution.\\n    /// @dev EOA that calls this function should not send tokens directly nor approve this contract to spend tokens on their behalf.\\n    /// @custom:event MulticallExecuted emitted upon successful execution\\n    /// @custom:security Only the contract itself can call sweep, approveMax, and genericCall\\n    /// @custom:error NoCallsProvided if calls array is empty\\n    /// @custom:error DeadlineReached if block.timestamp > deadline\\n    /// @custom:error SaltAlreadyUsed if salt has been used before\\n    /// @custom:error Unauthorized if signature verification fails\\n    /// @custom:error MissingSignature if signature is empty\\n    function multicall(\\n        bytes[] calldata calls,\\n        uint256 deadline,\\n        bytes32 salt,\\n        bytes calldata signature\\n    ) external nonReentrant {\\n        if (calls.length == 0) {\\n            revert NoCallsProvided();\\n        }\\n\\n        if (block.timestamp > deadline) {\\n            revert DeadlineReached();\\n        }\\n\\n        if (signature.length == 0) {\\n            revert MissingSignature();\\n        }\\n        if (usedSalts[salt]) {\\n            revert SaltAlreadyUsed();\\n        }\\n        usedSalts[salt] = true;\\n\\n        bytes32 digest = _hashMulticall(msg.sender, calls, deadline, salt);\\n        address signer = ECDSA.recover(digest, signature);\\n        if (signer != backendSigner) {\\n            revert Unauthorized();\\n        }\\n\\n        for (uint256 i = 0; i < calls.length; i++) {\\n            (bool success, bytes memory returnData) = address(this).call(calls[i]);\\n            if (!success) {\\n                assembly {\\n                    revert(add(returnData, 0x20), mload(returnData))\\n                }\\n            }\\n        }\\n\\n        emit MulticallExecuted(msg.sender, calls.length, deadline, salt);\\n    }\\n\\n    /// @notice Generic call function to execute a call to an arbitrary address\\n    /// @param target Address of the contract to call\\n    /// @param data Encoded function call data\\n    /// @dev This function can interact with any external contract\\n    /// @dev Should only be called via multicall for safety, but can be called directly by owner\\n    /// @custom:security Use with extreme caution - can call any contract with any data\\n    /// @custom:security Ensure proper validation of target and data in off-chain systems\\n    /// @custom:error CallerNotAuthorized if caller is not owner or contract itself\\n    function genericCall(address target, bytes calldata data) external onlyOwnerOrSelf {\\n        target.functionCall(data);\\n        emit GenericCallExecuted(target, data);\\n    }\\n\\n    /// @notice Sweeps entire balance of an ERC-20 token to a specified address\\n    /// @param token ERC-20 token contract to sweep\\n    /// @param to Recipient address for the swept tokens\\n    /// @dev Transfers the entire balance of token held by this contract\\n    /// @dev Uses SafeERC20 for safe transfer operations\\n    /// @dev Should only be called via multicall for safety, but can be called directly by owner\\n    /// @custom:error CallerNotAuthorized if caller is not owner or contract itself\\n    /// @custom:error ZeroAddress if token is address(0) or to is address(0)\\n    function sweep(IERC20Upgradeable token, address to) external onlyOwnerOrSelf {\\n        if (address(token) == address(0) || to == address(0)) {\\n            revert ZeroAddress();\\n        }\\n        uint256 amount = token.balanceOf(address(this));\\n        if (amount > 0) {\\n            token.safeTransfer(to, amount);\\n        }\\n        emit Swept(address(token), to, amount);\\n    }\\n\\n    /// @notice Approves maximum amount of an ERC-20 token to a specified spender\\n    /// @param token ERC-20 token contract to approve\\n    /// @param spender Address to grant approval to\\n    /// @dev Sets approval to type(uint256).max for unlimited spending\\n    /// @dev Uses forceApprove to handle tokens that require 0 approval first\\n    /// @dev Should only be called via multicall for safety, but can be called directly by owner\\n    /// @custom:security Grants unlimited approval - ensure spender is trusted\\n    /// @custom:error CallerNotAuthorized if caller is not owner or contract itself\\n    function approveMax(IERC20Upgradeable token, address spender) external onlyOwnerOrSelf {\\n        token.forceApprove(spender, type(uint256).max);\\n        emit ApprovedMax(address(token), spender);\\n    }\\n\\n    /// @notice Updates the backend signer address\\n    /// @param newSigner New backend signer address\\n    /// @dev Only callable by contract owner\\n    /// @dev Reverts with ZeroAddress if newSigner is address(0)\\n    /// @dev Emits BackendSignerUpdated event\\n    /// @custom:error ZeroAddress if newSigner is address(0)\\n    /// @custom:error Ownable: caller is not the owner (from OpenZeppelin Ownable)\\n    function setBackendSigner(address newSigner) external onlyOwner {\\n        if (newSigner == address(0)) {\\n            revert ZeroAddress();\\n        }\\n\\n        emit BackendSignerUpdated(backendSigner, newSigner);\\n        backendSigner = newSigner;\\n    }\\n\\n    /// @notice Produces an EIP-712 digest of the multicall data\\n    /// @param caller Address of the authorized caller\\n    /// @param calls Array of encoded function calls\\n    /// @param deadline Unix timestamp deadline\\n    /// @param salt Unique value to ensure replay protection\\n    /// @return EIP-712 typed data hash for signature verification\\n    /// @dev Hashes each call individually, then encodes with MULTICALL_TYPEHASH, caller, deadline, and salt\\n    /// @dev Uses EIP-712 _hashTypedDataV4 for domain-separated hashing\\n    function _hashMulticall(\\n        address caller,\\n        bytes[] calldata calls,\\n        uint256 deadline,\\n        bytes32 salt\\n    ) internal view returns (bytes32) {\\n        bytes32[] memory callHashes = new bytes32[](calls.length);\\n        for (uint256 i = 0; i < calls.length; i++) {\\n            callHashes[i] = keccak256(calls[i]);\\n        }\\n        return\\n            _hashTypedDataV4(\\n                keccak256(\\n                    abi.encode(MULTICALL_TYPEHASH, caller, keccak256(abi.encodePacked(callHashes)), deadline, salt)\\n                )\\n            );\\n    }\\n}\\n\",\"keccak256\":\"0x663bdb3aaa485ce52b38bc7d325b14b94c68f32a74e472ec5cedaa2e04cc9df9\",\"license\":\"BSD-3-Clause\"}},\"version\":1}","storageLayout":{"storage":[{"astId":3598,"contract":"contracts/SwapHelper/SwapHelper.sol:SwapHelper","label":"_nameFallback","offset":0,"slot":"0","type":"t_string_storage"},{"astId":3600,"contract":"contracts/SwapHelper/SwapHelper.sol:SwapHelper","label":"_versionFallback","offset":0,"slot":"1","type":"t_string_storage"},{"astId":1491,"contract":"contracts/SwapHelper/SwapHelper.sol:SwapHelper","label":"_owner","offset":0,"slot":"2","type":"t_address"},{"astId":1604,"contract":"contracts/SwapHelper/SwapHelper.sol:SwapHelper","label":"_pendingOwner","offset":0,"slot":"3","type":"t_address"},{"astId":1715,"contract":"contracts/SwapHelper/SwapHelper.sol:SwapHelper","label":"_status","offset":0,"slot":"4","type":"t_uint256"},{"astId":7866,"contract":"contracts/SwapHelper/SwapHelper.sol:SwapHelper","label":"backendSigner","offset":0,"slot":"5","type":"t_address"},{"astId":7871,"contract":"contracts/SwapHelper/SwapHelper.sol:SwapHelper","label":"usedSalts","offset":0,"slot":"6","type":"t_mapping(t_bytes32,t_bool)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_mapping(t_bytes32,t_bool)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => bool)","numberOfBytes":"32","value":"t_bool"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"errors":{"CallerNotAuthorized()":[{"notice":"Error thrown when caller is not authorized"}],"DeadlineReached()":[{"notice":"Error thrown when transaction deadline has passed"}],"MissingSignature()":[{"notice":"Error thrown when signature is missing but required"}],"NoCallsProvided()":[{"notice":"Error thrown when no calls are provided to multicall"}],"SaltAlreadyUsed()":[{"notice":"Error thrown when salt has already been used"}],"Unauthorized()":[{"notice":"Error thrown when signature verification fails"}],"ZeroAddress()":[{"notice":"Error thrown when zero address is provided as parameter"}]},"events":{"ApprovedMax(address,address)":{"notice":"Event emitted when maximum approval is granted"},"BackendSignerUpdated(address,address)":{"notice":"Event emitted when backend signer is updated"},"GenericCallExecuted(address,bytes)":{"notice":"Event emitted when generic call is executed"},"MulticallExecuted(address,uint256,uint256,bytes32)":{"notice":"Event emitted when multicall is successfully executed"},"Swept(address,address,uint256)":{"notice":"Event emitted when tokens are swept from the contract"}},"kind":"user","methods":{"approveMax(address,address)":{"notice":"Approves maximum amount of an ERC-20 token to a specified spender"},"backendSigner()":{"notice":"Address authorized to sign multicall operations"},"constructor":{"notice":"Constructor"},"genericCall(address,bytes)":{"notice":"Generic call function to execute a call to an arbitrary address"},"multicall(bytes[],uint256,bytes32,bytes)":{"notice":"Multicall function to execute multiple calls in a single transaction."},"setBackendSigner(address)":{"notice":"Updates the backend signer address"},"sweep(address,address)":{"notice":"Sweeps entire balance of an ERC-20 token to a specified address"},"usedSalts(bytes32)":{"notice":"Mapping to track used salts for replay protection"}},"notice":"Helper contract for executing multiple token operations atomically","version":1}}},"hardhat-deploy/solc_0.8/openzeppelin/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":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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\":{\"hardhat-deploy/solc_0.8/openzeppelin/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"hardhat-deploy/solc_0.8/openzeppelin/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (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 (address initialOwner) {\\n        _transferOwnership(initialOwner);\\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 called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n        _;\\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\",\"keccak256\":\"0x9b2bbba5bb04f53f277739c1cdff896ba8b3bf591cfc4eab2098c655e8ac251e\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/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\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":8336,"contract":"hardhat-deploy/solc_0.8/openzeppelin/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}}},"hardhat-deploy/solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol":{"IERC1822Proxiable":{"abi":[{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.","kind":"dev","methods":{"proxiableUUID()":{"details":"Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"proxiableUUID()":"52d1902d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.\",\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"hardhat-deploy/solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol\":\"IERC1822Proxiable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"hardhat-deploy/solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol":{"ERC1967Proxy":{"abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"details":"This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.","events":{"AdminChanged(address,address)":{"details":"Emitted when the admin account has changed."},"BeaconUpgraded(address)":{"details":"Emitted when the beacon is upgraded."},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{"constructor":{"details":"Initializes the upgradeable proxy with an initial implementation specified by `_logic`. If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded function call, and allows initializating the storage of the proxy like a Solidity constructor."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_8484":{"entryPoint":null,"id":8484,"parameterSlots":2,"returnSlots":0},"@_setImplementation_8553":{"entryPoint":274,"id":8553,"parameterSlots":1,"returnSlots":0},"@_upgradeToAndCall_8598":{"entryPoint":122,"id":8598,"parameterSlots":3,"returnSlots":0},"@_upgradeTo_8568":{"entryPoint":165,"id":8568,"parameterSlots":1,"returnSlots":0},"@functionDelegateCall_9414":{"entryPoint":228,"id":9414,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_9449":{"entryPoint":368,"id":9449,"parameterSlots":3,"returnSlots":1},"@getAddressSlot_9529":{"entryPoint":null,"id":9529,"parameterSlots":1,"returnSlots":1},"@isContract_9204":{"entryPoint":null,"id":9204,"parameterSlots":1,"returnSlots":1},"@verifyCallResult_9480":{"entryPoint":525,"id":9480,"parameterSlots":3,"returnSlots":1},"abi_decode_available_length_t_bytes_memory_ptr_fromMemory":{"entryPoint":774,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_address_fromMemory":{"entryPoint":620,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes_memory_ptr_fromMemory":{"entryPoint":837,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory":{"entryPoint":879,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":1195,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack":{"entryPoint":1239,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65_to_t_string_memory_ptr_fromStack":{"entryPoint":1021,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520_to_t_string_memory_ptr_fromStack":{"entryPoint":1113,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":1228,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":1288,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":1097,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":1179,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory":{"entryPoint":695,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_bytes_memory_ptr":{"entryPoint":722,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_bytes_memory_ptr":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_string_memory_ptr":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":982,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_address":{"entryPoint":582,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":763,"id":null,"parameterSlots":3,"returnSlots":0},"finalize_allocation":{"entryPoint":651,"id":null,"parameterSlots":2,"returnSlots":0},"panic_error_0x01":{"entryPoint":1001,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x11":{"entryPoint":962,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":631,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"store_literal_in_memory_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_address":{"entryPoint":598,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:8382:55","nodeType":"YulBlock","src":"0:8382:55","statements":[{"body":{"nativeSrc":"47:35:55","nodeType":"YulBlock","src":"47:35:55","statements":[{"nativeSrc":"57:19:55","nodeType":"YulAssignment","src":"57:19:55","value":{"arguments":[{"kind":"number","nativeSrc":"73:2:55","nodeType":"YulLiteral","src":"73:2:55","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"67:5:55","nodeType":"YulIdentifier","src":"67:5:55"},"nativeSrc":"67:9:55","nodeType":"YulFunctionCall","src":"67:9:55"},"variableNames":[{"name":"memPtr","nativeSrc":"57:6:55","nodeType":"YulIdentifier","src":"57:6:55"}]}]},"name":"allocate_unbounded","nativeSrc":"7:75:55","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"40:6:55","nodeType":"YulTypedName","src":"40:6:55","type":""}],"src":"7:75:55"},{"body":{"nativeSrc":"177:28:55","nodeType":"YulBlock","src":"177:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"194:1:55","nodeType":"YulLiteral","src":"194:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"197:1:55","nodeType":"YulLiteral","src":"197:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"187:6:55","nodeType":"YulIdentifier","src":"187:6:55"},"nativeSrc":"187:12:55","nodeType":"YulFunctionCall","src":"187:12:55"},"nativeSrc":"187:12:55","nodeType":"YulExpressionStatement","src":"187:12:55"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"88:117:55","nodeType":"YulFunctionDefinition","src":"88:117:55"},{"body":{"nativeSrc":"300:28:55","nodeType":"YulBlock","src":"300:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"317:1:55","nodeType":"YulLiteral","src":"317:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"320:1:55","nodeType":"YulLiteral","src":"320:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"310:6:55","nodeType":"YulIdentifier","src":"310:6:55"},"nativeSrc":"310:12:55","nodeType":"YulFunctionCall","src":"310:12:55"},"nativeSrc":"310:12:55","nodeType":"YulExpressionStatement","src":"310:12:55"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"211:117:55","nodeType":"YulFunctionDefinition","src":"211:117:55"},{"body":{"nativeSrc":"379:81:55","nodeType":"YulBlock","src":"379:81:55","statements":[{"nativeSrc":"389:65:55","nodeType":"YulAssignment","src":"389:65:55","value":{"arguments":[{"name":"value","nativeSrc":"404:5:55","nodeType":"YulIdentifier","src":"404:5:55"},{"kind":"number","nativeSrc":"411:42:55","nodeType":"YulLiteral","src":"411:42:55","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"400:3:55","nodeType":"YulIdentifier","src":"400:3:55"},"nativeSrc":"400:54:55","nodeType":"YulFunctionCall","src":"400:54:55"},"variableNames":[{"name":"cleaned","nativeSrc":"389:7:55","nodeType":"YulIdentifier","src":"389:7:55"}]}]},"name":"cleanup_t_uint160","nativeSrc":"334:126:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"361:5:55","nodeType":"YulTypedName","src":"361:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"371:7:55","nodeType":"YulTypedName","src":"371:7:55","type":""}],"src":"334:126:55"},{"body":{"nativeSrc":"511:51:55","nodeType":"YulBlock","src":"511:51:55","statements":[{"nativeSrc":"521:35:55","nodeType":"YulAssignment","src":"521:35:55","value":{"arguments":[{"name":"value","nativeSrc":"550:5:55","nodeType":"YulIdentifier","src":"550:5:55"}],"functionName":{"name":"cleanup_t_uint160","nativeSrc":"532:17:55","nodeType":"YulIdentifier","src":"532:17:55"},"nativeSrc":"532:24:55","nodeType":"YulFunctionCall","src":"532:24:55"},"variableNames":[{"name":"cleaned","nativeSrc":"521:7:55","nodeType":"YulIdentifier","src":"521:7:55"}]}]},"name":"cleanup_t_address","nativeSrc":"466:96:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"493:5:55","nodeType":"YulTypedName","src":"493:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"503:7:55","nodeType":"YulTypedName","src":"503:7:55","type":""}],"src":"466:96:55"},{"body":{"nativeSrc":"611:79:55","nodeType":"YulBlock","src":"611:79:55","statements":[{"body":{"nativeSrc":"668:16:55","nodeType":"YulBlock","src":"668:16:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"677:1:55","nodeType":"YulLiteral","src":"677:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"680:1:55","nodeType":"YulLiteral","src":"680:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"670:6:55","nodeType":"YulIdentifier","src":"670:6:55"},"nativeSrc":"670:12:55","nodeType":"YulFunctionCall","src":"670:12:55"},"nativeSrc":"670:12:55","nodeType":"YulExpressionStatement","src":"670:12:55"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"634:5:55","nodeType":"YulIdentifier","src":"634:5:55"},{"arguments":[{"name":"value","nativeSrc":"659:5:55","nodeType":"YulIdentifier","src":"659:5:55"}],"functionName":{"name":"cleanup_t_address","nativeSrc":"641:17:55","nodeType":"YulIdentifier","src":"641:17:55"},"nativeSrc":"641:24:55","nodeType":"YulFunctionCall","src":"641:24:55"}],"functionName":{"name":"eq","nativeSrc":"631:2:55","nodeType":"YulIdentifier","src":"631:2:55"},"nativeSrc":"631:35:55","nodeType":"YulFunctionCall","src":"631:35:55"}],"functionName":{"name":"iszero","nativeSrc":"624:6:55","nodeType":"YulIdentifier","src":"624:6:55"},"nativeSrc":"624:43:55","nodeType":"YulFunctionCall","src":"624:43:55"},"nativeSrc":"621:63:55","nodeType":"YulIf","src":"621:63:55"}]},"name":"validator_revert_t_address","nativeSrc":"568:122:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"604:5:55","nodeType":"YulTypedName","src":"604:5:55","type":""}],"src":"568:122:55"},{"body":{"nativeSrc":"759:80:55","nodeType":"YulBlock","src":"759:80:55","statements":[{"nativeSrc":"769:22:55","nodeType":"YulAssignment","src":"769:22:55","value":{"arguments":[{"name":"offset","nativeSrc":"784:6:55","nodeType":"YulIdentifier","src":"784:6:55"}],"functionName":{"name":"mload","nativeSrc":"778:5:55","nodeType":"YulIdentifier","src":"778:5:55"},"nativeSrc":"778:13:55","nodeType":"YulFunctionCall","src":"778:13:55"},"variableNames":[{"name":"value","nativeSrc":"769:5:55","nodeType":"YulIdentifier","src":"769:5:55"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"827:5:55","nodeType":"YulIdentifier","src":"827:5:55"}],"functionName":{"name":"validator_revert_t_address","nativeSrc":"800:26:55","nodeType":"YulIdentifier","src":"800:26:55"},"nativeSrc":"800:33:55","nodeType":"YulFunctionCall","src":"800:33:55"},"nativeSrc":"800:33:55","nodeType":"YulExpressionStatement","src":"800:33:55"}]},"name":"abi_decode_t_address_fromMemory","nativeSrc":"696:143:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"737:6:55","nodeType":"YulTypedName","src":"737:6:55","type":""},{"name":"end","nativeSrc":"745:3:55","nodeType":"YulTypedName","src":"745:3:55","type":""}],"returnVariables":[{"name":"value","nativeSrc":"753:5:55","nodeType":"YulTypedName","src":"753:5:55","type":""}],"src":"696:143:55"},{"body":{"nativeSrc":"934:28:55","nodeType":"YulBlock","src":"934:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"951:1:55","nodeType":"YulLiteral","src":"951:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"954:1:55","nodeType":"YulLiteral","src":"954:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"944:6:55","nodeType":"YulIdentifier","src":"944:6:55"},"nativeSrc":"944:12:55","nodeType":"YulFunctionCall","src":"944:12:55"},"nativeSrc":"944:12:55","nodeType":"YulExpressionStatement","src":"944:12:55"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nativeSrc":"845:117:55","nodeType":"YulFunctionDefinition","src":"845:117:55"},{"body":{"nativeSrc":"1057:28:55","nodeType":"YulBlock","src":"1057:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1074:1:55","nodeType":"YulLiteral","src":"1074:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"1077:1:55","nodeType":"YulLiteral","src":"1077:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1067:6:55","nodeType":"YulIdentifier","src":"1067:6:55"},"nativeSrc":"1067:12:55","nodeType":"YulFunctionCall","src":"1067:12:55"},"nativeSrc":"1067:12:55","nodeType":"YulExpressionStatement","src":"1067:12:55"}]},"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nativeSrc":"968:117:55","nodeType":"YulFunctionDefinition","src":"968:117:55"},{"body":{"nativeSrc":"1139:54:55","nodeType":"YulBlock","src":"1139:54:55","statements":[{"nativeSrc":"1149:38:55","nodeType":"YulAssignment","src":"1149:38:55","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1167:5:55","nodeType":"YulIdentifier","src":"1167:5:55"},{"kind":"number","nativeSrc":"1174:2:55","nodeType":"YulLiteral","src":"1174:2:55","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"1163:3:55","nodeType":"YulIdentifier","src":"1163:3:55"},"nativeSrc":"1163:14:55","nodeType":"YulFunctionCall","src":"1163:14:55"},{"arguments":[{"kind":"number","nativeSrc":"1183:2:55","nodeType":"YulLiteral","src":"1183:2:55","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"1179:3:55","nodeType":"YulIdentifier","src":"1179:3:55"},"nativeSrc":"1179:7:55","nodeType":"YulFunctionCall","src":"1179:7:55"}],"functionName":{"name":"and","nativeSrc":"1159:3:55","nodeType":"YulIdentifier","src":"1159:3:55"},"nativeSrc":"1159:28:55","nodeType":"YulFunctionCall","src":"1159:28:55"},"variableNames":[{"name":"result","nativeSrc":"1149:6:55","nodeType":"YulIdentifier","src":"1149:6:55"}]}]},"name":"round_up_to_mul_of_32","nativeSrc":"1091:102:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1122:5:55","nodeType":"YulTypedName","src":"1122:5:55","type":""}],"returnVariables":[{"name":"result","nativeSrc":"1132:6:55","nodeType":"YulTypedName","src":"1132:6:55","type":""}],"src":"1091:102:55"},{"body":{"nativeSrc":"1227:152:55","nodeType":"YulBlock","src":"1227:152:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1244:1:55","nodeType":"YulLiteral","src":"1244:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"1247:77:55","nodeType":"YulLiteral","src":"1247:77:55","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"1237:6:55","nodeType":"YulIdentifier","src":"1237:6:55"},"nativeSrc":"1237:88:55","nodeType":"YulFunctionCall","src":"1237:88:55"},"nativeSrc":"1237:88:55","nodeType":"YulExpressionStatement","src":"1237:88:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1341:1:55","nodeType":"YulLiteral","src":"1341:1:55","type":"","value":"4"},{"kind":"number","nativeSrc":"1344:4:55","nodeType":"YulLiteral","src":"1344:4:55","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"1334:6:55","nodeType":"YulIdentifier","src":"1334:6:55"},"nativeSrc":"1334:15:55","nodeType":"YulFunctionCall","src":"1334:15:55"},"nativeSrc":"1334:15:55","nodeType":"YulExpressionStatement","src":"1334:15:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1365:1:55","nodeType":"YulLiteral","src":"1365:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"1368:4:55","nodeType":"YulLiteral","src":"1368:4:55","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"1358:6:55","nodeType":"YulIdentifier","src":"1358:6:55"},"nativeSrc":"1358:15:55","nodeType":"YulFunctionCall","src":"1358:15:55"},"nativeSrc":"1358:15:55","nodeType":"YulExpressionStatement","src":"1358:15:55"}]},"name":"panic_error_0x41","nativeSrc":"1199:180:55","nodeType":"YulFunctionDefinition","src":"1199:180:55"},{"body":{"nativeSrc":"1428:238:55","nodeType":"YulBlock","src":"1428:238:55","statements":[{"nativeSrc":"1438:58:55","nodeType":"YulVariableDeclaration","src":"1438:58:55","value":{"arguments":[{"name":"memPtr","nativeSrc":"1460:6:55","nodeType":"YulIdentifier","src":"1460:6:55"},{"arguments":[{"name":"size","nativeSrc":"1490:4:55","nodeType":"YulIdentifier","src":"1490:4:55"}],"functionName":{"name":"round_up_to_mul_of_32","nativeSrc":"1468:21:55","nodeType":"YulIdentifier","src":"1468:21:55"},"nativeSrc":"1468:27:55","nodeType":"YulFunctionCall","src":"1468:27:55"}],"functionName":{"name":"add","nativeSrc":"1456:3:55","nodeType":"YulIdentifier","src":"1456:3:55"},"nativeSrc":"1456:40:55","nodeType":"YulFunctionCall","src":"1456:40:55"},"variables":[{"name":"newFreePtr","nativeSrc":"1442:10:55","nodeType":"YulTypedName","src":"1442:10:55","type":""}]},{"body":{"nativeSrc":"1607:22:55","nodeType":"YulBlock","src":"1607:22:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"1609:16:55","nodeType":"YulIdentifier","src":"1609:16:55"},"nativeSrc":"1609:18:55","nodeType":"YulFunctionCall","src":"1609:18:55"},"nativeSrc":"1609:18:55","nodeType":"YulExpressionStatement","src":"1609:18:55"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"1550:10:55","nodeType":"YulIdentifier","src":"1550:10:55"},{"kind":"number","nativeSrc":"1562:18:55","nodeType":"YulLiteral","src":"1562:18:55","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1547:2:55","nodeType":"YulIdentifier","src":"1547:2:55"},"nativeSrc":"1547:34:55","nodeType":"YulFunctionCall","src":"1547:34:55"},{"arguments":[{"name":"newFreePtr","nativeSrc":"1586:10:55","nodeType":"YulIdentifier","src":"1586:10:55"},{"name":"memPtr","nativeSrc":"1598:6:55","nodeType":"YulIdentifier","src":"1598:6:55"}],"functionName":{"name":"lt","nativeSrc":"1583:2:55","nodeType":"YulIdentifier","src":"1583:2:55"},"nativeSrc":"1583:22:55","nodeType":"YulFunctionCall","src":"1583:22:55"}],"functionName":{"name":"or","nativeSrc":"1544:2:55","nodeType":"YulIdentifier","src":"1544:2:55"},"nativeSrc":"1544:62:55","nodeType":"YulFunctionCall","src":"1544:62:55"},"nativeSrc":"1541:88:55","nodeType":"YulIf","src":"1541:88:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1645:2:55","nodeType":"YulLiteral","src":"1645:2:55","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"1649:10:55","nodeType":"YulIdentifier","src":"1649:10:55"}],"functionName":{"name":"mstore","nativeSrc":"1638:6:55","nodeType":"YulIdentifier","src":"1638:6:55"},"nativeSrc":"1638:22:55","nodeType":"YulFunctionCall","src":"1638:22:55"},"nativeSrc":"1638:22:55","nodeType":"YulExpressionStatement","src":"1638:22:55"}]},"name":"finalize_allocation","nativeSrc":"1385:281:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"1414:6:55","nodeType":"YulTypedName","src":"1414:6:55","type":""},{"name":"size","nativeSrc":"1422:4:55","nodeType":"YulTypedName","src":"1422:4:55","type":""}],"src":"1385:281:55"},{"body":{"nativeSrc":"1713:88:55","nodeType":"YulBlock","src":"1713:88:55","statements":[{"nativeSrc":"1723:30:55","nodeType":"YulAssignment","src":"1723:30:55","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nativeSrc":"1733:18:55","nodeType":"YulIdentifier","src":"1733:18:55"},"nativeSrc":"1733:20:55","nodeType":"YulFunctionCall","src":"1733:20:55"},"variableNames":[{"name":"memPtr","nativeSrc":"1723:6:55","nodeType":"YulIdentifier","src":"1723:6:55"}]},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"1782:6:55","nodeType":"YulIdentifier","src":"1782:6:55"},{"name":"size","nativeSrc":"1790:4:55","nodeType":"YulIdentifier","src":"1790:4:55"}],"functionName":{"name":"finalize_allocation","nativeSrc":"1762:19:55","nodeType":"YulIdentifier","src":"1762:19:55"},"nativeSrc":"1762:33:55","nodeType":"YulFunctionCall","src":"1762:33:55"},"nativeSrc":"1762:33:55","nodeType":"YulExpressionStatement","src":"1762:33:55"}]},"name":"allocate_memory","nativeSrc":"1672:129:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nativeSrc":"1697:4:55","nodeType":"YulTypedName","src":"1697:4:55","type":""}],"returnVariables":[{"name":"memPtr","nativeSrc":"1706:6:55","nodeType":"YulTypedName","src":"1706:6:55","type":""}],"src":"1672:129:55"},{"body":{"nativeSrc":"1873:241:55","nodeType":"YulBlock","src":"1873:241:55","statements":[{"body":{"nativeSrc":"1978:22:55","nodeType":"YulBlock","src":"1978:22:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"1980:16:55","nodeType":"YulIdentifier","src":"1980:16:55"},"nativeSrc":"1980:18:55","nodeType":"YulFunctionCall","src":"1980:18:55"},"nativeSrc":"1980:18:55","nodeType":"YulExpressionStatement","src":"1980:18:55"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"1950:6:55","nodeType":"YulIdentifier","src":"1950:6:55"},{"kind":"number","nativeSrc":"1958:18:55","nodeType":"YulLiteral","src":"1958:18:55","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1947:2:55","nodeType":"YulIdentifier","src":"1947:2:55"},"nativeSrc":"1947:30:55","nodeType":"YulFunctionCall","src":"1947:30:55"},"nativeSrc":"1944:56:55","nodeType":"YulIf","src":"1944:56:55"},{"nativeSrc":"2010:37:55","nodeType":"YulAssignment","src":"2010:37:55","value":{"arguments":[{"name":"length","nativeSrc":"2040:6:55","nodeType":"YulIdentifier","src":"2040:6:55"}],"functionName":{"name":"round_up_to_mul_of_32","nativeSrc":"2018:21:55","nodeType":"YulIdentifier","src":"2018:21:55"},"nativeSrc":"2018:29:55","nodeType":"YulFunctionCall","src":"2018:29:55"},"variableNames":[{"name":"size","nativeSrc":"2010:4:55","nodeType":"YulIdentifier","src":"2010:4:55"}]},{"nativeSrc":"2084:23:55","nodeType":"YulAssignment","src":"2084:23:55","value":{"arguments":[{"name":"size","nativeSrc":"2096:4:55","nodeType":"YulIdentifier","src":"2096:4:55"},{"kind":"number","nativeSrc":"2102:4:55","nodeType":"YulLiteral","src":"2102:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2092:3:55","nodeType":"YulIdentifier","src":"2092:3:55"},"nativeSrc":"2092:15:55","nodeType":"YulFunctionCall","src":"2092:15:55"},"variableNames":[{"name":"size","nativeSrc":"2084:4:55","nodeType":"YulIdentifier","src":"2084:4:55"}]}]},"name":"array_allocation_size_t_bytes_memory_ptr","nativeSrc":"1807:307:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nativeSrc":"1857:6:55","nodeType":"YulTypedName","src":"1857:6:55","type":""}],"returnVariables":[{"name":"size","nativeSrc":"1868:4:55","nodeType":"YulTypedName","src":"1868:4:55","type":""}],"src":"1807:307:55"},{"body":{"nativeSrc":"2182:77:55","nodeType":"YulBlock","src":"2182:77:55","statements":[{"expression":{"arguments":[{"name":"dst","nativeSrc":"2199:3:55","nodeType":"YulIdentifier","src":"2199:3:55"},{"name":"src","nativeSrc":"2204:3:55","nodeType":"YulIdentifier","src":"2204:3:55"},{"name":"length","nativeSrc":"2209:6:55","nodeType":"YulIdentifier","src":"2209:6:55"}],"functionName":{"name":"mcopy","nativeSrc":"2193:5:55","nodeType":"YulIdentifier","src":"2193:5:55"},"nativeSrc":"2193:23:55","nodeType":"YulFunctionCall","src":"2193:23:55"},"nativeSrc":"2193:23:55","nodeType":"YulExpressionStatement","src":"2193:23:55"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"2236:3:55","nodeType":"YulIdentifier","src":"2236:3:55"},{"name":"length","nativeSrc":"2241:6:55","nodeType":"YulIdentifier","src":"2241:6:55"}],"functionName":{"name":"add","nativeSrc":"2232:3:55","nodeType":"YulIdentifier","src":"2232:3:55"},"nativeSrc":"2232:16:55","nodeType":"YulFunctionCall","src":"2232:16:55"},{"kind":"number","nativeSrc":"2250:1:55","nodeType":"YulLiteral","src":"2250:1:55","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"2225:6:55","nodeType":"YulIdentifier","src":"2225:6:55"},"nativeSrc":"2225:27:55","nodeType":"YulFunctionCall","src":"2225:27:55"},"nativeSrc":"2225:27:55","nodeType":"YulExpressionStatement","src":"2225:27:55"}]},"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"2120:139:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nativeSrc":"2164:3:55","nodeType":"YulTypedName","src":"2164:3:55","type":""},{"name":"dst","nativeSrc":"2169:3:55","nodeType":"YulTypedName","src":"2169:3:55","type":""},{"name":"length","nativeSrc":"2174:6:55","nodeType":"YulTypedName","src":"2174:6:55","type":""}],"src":"2120:139:55"},{"body":{"nativeSrc":"2359:338:55","nodeType":"YulBlock","src":"2359:338:55","statements":[{"nativeSrc":"2369:74:55","nodeType":"YulAssignment","src":"2369:74:55","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"2435:6:55","nodeType":"YulIdentifier","src":"2435:6:55"}],"functionName":{"name":"array_allocation_size_t_bytes_memory_ptr","nativeSrc":"2394:40:55","nodeType":"YulIdentifier","src":"2394:40:55"},"nativeSrc":"2394:48:55","nodeType":"YulFunctionCall","src":"2394:48:55"}],"functionName":{"name":"allocate_memory","nativeSrc":"2378:15:55","nodeType":"YulIdentifier","src":"2378:15:55"},"nativeSrc":"2378:65:55","nodeType":"YulFunctionCall","src":"2378:65:55"},"variableNames":[{"name":"array","nativeSrc":"2369:5:55","nodeType":"YulIdentifier","src":"2369:5:55"}]},{"expression":{"arguments":[{"name":"array","nativeSrc":"2459:5:55","nodeType":"YulIdentifier","src":"2459:5:55"},{"name":"length","nativeSrc":"2466:6:55","nodeType":"YulIdentifier","src":"2466:6:55"}],"functionName":{"name":"mstore","nativeSrc":"2452:6:55","nodeType":"YulIdentifier","src":"2452:6:55"},"nativeSrc":"2452:21:55","nodeType":"YulFunctionCall","src":"2452:21:55"},"nativeSrc":"2452:21:55","nodeType":"YulExpressionStatement","src":"2452:21:55"},{"nativeSrc":"2482:27:55","nodeType":"YulVariableDeclaration","src":"2482:27:55","value":{"arguments":[{"name":"array","nativeSrc":"2497:5:55","nodeType":"YulIdentifier","src":"2497:5:55"},{"kind":"number","nativeSrc":"2504:4:55","nodeType":"YulLiteral","src":"2504:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2493:3:55","nodeType":"YulIdentifier","src":"2493:3:55"},"nativeSrc":"2493:16:55","nodeType":"YulFunctionCall","src":"2493:16:55"},"variables":[{"name":"dst","nativeSrc":"2486:3:55","nodeType":"YulTypedName","src":"2486:3:55","type":""}]},{"body":{"nativeSrc":"2547:83:55","nodeType":"YulBlock","src":"2547:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nativeSrc":"2549:77:55","nodeType":"YulIdentifier","src":"2549:77:55"},"nativeSrc":"2549:79:55","nodeType":"YulFunctionCall","src":"2549:79:55"},"nativeSrc":"2549:79:55","nodeType":"YulExpressionStatement","src":"2549:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"2528:3:55","nodeType":"YulIdentifier","src":"2528:3:55"},{"name":"length","nativeSrc":"2533:6:55","nodeType":"YulIdentifier","src":"2533:6:55"}],"functionName":{"name":"add","nativeSrc":"2524:3:55","nodeType":"YulIdentifier","src":"2524:3:55"},"nativeSrc":"2524:16:55","nodeType":"YulFunctionCall","src":"2524:16:55"},{"name":"end","nativeSrc":"2542:3:55","nodeType":"YulIdentifier","src":"2542:3:55"}],"functionName":{"name":"gt","nativeSrc":"2521:2:55","nodeType":"YulIdentifier","src":"2521:2:55"},"nativeSrc":"2521:25:55","nodeType":"YulFunctionCall","src":"2521:25:55"},"nativeSrc":"2518:112:55","nodeType":"YulIf","src":"2518:112:55"},{"expression":{"arguments":[{"name":"src","nativeSrc":"2674:3:55","nodeType":"YulIdentifier","src":"2674:3:55"},{"name":"dst","nativeSrc":"2679:3:55","nodeType":"YulIdentifier","src":"2679:3:55"},{"name":"length","nativeSrc":"2684:6:55","nodeType":"YulIdentifier","src":"2684:6:55"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"2639:34:55","nodeType":"YulIdentifier","src":"2639:34:55"},"nativeSrc":"2639:52:55","nodeType":"YulFunctionCall","src":"2639:52:55"},"nativeSrc":"2639:52:55","nodeType":"YulExpressionStatement","src":"2639:52:55"}]},"name":"abi_decode_available_length_t_bytes_memory_ptr_fromMemory","nativeSrc":"2265:432:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nativeSrc":"2332:3:55","nodeType":"YulTypedName","src":"2332:3:55","type":""},{"name":"length","nativeSrc":"2337:6:55","nodeType":"YulTypedName","src":"2337:6:55","type":""},{"name":"end","nativeSrc":"2345:3:55","nodeType":"YulTypedName","src":"2345:3:55","type":""}],"returnVariables":[{"name":"array","nativeSrc":"2353:5:55","nodeType":"YulTypedName","src":"2353:5:55","type":""}],"src":"2265:432:55"},{"body":{"nativeSrc":"2788:281:55","nodeType":"YulBlock","src":"2788:281:55","statements":[{"body":{"nativeSrc":"2837:83:55","nodeType":"YulBlock","src":"2837:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nativeSrc":"2839:77:55","nodeType":"YulIdentifier","src":"2839:77:55"},"nativeSrc":"2839:79:55","nodeType":"YulFunctionCall","src":"2839:79:55"},"nativeSrc":"2839:79:55","nodeType":"YulExpressionStatement","src":"2839:79:55"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"2816:6:55","nodeType":"YulIdentifier","src":"2816:6:55"},{"kind":"number","nativeSrc":"2824:4:55","nodeType":"YulLiteral","src":"2824:4:55","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"2812:3:55","nodeType":"YulIdentifier","src":"2812:3:55"},"nativeSrc":"2812:17:55","nodeType":"YulFunctionCall","src":"2812:17:55"},{"name":"end","nativeSrc":"2831:3:55","nodeType":"YulIdentifier","src":"2831:3:55"}],"functionName":{"name":"slt","nativeSrc":"2808:3:55","nodeType":"YulIdentifier","src":"2808:3:55"},"nativeSrc":"2808:27:55","nodeType":"YulFunctionCall","src":"2808:27:55"}],"functionName":{"name":"iszero","nativeSrc":"2801:6:55","nodeType":"YulIdentifier","src":"2801:6:55"},"nativeSrc":"2801:35:55","nodeType":"YulFunctionCall","src":"2801:35:55"},"nativeSrc":"2798:122:55","nodeType":"YulIf","src":"2798:122:55"},{"nativeSrc":"2929:27:55","nodeType":"YulVariableDeclaration","src":"2929:27:55","value":{"arguments":[{"name":"offset","nativeSrc":"2949:6:55","nodeType":"YulIdentifier","src":"2949:6:55"}],"functionName":{"name":"mload","nativeSrc":"2943:5:55","nodeType":"YulIdentifier","src":"2943:5:55"},"nativeSrc":"2943:13:55","nodeType":"YulFunctionCall","src":"2943:13:55"},"variables":[{"name":"length","nativeSrc":"2933:6:55","nodeType":"YulTypedName","src":"2933:6:55","type":""}]},{"nativeSrc":"2965:98:55","nodeType":"YulAssignment","src":"2965:98:55","value":{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"3036:6:55","nodeType":"YulIdentifier","src":"3036:6:55"},{"kind":"number","nativeSrc":"3044:4:55","nodeType":"YulLiteral","src":"3044:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3032:3:55","nodeType":"YulIdentifier","src":"3032:3:55"},"nativeSrc":"3032:17:55","nodeType":"YulFunctionCall","src":"3032:17:55"},{"name":"length","nativeSrc":"3051:6:55","nodeType":"YulIdentifier","src":"3051:6:55"},{"name":"end","nativeSrc":"3059:3:55","nodeType":"YulIdentifier","src":"3059:3:55"}],"functionName":{"name":"abi_decode_available_length_t_bytes_memory_ptr_fromMemory","nativeSrc":"2974:57:55","nodeType":"YulIdentifier","src":"2974:57:55"},"nativeSrc":"2974:89:55","nodeType":"YulFunctionCall","src":"2974:89:55"},"variableNames":[{"name":"array","nativeSrc":"2965:5:55","nodeType":"YulIdentifier","src":"2965:5:55"}]}]},"name":"abi_decode_t_bytes_memory_ptr_fromMemory","nativeSrc":"2716:353:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"2766:6:55","nodeType":"YulTypedName","src":"2766:6:55","type":""},{"name":"end","nativeSrc":"2774:3:55","nodeType":"YulTypedName","src":"2774:3:55","type":""}],"returnVariables":[{"name":"array","nativeSrc":"2782:5:55","nodeType":"YulTypedName","src":"2782:5:55","type":""}],"src":"2716:353:55"},{"body":{"nativeSrc":"3178:575:55","nodeType":"YulBlock","src":"3178:575:55","statements":[{"body":{"nativeSrc":"3224:83:55","nodeType":"YulBlock","src":"3224:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"3226:77:55","nodeType":"YulIdentifier","src":"3226:77:55"},"nativeSrc":"3226:79:55","nodeType":"YulFunctionCall","src":"3226:79:55"},"nativeSrc":"3226:79:55","nodeType":"YulExpressionStatement","src":"3226:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3199:7:55","nodeType":"YulIdentifier","src":"3199:7:55"},{"name":"headStart","nativeSrc":"3208:9:55","nodeType":"YulIdentifier","src":"3208:9:55"}],"functionName":{"name":"sub","nativeSrc":"3195:3:55","nodeType":"YulIdentifier","src":"3195:3:55"},"nativeSrc":"3195:23:55","nodeType":"YulFunctionCall","src":"3195:23:55"},{"kind":"number","nativeSrc":"3220:2:55","nodeType":"YulLiteral","src":"3220:2:55","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"3191:3:55","nodeType":"YulIdentifier","src":"3191:3:55"},"nativeSrc":"3191:32:55","nodeType":"YulFunctionCall","src":"3191:32:55"},"nativeSrc":"3188:119:55","nodeType":"YulIf","src":"3188:119:55"},{"nativeSrc":"3317:128:55","nodeType":"YulBlock","src":"3317:128:55","statements":[{"nativeSrc":"3332:15:55","nodeType":"YulVariableDeclaration","src":"3332:15:55","value":{"kind":"number","nativeSrc":"3346:1:55","nodeType":"YulLiteral","src":"3346:1:55","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"3336:6:55","nodeType":"YulTypedName","src":"3336:6:55","type":""}]},{"nativeSrc":"3361:74:55","nodeType":"YulAssignment","src":"3361:74:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3407:9:55","nodeType":"YulIdentifier","src":"3407:9:55"},{"name":"offset","nativeSrc":"3418:6:55","nodeType":"YulIdentifier","src":"3418:6:55"}],"functionName":{"name":"add","nativeSrc":"3403:3:55","nodeType":"YulIdentifier","src":"3403:3:55"},"nativeSrc":"3403:22:55","nodeType":"YulFunctionCall","src":"3403:22:55"},{"name":"dataEnd","nativeSrc":"3427:7:55","nodeType":"YulIdentifier","src":"3427:7:55"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nativeSrc":"3371:31:55","nodeType":"YulIdentifier","src":"3371:31:55"},"nativeSrc":"3371:64:55","nodeType":"YulFunctionCall","src":"3371:64:55"},"variableNames":[{"name":"value0","nativeSrc":"3361:6:55","nodeType":"YulIdentifier","src":"3361:6:55"}]}]},{"nativeSrc":"3455:291:55","nodeType":"YulBlock","src":"3455:291:55","statements":[{"nativeSrc":"3470:39:55","nodeType":"YulVariableDeclaration","src":"3470:39:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3494:9:55","nodeType":"YulIdentifier","src":"3494:9:55"},{"kind":"number","nativeSrc":"3505:2:55","nodeType":"YulLiteral","src":"3505:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3490:3:55","nodeType":"YulIdentifier","src":"3490:3:55"},"nativeSrc":"3490:18:55","nodeType":"YulFunctionCall","src":"3490:18:55"}],"functionName":{"name":"mload","nativeSrc":"3484:5:55","nodeType":"YulIdentifier","src":"3484:5:55"},"nativeSrc":"3484:25:55","nodeType":"YulFunctionCall","src":"3484:25:55"},"variables":[{"name":"offset","nativeSrc":"3474:6:55","nodeType":"YulTypedName","src":"3474:6:55","type":""}]},{"body":{"nativeSrc":"3556:83:55","nodeType":"YulBlock","src":"3556:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"3558:77:55","nodeType":"YulIdentifier","src":"3558:77:55"},"nativeSrc":"3558:79:55","nodeType":"YulFunctionCall","src":"3558:79:55"},"nativeSrc":"3558:79:55","nodeType":"YulExpressionStatement","src":"3558:79:55"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"3528:6:55","nodeType":"YulIdentifier","src":"3528:6:55"},{"kind":"number","nativeSrc":"3536:18:55","nodeType":"YulLiteral","src":"3536:18:55","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3525:2:55","nodeType":"YulIdentifier","src":"3525:2:55"},"nativeSrc":"3525:30:55","nodeType":"YulFunctionCall","src":"3525:30:55"},"nativeSrc":"3522:117:55","nodeType":"YulIf","src":"3522:117:55"},{"nativeSrc":"3653:83:55","nodeType":"YulAssignment","src":"3653:83:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3708:9:55","nodeType":"YulIdentifier","src":"3708:9:55"},{"name":"offset","nativeSrc":"3719:6:55","nodeType":"YulIdentifier","src":"3719:6:55"}],"functionName":{"name":"add","nativeSrc":"3704:3:55","nodeType":"YulIdentifier","src":"3704:3:55"},"nativeSrc":"3704:22:55","nodeType":"YulFunctionCall","src":"3704:22:55"},{"name":"dataEnd","nativeSrc":"3728:7:55","nodeType":"YulIdentifier","src":"3728:7:55"}],"functionName":{"name":"abi_decode_t_bytes_memory_ptr_fromMemory","nativeSrc":"3663:40:55","nodeType":"YulIdentifier","src":"3663:40:55"},"nativeSrc":"3663:73:55","nodeType":"YulFunctionCall","src":"3663:73:55"},"variableNames":[{"name":"value1","nativeSrc":"3653:6:55","nodeType":"YulIdentifier","src":"3653:6:55"}]}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory","nativeSrc":"3075:678:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3140:9:55","nodeType":"YulTypedName","src":"3140:9:55","type":""},{"name":"dataEnd","nativeSrc":"3151:7:55","nodeType":"YulTypedName","src":"3151:7:55","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3163:6:55","nodeType":"YulTypedName","src":"3163:6:55","type":""},{"name":"value1","nativeSrc":"3171:6:55","nodeType":"YulTypedName","src":"3171:6:55","type":""}],"src":"3075:678:55"},{"body":{"nativeSrc":"3804:32:55","nodeType":"YulBlock","src":"3804:32:55","statements":[{"nativeSrc":"3814:16:55","nodeType":"YulAssignment","src":"3814:16:55","value":{"name":"value","nativeSrc":"3825:5:55","nodeType":"YulIdentifier","src":"3825:5:55"},"variableNames":[{"name":"cleaned","nativeSrc":"3814:7:55","nodeType":"YulIdentifier","src":"3814:7:55"}]}]},"name":"cleanup_t_uint256","nativeSrc":"3759:77:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"3786:5:55","nodeType":"YulTypedName","src":"3786:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"3796:7:55","nodeType":"YulTypedName","src":"3796:7:55","type":""}],"src":"3759:77:55"},{"body":{"nativeSrc":"3870:152:55","nodeType":"YulBlock","src":"3870:152:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3887:1:55","nodeType":"YulLiteral","src":"3887:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"3890:77:55","nodeType":"YulLiteral","src":"3890:77:55","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"3880:6:55","nodeType":"YulIdentifier","src":"3880:6:55"},"nativeSrc":"3880:88:55","nodeType":"YulFunctionCall","src":"3880:88:55"},"nativeSrc":"3880:88:55","nodeType":"YulExpressionStatement","src":"3880:88:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3984:1:55","nodeType":"YulLiteral","src":"3984:1:55","type":"","value":"4"},{"kind":"number","nativeSrc":"3987:4:55","nodeType":"YulLiteral","src":"3987:4:55","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"3977:6:55","nodeType":"YulIdentifier","src":"3977:6:55"},"nativeSrc":"3977:15:55","nodeType":"YulFunctionCall","src":"3977:15:55"},"nativeSrc":"3977:15:55","nodeType":"YulExpressionStatement","src":"3977:15:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4008:1:55","nodeType":"YulLiteral","src":"4008:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"4011:4:55","nodeType":"YulLiteral","src":"4011:4:55","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"4001:6:55","nodeType":"YulIdentifier","src":"4001:6:55"},"nativeSrc":"4001:15:55","nodeType":"YulFunctionCall","src":"4001:15:55"},"nativeSrc":"4001:15:55","nodeType":"YulExpressionStatement","src":"4001:15:55"}]},"name":"panic_error_0x11","nativeSrc":"3842:180:55","nodeType":"YulFunctionDefinition","src":"3842:180:55"},{"body":{"nativeSrc":"4073:149:55","nodeType":"YulBlock","src":"4073:149:55","statements":[{"nativeSrc":"4083:25:55","nodeType":"YulAssignment","src":"4083:25:55","value":{"arguments":[{"name":"x","nativeSrc":"4106:1:55","nodeType":"YulIdentifier","src":"4106:1:55"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"4088:17:55","nodeType":"YulIdentifier","src":"4088:17:55"},"nativeSrc":"4088:20:55","nodeType":"YulFunctionCall","src":"4088:20:55"},"variableNames":[{"name":"x","nativeSrc":"4083:1:55","nodeType":"YulIdentifier","src":"4083:1:55"}]},{"nativeSrc":"4117:25:55","nodeType":"YulAssignment","src":"4117:25:55","value":{"arguments":[{"name":"y","nativeSrc":"4140:1:55","nodeType":"YulIdentifier","src":"4140:1:55"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"4122:17:55","nodeType":"YulIdentifier","src":"4122:17:55"},"nativeSrc":"4122:20:55","nodeType":"YulFunctionCall","src":"4122:20:55"},"variableNames":[{"name":"y","nativeSrc":"4117:1:55","nodeType":"YulIdentifier","src":"4117:1:55"}]},{"nativeSrc":"4151:17:55","nodeType":"YulAssignment","src":"4151:17:55","value":{"arguments":[{"name":"x","nativeSrc":"4163:1:55","nodeType":"YulIdentifier","src":"4163:1:55"},{"name":"y","nativeSrc":"4166:1:55","nodeType":"YulIdentifier","src":"4166:1:55"}],"functionName":{"name":"sub","nativeSrc":"4159:3:55","nodeType":"YulIdentifier","src":"4159:3:55"},"nativeSrc":"4159:9:55","nodeType":"YulFunctionCall","src":"4159:9:55"},"variableNames":[{"name":"diff","nativeSrc":"4151:4:55","nodeType":"YulIdentifier","src":"4151:4:55"}]},{"body":{"nativeSrc":"4193:22:55","nodeType":"YulBlock","src":"4193:22:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"4195:16:55","nodeType":"YulIdentifier","src":"4195:16:55"},"nativeSrc":"4195:18:55","nodeType":"YulFunctionCall","src":"4195:18:55"},"nativeSrc":"4195:18:55","nodeType":"YulExpressionStatement","src":"4195:18:55"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"4184:4:55","nodeType":"YulIdentifier","src":"4184:4:55"},{"name":"x","nativeSrc":"4190:1:55","nodeType":"YulIdentifier","src":"4190:1:55"}],"functionName":{"name":"gt","nativeSrc":"4181:2:55","nodeType":"YulIdentifier","src":"4181:2:55"},"nativeSrc":"4181:11:55","nodeType":"YulFunctionCall","src":"4181:11:55"},"nativeSrc":"4178:37:55","nodeType":"YulIf","src":"4178:37:55"}]},"name":"checked_sub_t_uint256","nativeSrc":"4028:194:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"4059:1:55","nodeType":"YulTypedName","src":"4059:1:55","type":""},{"name":"y","nativeSrc":"4062:1:55","nodeType":"YulTypedName","src":"4062:1:55","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"4068:4:55","nodeType":"YulTypedName","src":"4068:4:55","type":""}],"src":"4028:194:55"},{"body":{"nativeSrc":"4256:152:55","nodeType":"YulBlock","src":"4256:152:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4273:1:55","nodeType":"YulLiteral","src":"4273:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"4276:77:55","nodeType":"YulLiteral","src":"4276:77:55","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"4266:6:55","nodeType":"YulIdentifier","src":"4266:6:55"},"nativeSrc":"4266:88:55","nodeType":"YulFunctionCall","src":"4266:88:55"},"nativeSrc":"4266:88:55","nodeType":"YulExpressionStatement","src":"4266:88:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4370:1:55","nodeType":"YulLiteral","src":"4370:1:55","type":"","value":"4"},{"kind":"number","nativeSrc":"4373:4:55","nodeType":"YulLiteral","src":"4373:4:55","type":"","value":"0x01"}],"functionName":{"name":"mstore","nativeSrc":"4363:6:55","nodeType":"YulIdentifier","src":"4363:6:55"},"nativeSrc":"4363:15:55","nodeType":"YulFunctionCall","src":"4363:15:55"},"nativeSrc":"4363:15:55","nodeType":"YulExpressionStatement","src":"4363:15:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4394:1:55","nodeType":"YulLiteral","src":"4394:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"4397:4:55","nodeType":"YulLiteral","src":"4397:4:55","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"4387:6:55","nodeType":"YulIdentifier","src":"4387:6:55"},"nativeSrc":"4387:15:55","nodeType":"YulFunctionCall","src":"4387:15:55"},"nativeSrc":"4387:15:55","nodeType":"YulExpressionStatement","src":"4387:15:55"}]},"name":"panic_error_0x01","nativeSrc":"4228:180:55","nodeType":"YulFunctionDefinition","src":"4228:180:55"},{"body":{"nativeSrc":"4510:73:55","nodeType":"YulBlock","src":"4510:73:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"4527:3:55","nodeType":"YulIdentifier","src":"4527:3:55"},{"name":"length","nativeSrc":"4532:6:55","nodeType":"YulIdentifier","src":"4532:6:55"}],"functionName":{"name":"mstore","nativeSrc":"4520:6:55","nodeType":"YulIdentifier","src":"4520:6:55"},"nativeSrc":"4520:19:55","nodeType":"YulFunctionCall","src":"4520:19:55"},"nativeSrc":"4520:19:55","nodeType":"YulExpressionStatement","src":"4520:19:55"},{"nativeSrc":"4548:29:55","nodeType":"YulAssignment","src":"4548:29:55","value":{"arguments":[{"name":"pos","nativeSrc":"4567:3:55","nodeType":"YulIdentifier","src":"4567:3:55"},{"kind":"number","nativeSrc":"4572:4:55","nodeType":"YulLiteral","src":"4572:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4563:3:55","nodeType":"YulIdentifier","src":"4563:3:55"},"nativeSrc":"4563:14:55","nodeType":"YulFunctionCall","src":"4563:14:55"},"variableNames":[{"name":"updated_pos","nativeSrc":"4548:11:55","nodeType":"YulIdentifier","src":"4548:11:55"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"4414:169:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"4482:3:55","nodeType":"YulTypedName","src":"4482:3:55","type":""},{"name":"length","nativeSrc":"4487:6:55","nodeType":"YulTypedName","src":"4487:6:55","type":""}],"returnVariables":[{"name":"updated_pos","nativeSrc":"4498:11:55","nodeType":"YulTypedName","src":"4498:11:55","type":""}],"src":"4414:169:55"},{"body":{"nativeSrc":"4695:126:55","nodeType":"YulBlock","src":"4695:126:55","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"4717:6:55","nodeType":"YulIdentifier","src":"4717:6:55"},{"kind":"number","nativeSrc":"4725:1:55","nodeType":"YulLiteral","src":"4725:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"4713:3:55","nodeType":"YulIdentifier","src":"4713:3:55"},"nativeSrc":"4713:14:55","nodeType":"YulFunctionCall","src":"4713:14:55"},{"hexValue":"455243313936373a206e657720696d706c656d656e746174696f6e206973206e","kind":"string","nativeSrc":"4729:34:55","nodeType":"YulLiteral","src":"4729:34:55","type":"","value":"ERC1967: new implementation is n"}],"functionName":{"name":"mstore","nativeSrc":"4706:6:55","nodeType":"YulIdentifier","src":"4706:6:55"},"nativeSrc":"4706:58:55","nodeType":"YulFunctionCall","src":"4706:58:55"},"nativeSrc":"4706:58:55","nodeType":"YulExpressionStatement","src":"4706:58:55"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"4785:6:55","nodeType":"YulIdentifier","src":"4785:6:55"},{"kind":"number","nativeSrc":"4793:2:55","nodeType":"YulLiteral","src":"4793:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4781:3:55","nodeType":"YulIdentifier","src":"4781:3:55"},"nativeSrc":"4781:15:55","nodeType":"YulFunctionCall","src":"4781:15:55"},{"hexValue":"6f74206120636f6e7472616374","kind":"string","nativeSrc":"4798:15:55","nodeType":"YulLiteral","src":"4798:15:55","type":"","value":"ot a contract"}],"functionName":{"name":"mstore","nativeSrc":"4774:6:55","nodeType":"YulIdentifier","src":"4774:6:55"},"nativeSrc":"4774:40:55","nodeType":"YulFunctionCall","src":"4774:40:55"},"nativeSrc":"4774:40:55","nodeType":"YulExpressionStatement","src":"4774:40:55"}]},"name":"store_literal_in_memory_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65","nativeSrc":"4589:232:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"4687:6:55","nodeType":"YulTypedName","src":"4687:6:55","type":""}],"src":"4589:232:55"},{"body":{"nativeSrc":"4973:220:55","nodeType":"YulBlock","src":"4973:220:55","statements":[{"nativeSrc":"4983:74:55","nodeType":"YulAssignment","src":"4983:74:55","value":{"arguments":[{"name":"pos","nativeSrc":"5049:3:55","nodeType":"YulIdentifier","src":"5049:3:55"},{"kind":"number","nativeSrc":"5054:2:55","nodeType":"YulLiteral","src":"5054:2:55","type":"","value":"45"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"4990:58:55","nodeType":"YulIdentifier","src":"4990:58:55"},"nativeSrc":"4990:67:55","nodeType":"YulFunctionCall","src":"4990:67:55"},"variableNames":[{"name":"pos","nativeSrc":"4983:3:55","nodeType":"YulIdentifier","src":"4983:3:55"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"5155:3:55","nodeType":"YulIdentifier","src":"5155:3:55"}],"functionName":{"name":"store_literal_in_memory_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65","nativeSrc":"5066:88:55","nodeType":"YulIdentifier","src":"5066:88:55"},"nativeSrc":"5066:93:55","nodeType":"YulFunctionCall","src":"5066:93:55"},"nativeSrc":"5066:93:55","nodeType":"YulExpressionStatement","src":"5066:93:55"},{"nativeSrc":"5168:19:55","nodeType":"YulAssignment","src":"5168:19:55","value":{"arguments":[{"name":"pos","nativeSrc":"5179:3:55","nodeType":"YulIdentifier","src":"5179:3:55"},{"kind":"number","nativeSrc":"5184:2:55","nodeType":"YulLiteral","src":"5184:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5175:3:55","nodeType":"YulIdentifier","src":"5175:3:55"},"nativeSrc":"5175:12:55","nodeType":"YulFunctionCall","src":"5175:12:55"},"variableNames":[{"name":"end","nativeSrc":"5168:3:55","nodeType":"YulIdentifier","src":"5168:3:55"}]}]},"name":"abi_encode_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65_to_t_string_memory_ptr_fromStack","nativeSrc":"4827:366:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"4961:3:55","nodeType":"YulTypedName","src":"4961:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"4969:3:55","nodeType":"YulTypedName","src":"4969:3:55","type":""}],"src":"4827:366:55"},{"body":{"nativeSrc":"5370:248:55","nodeType":"YulBlock","src":"5370:248:55","statements":[{"nativeSrc":"5380:26:55","nodeType":"YulAssignment","src":"5380:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"5392:9:55","nodeType":"YulIdentifier","src":"5392:9:55"},{"kind":"number","nativeSrc":"5403:2:55","nodeType":"YulLiteral","src":"5403:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5388:3:55","nodeType":"YulIdentifier","src":"5388:3:55"},"nativeSrc":"5388:18:55","nodeType":"YulFunctionCall","src":"5388:18:55"},"variableNames":[{"name":"tail","nativeSrc":"5380:4:55","nodeType":"YulIdentifier","src":"5380:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5427:9:55","nodeType":"YulIdentifier","src":"5427:9:55"},{"kind":"number","nativeSrc":"5438:1:55","nodeType":"YulLiteral","src":"5438:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"5423:3:55","nodeType":"YulIdentifier","src":"5423:3:55"},"nativeSrc":"5423:17:55","nodeType":"YulFunctionCall","src":"5423:17:55"},{"arguments":[{"name":"tail","nativeSrc":"5446:4:55","nodeType":"YulIdentifier","src":"5446:4:55"},{"name":"headStart","nativeSrc":"5452:9:55","nodeType":"YulIdentifier","src":"5452:9:55"}],"functionName":{"name":"sub","nativeSrc":"5442:3:55","nodeType":"YulIdentifier","src":"5442:3:55"},"nativeSrc":"5442:20:55","nodeType":"YulFunctionCall","src":"5442:20:55"}],"functionName":{"name":"mstore","nativeSrc":"5416:6:55","nodeType":"YulIdentifier","src":"5416:6:55"},"nativeSrc":"5416:47:55","nodeType":"YulFunctionCall","src":"5416:47:55"},"nativeSrc":"5416:47:55","nodeType":"YulExpressionStatement","src":"5416:47:55"},{"nativeSrc":"5472:139:55","nodeType":"YulAssignment","src":"5472:139:55","value":{"arguments":[{"name":"tail","nativeSrc":"5606:4:55","nodeType":"YulIdentifier","src":"5606:4:55"}],"functionName":{"name":"abi_encode_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65_to_t_string_memory_ptr_fromStack","nativeSrc":"5480:124:55","nodeType":"YulIdentifier","src":"5480:124:55"},"nativeSrc":"5480:131:55","nodeType":"YulFunctionCall","src":"5480:131:55"},"variableNames":[{"name":"tail","nativeSrc":"5472:4:55","nodeType":"YulIdentifier","src":"5472:4:55"}]}]},"name":"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"5199:419:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5350:9:55","nodeType":"YulTypedName","src":"5350:9:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5365:4:55","nodeType":"YulTypedName","src":"5365:4:55","type":""}],"src":"5199:419:55"},{"body":{"nativeSrc":"5730:119:55","nodeType":"YulBlock","src":"5730:119:55","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"5752:6:55","nodeType":"YulIdentifier","src":"5752:6:55"},{"kind":"number","nativeSrc":"5760:1:55","nodeType":"YulLiteral","src":"5760:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"5748:3:55","nodeType":"YulIdentifier","src":"5748:3:55"},"nativeSrc":"5748:14:55","nodeType":"YulFunctionCall","src":"5748:14:55"},{"hexValue":"416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f","kind":"string","nativeSrc":"5764:34:55","nodeType":"YulLiteral","src":"5764:34:55","type":"","value":"Address: delegate call to non-co"}],"functionName":{"name":"mstore","nativeSrc":"5741:6:55","nodeType":"YulIdentifier","src":"5741:6:55"},"nativeSrc":"5741:58:55","nodeType":"YulFunctionCall","src":"5741:58:55"},"nativeSrc":"5741:58:55","nodeType":"YulExpressionStatement","src":"5741:58:55"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"5820:6:55","nodeType":"YulIdentifier","src":"5820:6:55"},{"kind":"number","nativeSrc":"5828:2:55","nodeType":"YulLiteral","src":"5828:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5816:3:55","nodeType":"YulIdentifier","src":"5816:3:55"},"nativeSrc":"5816:15:55","nodeType":"YulFunctionCall","src":"5816:15:55"},{"hexValue":"6e7472616374","kind":"string","nativeSrc":"5833:8:55","nodeType":"YulLiteral","src":"5833:8:55","type":"","value":"ntract"}],"functionName":{"name":"mstore","nativeSrc":"5809:6:55","nodeType":"YulIdentifier","src":"5809:6:55"},"nativeSrc":"5809:33:55","nodeType":"YulFunctionCall","src":"5809:33:55"},"nativeSrc":"5809:33:55","nodeType":"YulExpressionStatement","src":"5809:33:55"}]},"name":"store_literal_in_memory_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520","nativeSrc":"5624:225:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"5722:6:55","nodeType":"YulTypedName","src":"5722:6:55","type":""}],"src":"5624:225:55"},{"body":{"nativeSrc":"6001:220:55","nodeType":"YulBlock","src":"6001:220:55","statements":[{"nativeSrc":"6011:74:55","nodeType":"YulAssignment","src":"6011:74:55","value":{"arguments":[{"name":"pos","nativeSrc":"6077:3:55","nodeType":"YulIdentifier","src":"6077:3:55"},{"kind":"number","nativeSrc":"6082:2:55","nodeType":"YulLiteral","src":"6082:2:55","type":"","value":"38"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"6018:58:55","nodeType":"YulIdentifier","src":"6018:58:55"},"nativeSrc":"6018:67:55","nodeType":"YulFunctionCall","src":"6018:67:55"},"variableNames":[{"name":"pos","nativeSrc":"6011:3:55","nodeType":"YulIdentifier","src":"6011:3:55"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"6183:3:55","nodeType":"YulIdentifier","src":"6183:3:55"}],"functionName":{"name":"store_literal_in_memory_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520","nativeSrc":"6094:88:55","nodeType":"YulIdentifier","src":"6094:88:55"},"nativeSrc":"6094:93:55","nodeType":"YulFunctionCall","src":"6094:93:55"},"nativeSrc":"6094:93:55","nodeType":"YulExpressionStatement","src":"6094:93:55"},{"nativeSrc":"6196:19:55","nodeType":"YulAssignment","src":"6196:19:55","value":{"arguments":[{"name":"pos","nativeSrc":"6207:3:55","nodeType":"YulIdentifier","src":"6207:3:55"},{"kind":"number","nativeSrc":"6212:2:55","nodeType":"YulLiteral","src":"6212:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"6203:3:55","nodeType":"YulIdentifier","src":"6203:3:55"},"nativeSrc":"6203:12:55","nodeType":"YulFunctionCall","src":"6203:12:55"},"variableNames":[{"name":"end","nativeSrc":"6196:3:55","nodeType":"YulIdentifier","src":"6196:3:55"}]}]},"name":"abi_encode_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520_to_t_string_memory_ptr_fromStack","nativeSrc":"5855:366:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"5989:3:55","nodeType":"YulTypedName","src":"5989:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"5997:3:55","nodeType":"YulTypedName","src":"5997:3:55","type":""}],"src":"5855:366:55"},{"body":{"nativeSrc":"6398:248:55","nodeType":"YulBlock","src":"6398:248:55","statements":[{"nativeSrc":"6408:26:55","nodeType":"YulAssignment","src":"6408:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"6420:9:55","nodeType":"YulIdentifier","src":"6420:9:55"},{"kind":"number","nativeSrc":"6431:2:55","nodeType":"YulLiteral","src":"6431:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6416:3:55","nodeType":"YulIdentifier","src":"6416:3:55"},"nativeSrc":"6416:18:55","nodeType":"YulFunctionCall","src":"6416:18:55"},"variableNames":[{"name":"tail","nativeSrc":"6408:4:55","nodeType":"YulIdentifier","src":"6408:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6455:9:55","nodeType":"YulIdentifier","src":"6455:9:55"},{"kind":"number","nativeSrc":"6466:1:55","nodeType":"YulLiteral","src":"6466:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"6451:3:55","nodeType":"YulIdentifier","src":"6451:3:55"},"nativeSrc":"6451:17:55","nodeType":"YulFunctionCall","src":"6451:17:55"},{"arguments":[{"name":"tail","nativeSrc":"6474:4:55","nodeType":"YulIdentifier","src":"6474:4:55"},{"name":"headStart","nativeSrc":"6480:9:55","nodeType":"YulIdentifier","src":"6480:9:55"}],"functionName":{"name":"sub","nativeSrc":"6470:3:55","nodeType":"YulIdentifier","src":"6470:3:55"},"nativeSrc":"6470:20:55","nodeType":"YulFunctionCall","src":"6470:20:55"}],"functionName":{"name":"mstore","nativeSrc":"6444:6:55","nodeType":"YulIdentifier","src":"6444:6:55"},"nativeSrc":"6444:47:55","nodeType":"YulFunctionCall","src":"6444:47:55"},"nativeSrc":"6444:47:55","nodeType":"YulExpressionStatement","src":"6444:47:55"},{"nativeSrc":"6500:139:55","nodeType":"YulAssignment","src":"6500:139:55","value":{"arguments":[{"name":"tail","nativeSrc":"6634:4:55","nodeType":"YulIdentifier","src":"6634:4:55"}],"functionName":{"name":"abi_encode_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520_to_t_string_memory_ptr_fromStack","nativeSrc":"6508:124:55","nodeType":"YulIdentifier","src":"6508:124:55"},"nativeSrc":"6508:131:55","nodeType":"YulFunctionCall","src":"6508:131:55"},"variableNames":[{"name":"tail","nativeSrc":"6500:4:55","nodeType":"YulIdentifier","src":"6500:4:55"}]}]},"name":"abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"6227:419:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6378:9:55","nodeType":"YulTypedName","src":"6378:9:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"6393:4:55","nodeType":"YulTypedName","src":"6393:4:55","type":""}],"src":"6227:419:55"},{"body":{"nativeSrc":"6710:40:55","nodeType":"YulBlock","src":"6710:40:55","statements":[{"nativeSrc":"6721:22:55","nodeType":"YulAssignment","src":"6721:22:55","value":{"arguments":[{"name":"value","nativeSrc":"6737:5:55","nodeType":"YulIdentifier","src":"6737:5:55"}],"functionName":{"name":"mload","nativeSrc":"6731:5:55","nodeType":"YulIdentifier","src":"6731:5:55"},"nativeSrc":"6731:12:55","nodeType":"YulFunctionCall","src":"6731:12:55"},"variableNames":[{"name":"length","nativeSrc":"6721:6:55","nodeType":"YulIdentifier","src":"6721:6:55"}]}]},"name":"array_length_t_bytes_memory_ptr","nativeSrc":"6652:98:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"6693:5:55","nodeType":"YulTypedName","src":"6693:5:55","type":""}],"returnVariables":[{"name":"length","nativeSrc":"6703:6:55","nodeType":"YulTypedName","src":"6703:6:55","type":""}],"src":"6652:98:55"},{"body":{"nativeSrc":"6869:34:55","nodeType":"YulBlock","src":"6869:34:55","statements":[{"nativeSrc":"6879:18:55","nodeType":"YulAssignment","src":"6879:18:55","value":{"name":"pos","nativeSrc":"6894:3:55","nodeType":"YulIdentifier","src":"6894:3:55"},"variableNames":[{"name":"updated_pos","nativeSrc":"6879:11:55","nodeType":"YulIdentifier","src":"6879:11:55"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"6756:147:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"6841:3:55","nodeType":"YulTypedName","src":"6841:3:55","type":""},{"name":"length","nativeSrc":"6846:6:55","nodeType":"YulTypedName","src":"6846:6:55","type":""}],"returnVariables":[{"name":"updated_pos","nativeSrc":"6857:11:55","nodeType":"YulTypedName","src":"6857:11:55","type":""}],"src":"6756:147:55"},{"body":{"nativeSrc":"7017:278:55","nodeType":"YulBlock","src":"7017:278:55","statements":[{"nativeSrc":"7027:52:55","nodeType":"YulVariableDeclaration","src":"7027:52:55","value":{"arguments":[{"name":"value","nativeSrc":"7073:5:55","nodeType":"YulIdentifier","src":"7073:5:55"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nativeSrc":"7041:31:55","nodeType":"YulIdentifier","src":"7041:31:55"},"nativeSrc":"7041:38:55","nodeType":"YulFunctionCall","src":"7041:38:55"},"variables":[{"name":"length","nativeSrc":"7031:6:55","nodeType":"YulTypedName","src":"7031:6:55","type":""}]},{"nativeSrc":"7088:95:55","nodeType":"YulAssignment","src":"7088:95:55","value":{"arguments":[{"name":"pos","nativeSrc":"7171:3:55","nodeType":"YulIdentifier","src":"7171:3:55"},{"name":"length","nativeSrc":"7176:6:55","nodeType":"YulIdentifier","src":"7176:6:55"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"7095:75:55","nodeType":"YulIdentifier","src":"7095:75:55"},"nativeSrc":"7095:88:55","nodeType":"YulFunctionCall","src":"7095:88:55"},"variableNames":[{"name":"pos","nativeSrc":"7088:3:55","nodeType":"YulIdentifier","src":"7088:3:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"7231:5:55","nodeType":"YulIdentifier","src":"7231:5:55"},{"kind":"number","nativeSrc":"7238:4:55","nodeType":"YulLiteral","src":"7238:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"7227:3:55","nodeType":"YulIdentifier","src":"7227:3:55"},"nativeSrc":"7227:16:55","nodeType":"YulFunctionCall","src":"7227:16:55"},{"name":"pos","nativeSrc":"7245:3:55","nodeType":"YulIdentifier","src":"7245:3:55"},{"name":"length","nativeSrc":"7250:6:55","nodeType":"YulIdentifier","src":"7250:6:55"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"7192:34:55","nodeType":"YulIdentifier","src":"7192:34:55"},"nativeSrc":"7192:65:55","nodeType":"YulFunctionCall","src":"7192:65:55"},"nativeSrc":"7192:65:55","nodeType":"YulExpressionStatement","src":"7192:65:55"},{"nativeSrc":"7266:23:55","nodeType":"YulAssignment","src":"7266:23:55","value":{"arguments":[{"name":"pos","nativeSrc":"7277:3:55","nodeType":"YulIdentifier","src":"7277:3:55"},{"name":"length","nativeSrc":"7282:6:55","nodeType":"YulIdentifier","src":"7282:6:55"}],"functionName":{"name":"add","nativeSrc":"7273:3:55","nodeType":"YulIdentifier","src":"7273:3:55"},"nativeSrc":"7273:16:55","nodeType":"YulFunctionCall","src":"7273:16:55"},"variableNames":[{"name":"end","nativeSrc":"7266:3:55","nodeType":"YulIdentifier","src":"7266:3:55"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"6909:386:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"6998:5:55","nodeType":"YulTypedName","src":"6998:5:55","type":""},{"name":"pos","nativeSrc":"7005:3:55","nodeType":"YulTypedName","src":"7005:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"7013:3:55","nodeType":"YulTypedName","src":"7013:3:55","type":""}],"src":"6909:386:55"},{"body":{"nativeSrc":"7435:137:55","nodeType":"YulBlock","src":"7435:137:55","statements":[{"nativeSrc":"7446:100:55","nodeType":"YulAssignment","src":"7446:100:55","value":{"arguments":[{"name":"value0","nativeSrc":"7533:6:55","nodeType":"YulIdentifier","src":"7533:6:55"},{"name":"pos","nativeSrc":"7542:3:55","nodeType":"YulIdentifier","src":"7542:3:55"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"7453:79:55","nodeType":"YulIdentifier","src":"7453:79:55"},"nativeSrc":"7453:93:55","nodeType":"YulFunctionCall","src":"7453:93:55"},"variableNames":[{"name":"pos","nativeSrc":"7446:3:55","nodeType":"YulIdentifier","src":"7446:3:55"}]},{"nativeSrc":"7556:10:55","nodeType":"YulAssignment","src":"7556:10:55","value":{"name":"pos","nativeSrc":"7563:3:55","nodeType":"YulIdentifier","src":"7563:3:55"},"variableNames":[{"name":"end","nativeSrc":"7556:3:55","nodeType":"YulIdentifier","src":"7556:3:55"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"7301:271:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"7414:3:55","nodeType":"YulTypedName","src":"7414:3:55","type":""},{"name":"value0","nativeSrc":"7420:6:55","nodeType":"YulTypedName","src":"7420:6:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"7431:3:55","nodeType":"YulTypedName","src":"7431:3:55","type":""}],"src":"7301:271:55"},{"body":{"nativeSrc":"7637:40:55","nodeType":"YulBlock","src":"7637:40:55","statements":[{"nativeSrc":"7648:22:55","nodeType":"YulAssignment","src":"7648:22:55","value":{"arguments":[{"name":"value","nativeSrc":"7664:5:55","nodeType":"YulIdentifier","src":"7664:5:55"}],"functionName":{"name":"mload","nativeSrc":"7658:5:55","nodeType":"YulIdentifier","src":"7658:5:55"},"nativeSrc":"7658:12:55","nodeType":"YulFunctionCall","src":"7658:12:55"},"variableNames":[{"name":"length","nativeSrc":"7648:6:55","nodeType":"YulIdentifier","src":"7648:6:55"}]}]},"name":"array_length_t_string_memory_ptr","nativeSrc":"7578:99:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"7620:5:55","nodeType":"YulTypedName","src":"7620:5:55","type":""}],"returnVariables":[{"name":"length","nativeSrc":"7630:6:55","nodeType":"YulTypedName","src":"7630:6:55","type":""}],"src":"7578:99:55"},{"body":{"nativeSrc":"7775:285:55","nodeType":"YulBlock","src":"7775:285:55","statements":[{"nativeSrc":"7785:53:55","nodeType":"YulVariableDeclaration","src":"7785:53:55","value":{"arguments":[{"name":"value","nativeSrc":"7832:5:55","nodeType":"YulIdentifier","src":"7832:5:55"}],"functionName":{"name":"array_length_t_string_memory_ptr","nativeSrc":"7799:32:55","nodeType":"YulIdentifier","src":"7799:32:55"},"nativeSrc":"7799:39:55","nodeType":"YulFunctionCall","src":"7799:39:55"},"variables":[{"name":"length","nativeSrc":"7789:6:55","nodeType":"YulTypedName","src":"7789:6:55","type":""}]},{"nativeSrc":"7847:78:55","nodeType":"YulAssignment","src":"7847:78:55","value":{"arguments":[{"name":"pos","nativeSrc":"7913:3:55","nodeType":"YulIdentifier","src":"7913:3:55"},{"name":"length","nativeSrc":"7918:6:55","nodeType":"YulIdentifier","src":"7918:6:55"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"7854:58:55","nodeType":"YulIdentifier","src":"7854:58:55"},"nativeSrc":"7854:71:55","nodeType":"YulFunctionCall","src":"7854:71:55"},"variableNames":[{"name":"pos","nativeSrc":"7847:3:55","nodeType":"YulIdentifier","src":"7847:3:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"7973:5:55","nodeType":"YulIdentifier","src":"7973:5:55"},{"kind":"number","nativeSrc":"7980:4:55","nodeType":"YulLiteral","src":"7980:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"7969:3:55","nodeType":"YulIdentifier","src":"7969:3:55"},"nativeSrc":"7969:16:55","nodeType":"YulFunctionCall","src":"7969:16:55"},{"name":"pos","nativeSrc":"7987:3:55","nodeType":"YulIdentifier","src":"7987:3:55"},{"name":"length","nativeSrc":"7992:6:55","nodeType":"YulIdentifier","src":"7992:6:55"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"7934:34:55","nodeType":"YulIdentifier","src":"7934:34:55"},"nativeSrc":"7934:65:55","nodeType":"YulFunctionCall","src":"7934:65:55"},"nativeSrc":"7934:65:55","nodeType":"YulExpressionStatement","src":"7934:65:55"},{"nativeSrc":"8008:46:55","nodeType":"YulAssignment","src":"8008:46:55","value":{"arguments":[{"name":"pos","nativeSrc":"8019:3:55","nodeType":"YulIdentifier","src":"8019:3:55"},{"arguments":[{"name":"length","nativeSrc":"8046:6:55","nodeType":"YulIdentifier","src":"8046:6:55"}],"functionName":{"name":"round_up_to_mul_of_32","nativeSrc":"8024:21:55","nodeType":"YulIdentifier","src":"8024:21:55"},"nativeSrc":"8024:29:55","nodeType":"YulFunctionCall","src":"8024:29:55"}],"functionName":{"name":"add","nativeSrc":"8015:3:55","nodeType":"YulIdentifier","src":"8015:3:55"},"nativeSrc":"8015:39:55","nodeType":"YulFunctionCall","src":"8015:39:55"},"variableNames":[{"name":"end","nativeSrc":"8008:3:55","nodeType":"YulIdentifier","src":"8008:3:55"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nativeSrc":"7683:377:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"7756:5:55","nodeType":"YulTypedName","src":"7756:5:55","type":""},{"name":"pos","nativeSrc":"7763:3:55","nodeType":"YulTypedName","src":"7763:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"7771:3:55","nodeType":"YulTypedName","src":"7771:3:55","type":""}],"src":"7683:377:55"},{"body":{"nativeSrc":"8184:195:55","nodeType":"YulBlock","src":"8184:195:55","statements":[{"nativeSrc":"8194:26:55","nodeType":"YulAssignment","src":"8194:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"8206:9:55","nodeType":"YulIdentifier","src":"8206:9:55"},{"kind":"number","nativeSrc":"8217:2:55","nodeType":"YulLiteral","src":"8217:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8202:3:55","nodeType":"YulIdentifier","src":"8202:3:55"},"nativeSrc":"8202:18:55","nodeType":"YulFunctionCall","src":"8202:18:55"},"variableNames":[{"name":"tail","nativeSrc":"8194:4:55","nodeType":"YulIdentifier","src":"8194:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8241:9:55","nodeType":"YulIdentifier","src":"8241:9:55"},{"kind":"number","nativeSrc":"8252:1:55","nodeType":"YulLiteral","src":"8252:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"8237:3:55","nodeType":"YulIdentifier","src":"8237:3:55"},"nativeSrc":"8237:17:55","nodeType":"YulFunctionCall","src":"8237:17:55"},{"arguments":[{"name":"tail","nativeSrc":"8260:4:55","nodeType":"YulIdentifier","src":"8260:4:55"},{"name":"headStart","nativeSrc":"8266:9:55","nodeType":"YulIdentifier","src":"8266:9:55"}],"functionName":{"name":"sub","nativeSrc":"8256:3:55","nodeType":"YulIdentifier","src":"8256:3:55"},"nativeSrc":"8256:20:55","nodeType":"YulFunctionCall","src":"8256:20:55"}],"functionName":{"name":"mstore","nativeSrc":"8230:6:55","nodeType":"YulIdentifier","src":"8230:6:55"},"nativeSrc":"8230:47:55","nodeType":"YulFunctionCall","src":"8230:47:55"},"nativeSrc":"8230:47:55","nodeType":"YulExpressionStatement","src":"8230:47:55"},{"nativeSrc":"8286:86:55","nodeType":"YulAssignment","src":"8286:86:55","value":{"arguments":[{"name":"value0","nativeSrc":"8358:6:55","nodeType":"YulIdentifier","src":"8358:6:55"},{"name":"tail","nativeSrc":"8367:4:55","nodeType":"YulIdentifier","src":"8367:4:55"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nativeSrc":"8294:63:55","nodeType":"YulIdentifier","src":"8294:63:55"},"nativeSrc":"8294:78:55","nodeType":"YulFunctionCall","src":"8294:78:55"},"variableNames":[{"name":"tail","nativeSrc":"8286:4:55","nodeType":"YulIdentifier","src":"8286:4:55"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"8066:313:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8156:9:55","nodeType":"YulTypedName","src":"8156:9:55","type":""},{"name":"value0","nativeSrc":"8168:6:55","nodeType":"YulTypedName","src":"8168:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8179:4:55","nodeType":"YulTypedName","src":"8179:4:55","type":""}],"src":"8066:313:55"}]},"contents":"{\n\n    function allocate_unbounded() -> memPtr {\n        memPtr := mload(64)\n    }\n\n    function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n        revert(0, 0)\n    }\n\n    function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n        revert(0, 0)\n    }\n\n    function cleanup_t_uint160(value) -> cleaned {\n        cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n    }\n\n    function cleanup_t_address(value) -> cleaned {\n        cleaned := cleanup_t_uint160(value)\n    }\n\n    function validator_revert_t_address(value) {\n        if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n    }\n\n    function abi_decode_t_address_fromMemory(offset, end) -> value {\n        value := mload(offset)\n        validator_revert_t_address(value)\n    }\n\n    function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n        revert(0, 0)\n    }\n\n    function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n        revert(0, 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 panic_error_0x41() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n\n    function finalize_allocation(memPtr, size) {\n        let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n        // protect against overflow\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n\n    function allocate_memory(size) -> memPtr {\n        memPtr := allocate_unbounded()\n        finalize_allocation(memPtr, size)\n    }\n\n    function array_allocation_size_t_bytes_memory_ptr(length) -> size {\n        // Make sure we can allocate memory without overflow\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n        size := round_up_to_mul_of_32(length)\n\n        // add length slot\n        size := add(size, 0x20)\n\n    }\n\n    function copy_memory_to_memory_with_cleanup(src, dst, length) {\n\n        mcopy(dst, src, length)\n        mstore(add(dst, length), 0)\n\n    }\n\n    function abi_decode_available_length_t_bytes_memory_ptr_fromMemory(src, length, end) -> array {\n        array := allocate_memory(array_allocation_size_t_bytes_memory_ptr(length))\n        mstore(array, length)\n        let dst := add(array, 0x20)\n        if gt(add(src, length), end) { revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n        copy_memory_to_memory_with_cleanup(src, dst, length)\n    }\n\n    // bytes\n    function abi_decode_t_bytes_memory_ptr_fromMemory(offset, end) -> array {\n        if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n        let length := mload(offset)\n        array := abi_decode_available_length_t_bytes_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n    }\n\n    function abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory(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_fromMemory(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := mload(add(headStart, 32))\n            if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n            value1 := abi_decode_t_bytes_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function cleanup_t_uint256(value) -> cleaned {\n        cleaned := value\n    }\n\n    function panic_error_0x11() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\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_0x01() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x01)\n        revert(0, 0x24)\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 store_literal_in_memory_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65(memPtr) {\n\n        mstore(add(memPtr, 0), \"ERC1967: new implementation is n\")\n\n        mstore(add(memPtr, 32), \"ot a contract\")\n\n    }\n\n    function abi_encode_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 45)\n        store_literal_in_memory_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__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_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520(memPtr) {\n\n        mstore(add(memPtr, 0), \"Address: delegate call to non-co\")\n\n        mstore(add(memPtr, 32), \"ntract\")\n\n    }\n\n    function abi_encode_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 38)\n        store_literal_in_memory_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__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_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function array_length_t_bytes_memory_ptr(value) -> length {\n\n        length := mload(value)\n\n    }\n\n    function array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n        updated_pos := pos\n    }\n\n    function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n        let length := array_length_t_bytes_memory_ptr(value)\n        pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n        copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n        end := add(pos, length)\n    }\n\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value0) -> end {\n\n        pos := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value0,  pos)\n\n        end := pos\n    }\n\n    function array_length_t_string_memory_ptr(value) -> length {\n\n        length := mload(value)\n\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}\n","id":55,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040526040516106163803806106168339810160408190526100229161036f565b61004d60017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd6103d6565b5f5160206105cf5f395f51905f5214610068576100686103e9565b61007382825f61007a565b5050610519565b610083836100a5565b5f8251118061008f5750805b156100a05761009e83836100e4565b505b505050565b6100ae81610112565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061010983836040518060600160405280602781526020016105ef60279139610170565b90505b92915050565b6001600160a01b0381163b6101425760405162461bcd60e51b815260040161013990610449565b60405180910390fd5b5f5160206105cf5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60606001600160a01b0384163b6101995760405162461bcd60e51b81526004016101399061049b565b5f5f856001600160a01b0316856040516101b391906104cc565b5f60405180830381855af49150503d805f81146101eb576040519150601f19603f3d011682016040523d82523d5f602084013e6101f0565b606091505b50909250905061020182828661020d565b925050505b9392505050565b6060831561021c575081610206565b82511561022c5782518084602001fd5b8160405162461bcd60e51b81526004016101399190610508565b5f6001600160a01b03821661010c565b61025f81610246565b8114610269575f5ffd5b50565b805161010c81610256565b634e487b7160e01b5f52604160045260245ffd5b601f19601f83011681018181106001600160401b03821117156102b0576102b0610277565b6040525050565b5f6102c160405190565b90506102cd828261028b565b919050565b5f6001600160401b038211156102ea576102ea610277565b601f19601f83011660200192915050565b8281835e505f910152565b5f610318610313846102d2565b6102b7565b905082815260208101848484011115610332576103325f5ffd5b61033d8482856102fb565b509392505050565b5f82601f830112610357576103575f5ffd5b8151610367848260208601610306565b949350505050565b5f5f60408385031215610383576103835f5ffd5b5f61038e858561026c565b92505060208301516001600160401b038111156103ac576103ac5f5ffd5b6103b885828601610345565b9150509250929050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561010c5761010c6103c2565b634e487b7160e01b5f52600160045260245ffd5b602d81525f602082017f455243313936373a206e657720696d706c656d656e746174696f6e206973206e81526c1bdd08184818dbdb9d1c9858dd609a1b602082015291505b5060400190565b6020808252810161010c816103fd565b602681525f602082017f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f8152651b9d1c9858dd60d21b60208201529150610442565b6020808252810161010c81610459565b5f6104b4825190565b6104c28185602086016102fb565b9290920192915050565b5f61020682846104ab565b5f6104e0825190565b8084526020840193506104f78185602086016102fb565b601f01601f19169290920192915050565b6020808252810161010981846104d7565b60aa806105255f395ff3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea2646970667358221220bb6a6c7c7e512e453889313ee68e391c6840a7cfe31a0a84a6da2219734c186364736f6c634300081c0033360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x616 CODESIZE SUB DUP1 PUSH2 0x616 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x36F JUMP JUMPDEST PUSH2 0x4D PUSH1 0x1 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBD PUSH2 0x3D6 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x5CF PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE EQ PUSH2 0x68 JUMPI PUSH2 0x68 PUSH2 0x3E9 JUMP JUMPDEST PUSH2 0x73 DUP3 DUP3 PUSH0 PUSH2 0x7A JUMP JUMPDEST POP POP PUSH2 0x519 JUMP JUMPDEST PUSH2 0x83 DUP4 PUSH2 0xA5 JUMP JUMPDEST PUSH0 DUP3 MLOAD GT DUP1 PUSH2 0x8F JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0xA0 JUMPI PUSH2 0x9E DUP4 DUP4 PUSH2 0xE4 JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0xAE DUP2 PUSH2 0x112 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x109 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5EF PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x170 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0x142 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x139 SWAP1 PUSH2 0x449 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x5CF PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x199 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x139 SWAP1 PUSH2 0x49B JUMP JUMPDEST PUSH0 PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x1B3 SWAP2 SWAP1 PUSH2 0x4CC JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x1EB JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1F0 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x201 DUP3 DUP3 DUP7 PUSH2 0x20D JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x21C JUMPI POP DUP2 PUSH2 0x206 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x22C JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x139 SWAP2 SWAP1 PUSH2 0x508 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x10C JUMP JUMPDEST PUSH2 0x25F DUP2 PUSH2 0x246 JUMP JUMPDEST DUP2 EQ PUSH2 0x269 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x10C DUP2 PUSH2 0x256 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP2 ADD DUP2 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR ISZERO PUSH2 0x2B0 JUMPI PUSH2 0x2B0 PUSH2 0x277 JUMP JUMPDEST PUSH1 0x40 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH2 0x2C1 PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST SWAP1 POP PUSH2 0x2CD DUP3 DUP3 PUSH2 0x28B JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x2EA JUMPI PUSH2 0x2EA PUSH2 0x277 JUMP JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP2 DUP4 MCOPY POP PUSH0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH0 PUSH2 0x318 PUSH2 0x313 DUP5 PUSH2 0x2D2 JUMP JUMPDEST PUSH2 0x2B7 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x332 JUMPI PUSH2 0x332 PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x33D DUP5 DUP3 DUP6 PUSH2 0x2FB JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x357 JUMPI PUSH2 0x357 PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x367 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x306 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x383 JUMPI PUSH2 0x383 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x38E DUP6 DUP6 PUSH2 0x26C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3AC JUMPI PUSH2 0x3AC PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x3B8 DUP6 DUP3 DUP7 ADD PUSH2 0x345 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x10C JUMPI PUSH2 0x10C PUSH2 0x3C2 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x2D DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E DUP2 MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP2 POP JUMPDEST POP PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10C DUP2 PUSH2 0x3FD JUMP JUMPDEST PUSH1 0x26 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F DUP2 MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP2 POP PUSH2 0x442 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x10C DUP2 PUSH2 0x459 JUMP JUMPDEST PUSH0 PUSH2 0x4B4 DUP3 MLOAD SWAP1 JUMP JUMPDEST PUSH2 0x4C2 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2FB JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x206 DUP3 DUP5 PUSH2 0x4AB JUMP JUMPDEST PUSH0 PUSH2 0x4E0 DUP3 MLOAD SWAP1 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH2 0x4F7 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2FB JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x109 DUP2 DUP5 PUSH2 0x4D7 JUMP JUMPDEST PUSH1 0xAA DUP1 PUSH2 0x525 PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH1 0x10 JUMPI PUSH1 0xE PUSH1 0x13 JUMP JUMPDEST STOP JUMPDEST PUSH1 0xE JUMPDEST PUSH1 0x1F PUSH1 0x1B PUSH1 0x21 JUMP JUMPDEST PUSH1 0x57 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH1 0x52 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH0 PUSH0 CALLDATACOPY PUSH0 PUSH0 CALLDATASIZE PUSH0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH1 0x70 JUMPI RETURNDATASIZE PUSH0 RETURN JUMPDEST RETURNDATASIZE PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBB PUSH11 0x6C7C7E512E453889313EE6 DUP15 CODECOPY SHR PUSH9 0x40A7CFE31A0A84A6DA 0x22 NOT PUSH20 0x4C186364736F6C634300081C0033360894A13BA1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x65640000000000000000000000 ","sourceMap":"552:830:45:-:0;;;945:217;;;;;;;;;;;;;;;;;;:::i;:::-;1050:54;1103:1;1058:41;1050:54;:::i;:::-;-1:-1:-1;;;;;;;;;;;1018:87:45;1011:95;;;;:::i;:::-;1116:39;1134:6;1142:5;1149;1116:17;:39::i;:::-;945:217;;552:830;;2188:295:46;2326:29;2337:17;2326:10;:29::i;:::-;2383:1;2369:4;:11;:15;:28;;;;2388:9;2369:28;2365:112;;;2413:53;2442:17;2461:4;2413:28;:53::i;:::-;;2365:112;2188:295;;;:::o;1902:152::-;1968:37;1987:17;1968:18;:37::i;:::-;2020:27;;-1:-1:-1;;;;;2020:27:46;;;;;;;;1902:152;:::o;6575:198:51:-;6658:12;6689:77;6710:6;6718:4;6689:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6682:84;;6575:198;;;;;:::o;1537:259:46:-;-1:-1:-1;;;;;1470:19:51;;;1610:95:46;;;;-1:-1:-1;;;1610:95:46;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;;;;;;;1715:74:46;;-1:-1:-1;;;;;;1715:74:46;-1:-1:-1;;;;;1715:74:46;;;;;;;;;;1537:259::o;6959:387:51:-;7100:12;-1:-1:-1;;;;;1470:19:51;;;7124:69;;;;-1:-1:-1;;;7124:69:51;;;;;;;:::i;:::-;7205:12;7219:23;7246:6;-1:-1:-1;;;;;7246:19:51;7266:4;7246:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7204:67:51;;-1:-1:-1;7204:67:51;-1:-1:-1;7288:51:51;7204:67;;7326:12;7288:16;:51::i;:::-;7281:58;;;;6959:387;;;;;;:::o;7566:692::-;7712:12;7740:7;7736:516;;;-1:-1:-1;7770:10:51;7763:17;;7736:516;7881:17;;:21;7877:365;;8075:10;8069:17;8135:15;8122:10;8118:2;8114:19;8107:44;7877:365;8214:12;8207:20;;-1:-1:-1;;;8207:20:51;;;;;;;;:::i;466:96:55:-;503:7;-1:-1:-1;;;;;400:54:55;;532:24;334:126;568:122;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:143::-;778:13;;800:33;778:13;800:33;:::i;1199:180::-;-1:-1:-1;;;1244:1:55;1237:88;1344:4;1341:1;1334:15;1368:4;1365:1;1358:15;1385:281;-1:-1:-1;;1183:2:55;1163:14;;1159:28;1460:6;1456:40;1598:6;1586:10;1583:22;-1:-1:-1;;;;;1550:10:55;1547:34;1544:62;1541:88;;;1609:18;;:::i;:::-;1645:2;1638:22;-1:-1:-1;;1385:281:55:o;1672:129::-;1706:6;1733:20;73:2;67:9;;7:75;1733:20;1723:30;;1762:33;1790:4;1782:6;1762:33;:::i;:::-;1672:129;;;:::o;1807:307::-;1868:4;-1:-1:-1;;;;;1950:6:55;1947:30;1944:56;;;1980:18;;:::i;:::-;-1:-1:-1;;1183:2:55;1163:14;;1159:28;2102:4;2092:15;;1807:307;-1:-1:-1;;1807:307:55:o;2120:139::-;2209:6;2204:3;2199;2193:23;-1:-1:-1;2250:1:55;2232:16;;2225:27;2120:139::o;2265:432::-;2353:5;2378:65;2394:48;2435:6;2394:48;:::i;:::-;2378:65;:::i;:::-;2369:74;;2466:6;2459:5;2452:21;2504:4;2497:5;2493:16;2542:3;2533:6;2528:3;2524:16;2521:25;2518:112;;;2549:79;1077:1;1074;1067:12;2549:79;2639:52;2684:6;2679:3;2674;2639:52;:::i;:::-;2359:338;2265:432;;;;;:::o;2716:353::-;2782:5;2831:3;2824:4;2816:6;2812:17;2808:27;2798:122;;2839:79;954:1;951;944:12;2839:79;2949:6;2943:13;2974:89;3059:3;3051:6;3044:4;3036:6;3032:17;2974:89;:::i;:::-;2965:98;2716:353;-1:-1:-1;;;;2716:353:55:o;3075:678::-;3163:6;3171;3220:2;3208:9;3199:7;3195:23;3191:32;3188:119;;;3226:79;197:1;194;187:12;3226:79;3346:1;3371:64;3427:7;3407:9;3371:64;:::i;:::-;3361:74;;3317:128;3505:2;3494:9;3490:18;3484:25;-1:-1:-1;;;;;3528:6:55;3525:30;3522:117;;;3558:79;320:1;317;310:12;3558:79;3663:73;3728:7;3719:6;3708:9;3704:22;3663:73;:::i;:::-;3653:83;;3455:291;3075:678;;;;;:::o;3842:180::-;-1:-1:-1;;;3887:1:55;3880:88;3987:4;3984:1;3977:15;4011:4;4008:1;4001:15;4028:194;4159:9;;;4181:11;;;4178:37;;;4195:18;;:::i;4228:180::-;-1:-1:-1;;;4273:1:55;4266:88;4373:4;4370:1;4363:15;4397:4;4394:1;4387:15;4827:366;5054:2;4520:19;;4969:3;4572:4;4563:14;;4729:34;4706:58;;-1:-1:-1;;;4793:2:55;4781:15;;4774:40;4983:74;-1:-1:-1;5066:93:55;-1:-1:-1;5184:2:55;5175:12;;4827:366::o;5199:419::-;5403:2;5416:47;;;5388:18;;5480:131;5388:18;5480:131;:::i;5855:366::-;6082:2;4520:19;;5997:3;4572:4;4563:14;;5764:34;5741:58;;-1:-1:-1;;;5828:2:55;5816:15;;5809:33;6011:74;-1:-1:-1;6094:93:55;5624:225;6227:419;6431:2;6444:47;;;6416:18;;6508:131;6416:18;6508:131;:::i;6909:386::-;7013:3;7041:38;7073:5;6731:12;;6652:98;7041:38;7192:65;7250:6;7245:3;7238:4;7231:5;7227:16;7192:65;:::i;:::-;7273:16;;;;;6909:386;-1:-1:-1;;6909:386:55:o;7301:271::-;7431:3;7453:93;7542:3;7533:6;7453:93;:::i;7683:377::-;7771:3;7799:39;7832:5;6731:12;;6652:98;7799:39;4520:19;;;4572:4;4563:14;;7847:78;;7934:65;7992:6;7987:3;7980:4;7973:5;7969:16;7934:65;:::i;:::-;1183:2;1163:14;-1:-1:-1;;1159:28:55;8015:39;;;;;;-1:-1:-1;;7683:377:55:o;8066:313::-;8217:2;8230:47;;;8202:18;;8294:78;8202:18;8358:6;8294:78;:::i;8066:313::-;552:830:45;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_8853":{"entryPoint":null,"id":8853,"parameterSlots":0,"returnSlots":0},"@_8861":{"entryPoint":null,"id":8861,"parameterSlots":0,"returnSlots":0},"@_beforeFallback_8866":{"entryPoint":null,"id":8866,"parameterSlots":0,"returnSlots":0},"@_delegate_8826":{"entryPoint":87,"id":8826,"parameterSlots":1,"returnSlots":0},"@_fallback_8845":{"entryPoint":19,"id":8845,"parameterSlots":0,"returnSlots":0},"@_getImplementation_8529":{"entryPoint":null,"id":8529,"parameterSlots":0,"returnSlots":1},"@_implementation_8496":{"entryPoint":33,"id":8496,"parameterSlots":0,"returnSlots":1},"@getAddressSlot_9529":{"entryPoint":null,"id":9529,"parameterSlots":1,"returnSlots":1}},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea2646970667358221220bb6a6c7c7e512e453889313ee68e391c6840a7cfe31a0a84a6da2219734c186364736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH1 0x10 JUMPI PUSH1 0xE PUSH1 0x13 JUMP JUMPDEST STOP JUMPDEST PUSH1 0xE JUMPDEST PUSH1 0x1F PUSH1 0x1B PUSH1 0x21 JUMP JUMPDEST PUSH1 0x57 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH1 0x52 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH0 PUSH0 CALLDATACOPY PUSH0 PUSH0 CALLDATASIZE PUSH0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH1 0x70 JUMPI RETURNDATASIZE PUSH0 RETURN JUMPDEST RETURNDATASIZE PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBB PUSH11 0x6C7C7E512E453889313EE6 DUP15 CODECOPY SHR PUSH9 0x40A7CFE31A0A84A6DA 0x22 NOT PUSH20 0x4C186364736F6C634300081C0033000000000000 ","sourceMap":"552:830:45:-:0;;;;;;2903:11:47;:9;:11::i;:::-;552:830:45;;2680:11:47;2327:110;2402:28;2412:17;:15;:17::i;:::-;2402:9;:28::i;:::-;2327:110::o;1240:140:45:-;1307:12;1338:35;1035:66:46;1385:54;-1:-1:-1;;;;;1385:54:46;;1306:140;1338:35:45;1331:42;;1240:140;:::o;953:895:47:-;1291:14;1288:1;1285;1272:34;1505:1;1502;1486:14;1483:1;1467:14;1460:5;1447:60;1581:16;1578:1;1575;1560:38;1619:6;1686:66;;;;1801:16;1798:1;1791:27;1686:66;1721:16;1718:1;1711:27"},"gasEstimates":{"creation":{"codeDepositCost":"34000","executionCost":"infinite","totalCost":"infinite"},"external":{"":"infinite"},"internal":{"_implementation()":"2155"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is upgraded.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the upgradeable proxy with an initial implementation specified by `_logic`. If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded function call, and allows initializating the storage of the proxy like a Solidity constructor.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\":\"ERC1967Proxy\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"hardhat-deploy/solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n    /**\\n     * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n     *\\n     * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n     * function call, and allows initializating the storage of the proxy like a Solidity constructor.\\n     */\\n    constructor(address _logic, bytes memory _data) payable {\\n        assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\\\"eip1967.proxy.implementation\\\")) - 1));\\n        _upgradeToAndCall(_logic, _data, false);\\n    }\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function _implementation() internal view virtual override returns (address impl) {\\n        return ERC1967Upgrade._getImplementation();\\n    }\\n}\\n\",\"keccak256\":\"0x6309f9f39dc6f4f45a24f296543867aa358e32946cd6b2874627a996d606b3a0\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n    // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n    bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function _getImplementation() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n        StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeTo(address newImplementation) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCall(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _upgradeTo(newImplementation);\\n        if (data.length > 0 || forceCall) {\\n            Address.functionDelegateCall(newImplementation, data);\\n        }\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        // Upgrades from old implementations will perform a rollback test. This test requires the new\\n        // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n        // this special case will break upgrade paths from old UUPS implementation to new ones.\\n        if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n            _setImplementation(newImplementation);\\n        } else {\\n            try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n                require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n            } catch {\\n                revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n            }\\n            _upgradeToAndCall(newImplementation, data, forceCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Returns the current admin.\\n     */\\n    function _getAdmin() internal view virtual returns (address) {\\n        return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n        StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {AdminChanged} event.\\n     */\\n    function _changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(_getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n     */\\n    bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Emitted when the beacon is upgraded.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function _getBeacon() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n        require(Address.isContract(IBeacon(newBeacon).implementation()), \\\"ERC1967: beacon implementation is not a contract\\\");\\n        StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n    }\\n\\n    /**\\n     * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n     * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n     *\\n     * Emits a {BeaconUpgraded} event.\\n     */\\n    function _upgradeBeaconToAndCall(\\n        address newBeacon,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n        if (data.length > 0 || forceCall) {\\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x17668652127feebed0ce8d9431ef95ccc8c4292f03e3b8cf06c6ca16af396633\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n    /**\\n     * @dev Delegates the current call to `implementation`.\\n     *\\n     * This function does not return to its internal call site, it will return directly to the external caller.\\n     */\\n    function _delegate(address implementation) internal virtual {\\n        assembly {\\n            // Copy msg.data. We take full control of memory in this inline assembly\\n            // block because it will not return to Solidity code. We overwrite the\\n            // Solidity scratch pad at memory position 0.\\n            calldatacopy(0, 0, calldatasize())\\n\\n            // Call the implementation.\\n            // out and outsize are 0 because we don't know the size yet.\\n            let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n            // Copy the returned data.\\n            returndatacopy(0, 0, returndatasize())\\n\\n            switch result\\n            // delegatecall returns 0 on error.\\n            case 0 {\\n                revert(0, returndatasize())\\n            }\\n            default {\\n                return(0, returndatasize())\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\\n     * and {_fallback} should delegate.\\n     */\\n    function _implementation() internal view virtual returns (address);\\n\\n    /**\\n     * @dev Delegates the current call to the address returned by `_implementation()`.\\n     *\\n     * This function does not return to its internall call site, it will return directly to the external caller.\\n     */\\n    function _fallback() internal virtual {\\n        _beforeFallback();\\n        _delegate(_implementation());\\n    }\\n\\n    /**\\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n     * function in the contract matches the call data.\\n     */\\n    fallback() external payable virtual {\\n        _fallback();\\n    }\\n\\n    /**\\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n     * is empty.\\n     */\\n    receive() external payable virtual {\\n        _fallback();\\n    }\\n\\n    /**\\n     * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n     * call, or as part of the Solidity `fallback` or `receive` functions.\\n     *\\n     * If overriden should call `super._beforeFallback()`.\\n     */\\n    function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xd5d1fd16e9faff7fcb3a52e02a8d49156f42a38a03f07b5f1810c21c2149a8ab\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {BeaconProxy} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (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        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        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        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        assembly {\\n            r.slot := slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol":{"ERC1967Upgrade":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"}],"devdoc":{"custom:oz-upgrades-unsafe-allow":"delegatecall","details":"This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots. _Available since v4.1._","events":{"AdminChanged(address,address)":{"details":"Emitted when the admin account has changed."},"BeaconUpgraded(address)":{"details":"Emitted when the beacon is upgraded."},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{},"stateVariables":{"_ADMIN_SLOT":{"details":"Storage slot with the admin of the contract. This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is validated in the constructor."},"_BEACON_SLOT":{"details":"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor."},"_IMPLEMENTATION_SLOT":{"details":"Storage slot with the address of the current implementation. This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is validated in the constructor."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}],\"devdoc\":{\"custom:oz-upgrades-unsafe-allow\":\"delegatecall\",\"details\":\"This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots. _Available since v4.1._\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is upgraded.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"_ADMIN_SLOT\":{\"details\":\"Storage slot with the admin of the contract. This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is validated in the constructor.\"},\"_BEACON_SLOT\":{\"details\":\"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\"},\"_IMPLEMENTATION_SLOT\":{\"details\":\"Storage slot with the address of the current implementation. This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is validated in the constructor.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol\":\"ERC1967Upgrade\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"hardhat-deploy/solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n    // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n    bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function _getImplementation() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n        StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeTo(address newImplementation) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCall(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _upgradeTo(newImplementation);\\n        if (data.length > 0 || forceCall) {\\n            Address.functionDelegateCall(newImplementation, data);\\n        }\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        // Upgrades from old implementations will perform a rollback test. This test requires the new\\n        // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n        // this special case will break upgrade paths from old UUPS implementation to new ones.\\n        if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n            _setImplementation(newImplementation);\\n        } else {\\n            try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n                require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n            } catch {\\n                revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n            }\\n            _upgradeToAndCall(newImplementation, data, forceCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Returns the current admin.\\n     */\\n    function _getAdmin() internal view virtual returns (address) {\\n        return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n        StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {AdminChanged} event.\\n     */\\n    function _changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(_getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n     */\\n    bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Emitted when the beacon is upgraded.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function _getBeacon() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n        require(Address.isContract(IBeacon(newBeacon).implementation()), \\\"ERC1967: beacon implementation is not a contract\\\");\\n        StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n    }\\n\\n    /**\\n     * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n     * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n     *\\n     * Emits a {BeaconUpgraded} event.\\n     */\\n    function _upgradeBeaconToAndCall(\\n        address newBeacon,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n        if (data.length > 0 || forceCall) {\\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x17668652127feebed0ce8d9431ef95ccc8c4292f03e3b8cf06c6ca16af396633\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {BeaconProxy} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (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        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        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        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        assembly {\\n            r.slot := slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"hardhat-deploy/solc_0.8/openzeppelin/proxy/Proxy.sol":{"Proxy":{"abi":[{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"details":"This abstract contract provides a fallback function that delegates all calls to another contract using the EVM instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to be specified by overriding the virtual {_implementation} function. Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a different contract through the {_delegate} function. The success and return data of the delegated call will be returned back to the caller of the proxy.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This abstract contract provides a fallback function that delegates all calls to another contract using the EVM instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to be specified by overriding the virtual {_implementation} function. Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a different contract through the {_delegate} function. The success and return data of the delegated call will be returned back to the caller of the proxy.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"hardhat-deploy/solc_0.8/openzeppelin/proxy/Proxy.sol\":\"Proxy\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"hardhat-deploy/solc_0.8/openzeppelin/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n    /**\\n     * @dev Delegates the current call to `implementation`.\\n     *\\n     * This function does not return to its internal call site, it will return directly to the external caller.\\n     */\\n    function _delegate(address implementation) internal virtual {\\n        assembly {\\n            // Copy msg.data. We take full control of memory in this inline assembly\\n            // block because it will not return to Solidity code. We overwrite the\\n            // Solidity scratch pad at memory position 0.\\n            calldatacopy(0, 0, calldatasize())\\n\\n            // Call the implementation.\\n            // out and outsize are 0 because we don't know the size yet.\\n            let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n            // Copy the returned data.\\n            returndatacopy(0, 0, returndatasize())\\n\\n            switch result\\n            // delegatecall returns 0 on error.\\n            case 0 {\\n                revert(0, returndatasize())\\n            }\\n            default {\\n                return(0, returndatasize())\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\\n     * and {_fallback} should delegate.\\n     */\\n    function _implementation() internal view virtual returns (address);\\n\\n    /**\\n     * @dev Delegates the current call to the address returned by `_implementation()`.\\n     *\\n     * This function does not return to its internall call site, it will return directly to the external caller.\\n     */\\n    function _fallback() internal virtual {\\n        _beforeFallback();\\n        _delegate(_implementation());\\n    }\\n\\n    /**\\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n     * function in the contract matches the call data.\\n     */\\n    fallback() external payable virtual {\\n        _fallback();\\n    }\\n\\n    /**\\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n     * is empty.\\n     */\\n    receive() external payable virtual {\\n        _fallback();\\n    }\\n\\n    /**\\n     * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n     * call, or as part of the Solidity `fallback` or `receive` functions.\\n     *\\n     * If overriden should call `super._beforeFallback()`.\\n     */\\n    function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xd5d1fd16e9faff7fcb3a52e02a8d49156f42a38a03f07b5f1810c21c2149a8ab\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"hardhat-deploy/solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol":{"IBeacon":{"abi":[{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"This is the interface that {BeaconProxy} expects of its beacon.","kind":"dev","methods":{"implementation()":{"details":"Must return an address that can be used as a delegate call target. {BeaconProxy} will check that this address is a contract."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"implementation()":"5c60da1b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is the interface that {BeaconProxy} expects of its beacon.\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"Must return an address that can be used as a delegate call target. {BeaconProxy} will check that this address is a contract.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"hardhat-deploy/solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol\":\"IBeacon\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"hardhat-deploy/solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {BeaconProxy} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/ProxyAdmin.sol":{"ProxyAdmin":{"abi":[{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"},{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeProxyAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"}],"name":"getProxyAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"}],"name":"getProxyImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"},{"internalType":"address","name":"implementation","type":"address"}],"name":"upgrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"},{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"devdoc":{"details":"This is an auxiliary contract meant to be assigned as the admin of a {TransparentUpgradeableProxy}. For an explanation of why you would want to use this see the documentation for {TransparentUpgradeableProxy}.","kind":"dev","methods":{"changeProxyAdmin(address,address)":{"details":"Changes the admin of `proxy` to `newAdmin`. Requirements: - This contract must be the current admin of `proxy`."},"getProxyAdmin(address)":{"details":"Returns the current admin of `proxy`. Requirements: - This contract must be the admin of `proxy`."},"getProxyImplementation(address)":{"details":"Returns the current implementation of `proxy`. Requirements: - This contract must be the admin of `proxy`."},"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."},"upgrade(address,address)":{"details":"Upgrades `proxy` to `implementation`. See {TransparentUpgradeableProxy-upgradeTo}. Requirements: - This contract must be the admin of `proxy`."},"upgradeAndCall(address,address,bytes)":{"details":"Upgrades `proxy` to `implementation` and calls a function on the new implementation. See {TransparentUpgradeableProxy-upgradeToAndCall}. Requirements: - This contract must be the admin of `proxy`."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_8353":{"entryPoint":null,"id":8353,"parameterSlots":1,"returnSlots":0},"@_8893":{"entryPoint":null,"id":8893,"parameterSlots":1,"returnSlots":0},"@_transferOwnership_8433":{"entryPoint":57,"id":8433,"parameterSlots":1,"returnSlots":0},"abi_decode_t_address_fromMemory":{"entryPoint":173,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":182,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_unbounded":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"cleanup_t_address":{"entryPoint":136,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_t_address":{"entryPoint":154,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:1199:55","nodeType":"YulBlock","src":"0:1199:55","statements":[{"body":{"nativeSrc":"47:35:55","nodeType":"YulBlock","src":"47:35:55","statements":[{"nativeSrc":"57:19:55","nodeType":"YulAssignment","src":"57:19:55","value":{"arguments":[{"kind":"number","nativeSrc":"73:2:55","nodeType":"YulLiteral","src":"73:2:55","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"67:5:55","nodeType":"YulIdentifier","src":"67:5:55"},"nativeSrc":"67:9:55","nodeType":"YulFunctionCall","src":"67:9:55"},"variableNames":[{"name":"memPtr","nativeSrc":"57:6:55","nodeType":"YulIdentifier","src":"57:6:55"}]}]},"name":"allocate_unbounded","nativeSrc":"7:75:55","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"40:6:55","nodeType":"YulTypedName","src":"40:6:55","type":""}],"src":"7:75:55"},{"body":{"nativeSrc":"177:28:55","nodeType":"YulBlock","src":"177:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"194:1:55","nodeType":"YulLiteral","src":"194:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"197:1:55","nodeType":"YulLiteral","src":"197:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"187:6:55","nodeType":"YulIdentifier","src":"187:6:55"},"nativeSrc":"187:12:55","nodeType":"YulFunctionCall","src":"187:12:55"},"nativeSrc":"187:12:55","nodeType":"YulExpressionStatement","src":"187:12:55"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"88:117:55","nodeType":"YulFunctionDefinition","src":"88:117:55"},{"body":{"nativeSrc":"300:28:55","nodeType":"YulBlock","src":"300:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"317:1:55","nodeType":"YulLiteral","src":"317:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"320:1:55","nodeType":"YulLiteral","src":"320:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"310:6:55","nodeType":"YulIdentifier","src":"310:6:55"},"nativeSrc":"310:12:55","nodeType":"YulFunctionCall","src":"310:12:55"},"nativeSrc":"310:12:55","nodeType":"YulExpressionStatement","src":"310:12:55"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"211:117:55","nodeType":"YulFunctionDefinition","src":"211:117:55"},{"body":{"nativeSrc":"379:81:55","nodeType":"YulBlock","src":"379:81:55","statements":[{"nativeSrc":"389:65:55","nodeType":"YulAssignment","src":"389:65:55","value":{"arguments":[{"name":"value","nativeSrc":"404:5:55","nodeType":"YulIdentifier","src":"404:5:55"},{"kind":"number","nativeSrc":"411:42:55","nodeType":"YulLiteral","src":"411:42:55","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"400:3:55","nodeType":"YulIdentifier","src":"400:3:55"},"nativeSrc":"400:54:55","nodeType":"YulFunctionCall","src":"400:54:55"},"variableNames":[{"name":"cleaned","nativeSrc":"389:7:55","nodeType":"YulIdentifier","src":"389:7:55"}]}]},"name":"cleanup_t_uint160","nativeSrc":"334:126:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"361:5:55","nodeType":"YulTypedName","src":"361:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"371:7:55","nodeType":"YulTypedName","src":"371:7:55","type":""}],"src":"334:126:55"},{"body":{"nativeSrc":"511:51:55","nodeType":"YulBlock","src":"511:51:55","statements":[{"nativeSrc":"521:35:55","nodeType":"YulAssignment","src":"521:35:55","value":{"arguments":[{"name":"value","nativeSrc":"550:5:55","nodeType":"YulIdentifier","src":"550:5:55"}],"functionName":{"name":"cleanup_t_uint160","nativeSrc":"532:17:55","nodeType":"YulIdentifier","src":"532:17:55"},"nativeSrc":"532:24:55","nodeType":"YulFunctionCall","src":"532:24:55"},"variableNames":[{"name":"cleaned","nativeSrc":"521:7:55","nodeType":"YulIdentifier","src":"521:7:55"}]}]},"name":"cleanup_t_address","nativeSrc":"466:96:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"493:5:55","nodeType":"YulTypedName","src":"493:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"503:7:55","nodeType":"YulTypedName","src":"503:7:55","type":""}],"src":"466:96:55"},{"body":{"nativeSrc":"611:79:55","nodeType":"YulBlock","src":"611:79:55","statements":[{"body":{"nativeSrc":"668:16:55","nodeType":"YulBlock","src":"668:16:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"677:1:55","nodeType":"YulLiteral","src":"677:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"680:1:55","nodeType":"YulLiteral","src":"680:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"670:6:55","nodeType":"YulIdentifier","src":"670:6:55"},"nativeSrc":"670:12:55","nodeType":"YulFunctionCall","src":"670:12:55"},"nativeSrc":"670:12:55","nodeType":"YulExpressionStatement","src":"670:12:55"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"634:5:55","nodeType":"YulIdentifier","src":"634:5:55"},{"arguments":[{"name":"value","nativeSrc":"659:5:55","nodeType":"YulIdentifier","src":"659:5:55"}],"functionName":{"name":"cleanup_t_address","nativeSrc":"641:17:55","nodeType":"YulIdentifier","src":"641:17:55"},"nativeSrc":"641:24:55","nodeType":"YulFunctionCall","src":"641:24:55"}],"functionName":{"name":"eq","nativeSrc":"631:2:55","nodeType":"YulIdentifier","src":"631:2:55"},"nativeSrc":"631:35:55","nodeType":"YulFunctionCall","src":"631:35:55"}],"functionName":{"name":"iszero","nativeSrc":"624:6:55","nodeType":"YulIdentifier","src":"624:6:55"},"nativeSrc":"624:43:55","nodeType":"YulFunctionCall","src":"624:43:55"},"nativeSrc":"621:63:55","nodeType":"YulIf","src":"621:63:55"}]},"name":"validator_revert_t_address","nativeSrc":"568:122:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"604:5:55","nodeType":"YulTypedName","src":"604:5:55","type":""}],"src":"568:122:55"},{"body":{"nativeSrc":"759:80:55","nodeType":"YulBlock","src":"759:80:55","statements":[{"nativeSrc":"769:22:55","nodeType":"YulAssignment","src":"769:22:55","value":{"arguments":[{"name":"offset","nativeSrc":"784:6:55","nodeType":"YulIdentifier","src":"784:6:55"}],"functionName":{"name":"mload","nativeSrc":"778:5:55","nodeType":"YulIdentifier","src":"778:5:55"},"nativeSrc":"778:13:55","nodeType":"YulFunctionCall","src":"778:13:55"},"variableNames":[{"name":"value","nativeSrc":"769:5:55","nodeType":"YulIdentifier","src":"769:5:55"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"827:5:55","nodeType":"YulIdentifier","src":"827:5:55"}],"functionName":{"name":"validator_revert_t_address","nativeSrc":"800:26:55","nodeType":"YulIdentifier","src":"800:26:55"},"nativeSrc":"800:33:55","nodeType":"YulFunctionCall","src":"800:33:55"},"nativeSrc":"800:33:55","nodeType":"YulExpressionStatement","src":"800:33:55"}]},"name":"abi_decode_t_address_fromMemory","nativeSrc":"696:143:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"737:6:55","nodeType":"YulTypedName","src":"737:6:55","type":""},{"name":"end","nativeSrc":"745:3:55","nodeType":"YulTypedName","src":"745:3:55","type":""}],"returnVariables":[{"name":"value","nativeSrc":"753:5:55","nodeType":"YulTypedName","src":"753:5:55","type":""}],"src":"696:143:55"},{"body":{"nativeSrc":"922:274:55","nodeType":"YulBlock","src":"922:274:55","statements":[{"body":{"nativeSrc":"968:83:55","nodeType":"YulBlock","src":"968:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"970:77:55","nodeType":"YulIdentifier","src":"970:77:55"},"nativeSrc":"970:79:55","nodeType":"YulFunctionCall","src":"970:79:55"},"nativeSrc":"970:79:55","nodeType":"YulExpressionStatement","src":"970:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"943:7:55","nodeType":"YulIdentifier","src":"943:7:55"},{"name":"headStart","nativeSrc":"952:9:55","nodeType":"YulIdentifier","src":"952:9:55"}],"functionName":{"name":"sub","nativeSrc":"939:3:55","nodeType":"YulIdentifier","src":"939:3:55"},"nativeSrc":"939:23:55","nodeType":"YulFunctionCall","src":"939:23:55"},{"kind":"number","nativeSrc":"964:2:55","nodeType":"YulLiteral","src":"964:2:55","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"935:3:55","nodeType":"YulIdentifier","src":"935:3:55"},"nativeSrc":"935:32:55","nodeType":"YulFunctionCall","src":"935:32:55"},"nativeSrc":"932:119:55","nodeType":"YulIf","src":"932:119:55"},{"nativeSrc":"1061:128:55","nodeType":"YulBlock","src":"1061:128:55","statements":[{"nativeSrc":"1076:15:55","nodeType":"YulVariableDeclaration","src":"1076:15:55","value":{"kind":"number","nativeSrc":"1090:1:55","nodeType":"YulLiteral","src":"1090:1:55","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"1080:6:55","nodeType":"YulTypedName","src":"1080:6:55","type":""}]},{"nativeSrc":"1105:74:55","nodeType":"YulAssignment","src":"1105:74:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1151:9:55","nodeType":"YulIdentifier","src":"1151:9:55"},{"name":"offset","nativeSrc":"1162:6:55","nodeType":"YulIdentifier","src":"1162:6:55"}],"functionName":{"name":"add","nativeSrc":"1147:3:55","nodeType":"YulIdentifier","src":"1147:3:55"},"nativeSrc":"1147:22:55","nodeType":"YulFunctionCall","src":"1147:22:55"},{"name":"dataEnd","nativeSrc":"1171:7:55","nodeType":"YulIdentifier","src":"1171:7:55"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nativeSrc":"1115:31:55","nodeType":"YulIdentifier","src":"1115:31:55"},"nativeSrc":"1115:64:55","nodeType":"YulFunctionCall","src":"1115:64:55"},"variableNames":[{"name":"value0","nativeSrc":"1105:6:55","nodeType":"YulIdentifier","src":"1105:6:55"}]}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nativeSrc":"845:351:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"892:9:55","nodeType":"YulTypedName","src":"892:9:55","type":""},{"name":"dataEnd","nativeSrc":"903:7:55","nodeType":"YulTypedName","src":"903:7:55","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"915:6:55","nodeType":"YulTypedName","src":"915:6:55","type":""}],"src":"845:351:55"}]},"contents":"{\n\n    function allocate_unbounded() -> memPtr {\n        memPtr := mload(64)\n    }\n\n    function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n        revert(0, 0)\n    }\n\n    function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n        revert(0, 0)\n    }\n\n    function cleanup_t_uint160(value) -> cleaned {\n        cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n    }\n\n    function cleanup_t_address(value) -> cleaned {\n        cleaned := cleanup_t_uint160(value)\n    }\n\n    function validator_revert_t_address(value) {\n        if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n    }\n\n    function abi_decode_t_address_fromMemory(offset, end) -> value {\n        value := mload(offset)\n        validator_revert_t_address(value)\n    }\n\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0 {\n        if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n}\n","id":55,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"6080604052348015600e575f5ffd5b506040516108ee3803806108ee833981016040819052602b9160b6565b806033816039565b505060d8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f6001600160a01b0382165b92915050565b60a1816088565b811460aa575f5ffd5b50565b8051609481609a565b5f6020828403121560c75760c75f5ffd5b5f60d0848460ad565b949350505050565b610809806100e55f395ff3fe608060405260043610610079575f3560e01c80639623609d1161004c5780639623609d1461010357806399a88ec414610116578063f2fde38b14610135578063f3b7dead14610154575f5ffd5b8063204e1c7a1461007d578063715018a6146100b25780637eff275e146100c85780638da5cb5b146100e7575b5f5ffd5b348015610088575f5ffd5b5061009c610097366004610494565b610173565b6040516100a991906104c1565b60405180910390f35b3480156100bd575f5ffd5b506100c66101f3565b005b3480156100d3575f5ffd5b506100c66100e23660046104e3565b610230565b3480156100f2575f5ffd5b505f546001600160a01b031661009c565b6100c661011136600461060f565b6102b6565b348015610121575f5ffd5b506100c66101303660046104e3565b610342565b348015610140575f5ffd5b506100c661014f366004610675565b610397565b34801561015f575f5ffd5b5061009c61016e366004610494565b6103f2565b5f5f5f836001600160a01b031660405161018c906106a6565b5f60405180830381855afa9150503d805f81146101c4576040519150601f19603f3d011682016040523d82523d5f602084013e6101c9565b606091505b5091509150816101d7575f5ffd5b808060200190518101906101eb91906106bb565b949350505050565b5f546001600160a01b031633146102255760405162461bcd60e51b815260040161021c906106d9565b60405180910390fd5b61022e5f61040b565b565b5f546001600160a01b031633146102595760405162461bcd60e51b815260040161021c906106d9565b6040516308f2839760e41b81526001600160a01b03831690638f283970906102859084906004016104c1565b5f604051808303815f87803b15801561029c575f5ffd5b505af11580156102ae573d5f5f3e3d5ffd5b505050505050565b5f546001600160a01b031633146102df5760405162461bcd60e51b815260040161021c906106d9565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061030f908690869060040161074f565b5f604051808303818588803b158015610326575f5ffd5b505af1158015610338573d5f5f3e3d5ffd5b5050505050505050565b5f546001600160a01b0316331461036b5760405162461bcd60e51b815260040161021c906106d9565b604051631b2ce7f360e11b81526001600160a01b03831690633659cfe6906102859084906004016104c1565b5f546001600160a01b031633146103c05760405162461bcd60e51b815260040161021c906106d9565b6001600160a01b0381166103e65760405162461bcd60e51b815260040161021c9061076f565b6103ef8161040b565b50565b5f5f5f836001600160a01b031660405161018c906107c9565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f6001600160a01b0382165b92915050565b5f6104668261045a565b61047f8161046c565b81146103ef575f5ffd5b803561046681610476565b5f602082840312156104a7576104a75f5ffd5b5f6101eb8484610489565b6104bb8161045a565b82525050565b6020810161046682846104b2565b61047f8161045a565b8035610466816104cf565b5f5f604083850312156104f7576104f75f5ffd5b5f6105028585610489565b9250506020610513858286016104d8565b9150509250929050565b634e487b7160e01b5f52604160045260245ffd5b601f19601f830116810181811067ffffffffffffffff821117156105575761055761051d565b6040525050565b5f61056860405190565b90506105748282610531565b919050565b5f67ffffffffffffffff8211156105925761059261051d565b601f19601f83011660200192915050565b82818337505f910152565b5f6105c06105bb84610579565b61055e565b9050828152602081018484840111156105da576105da5f5ffd5b6105e58482856105a3565b509392505050565b5f82601f8301126105ff576105ff5f5ffd5b81356101eb8482602086016105ae565b5f5f5f60608486031215610624576106245f5ffd5b5f61062f8686610489565b9350506020610640868287016104d8565b925050604084013567ffffffffffffffff81111561065f5761065f5f5ffd5b61066b868287016105ed565b9150509250925092565b5f60208284031215610688576106885f5ffd5b5f6101eb84846104d8565b635c60da1b60e01b81525f5b5060040190565b5f61046682610693565b8051610466816104cf565b5f602082840312156106ce576106ce5f5ffd5b5f6101eb84846106b0565b60208082528181019081527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604083015260608201610466565b8281835e505f910152565b5f610727825190565b80845260208401935061073e818560208601610713565b601f01601f19169290920192915050565b6040810161075d82856104b2565b81810360208301526101eb818461071e565b6020808252810161046681602681527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160208201526564647265737360d01b604082015260600190565b6303e1469160e61b81525f61069f565b5f610466826107b956fea2646970667358221220630128412b3e5f6e5ac3b29e782f4c22d0d92e1e5351878d452612894ba2239164736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x8EE CODESIZE SUB DUP1 PUSH2 0x8EE DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH1 0x2B SWAP2 PUSH1 0xB6 JUMP JUMPDEST DUP1 PUSH1 0x33 DUP2 PUSH1 0x39 JUMP JUMPDEST POP POP PUSH1 0xD8 JUMP JUMPDEST PUSH0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xA1 DUP2 PUSH1 0x88 JUMP JUMPDEST DUP2 EQ PUSH1 0xAA JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x94 DUP2 PUSH1 0x9A JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH1 0xC7 JUMPI PUSH1 0xC7 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0xD0 DUP5 DUP5 PUSH1 0xAD JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x809 DUP1 PUSH2 0xE5 PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x79 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9623609D GT PUSH2 0x4C JUMPI DUP1 PUSH4 0x9623609D EQ PUSH2 0x103 JUMPI DUP1 PUSH4 0x99A88EC4 EQ PUSH2 0x116 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x135 JUMPI DUP1 PUSH4 0xF3B7DEAD EQ PUSH2 0x154 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x204E1C7A EQ PUSH2 0x7D JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0x7EFF275E EQ PUSH2 0xC8 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xE7 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x88 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x9C PUSH2 0x97 CALLDATASIZE PUSH1 0x4 PUSH2 0x494 JUMP JUMPDEST PUSH2 0x173 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x4C1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBD JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0xC6 PUSH2 0x1F3 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0xC6 PUSH2 0xE2 CALLDATASIZE PUSH1 0x4 PUSH2 0x4E3 JUMP JUMPDEST PUSH2 0x230 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9C JUMP JUMPDEST PUSH2 0xC6 PUSH2 0x111 CALLDATASIZE PUSH1 0x4 PUSH2 0x60F JUMP JUMPDEST PUSH2 0x2B6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x121 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0xC6 PUSH2 0x130 CALLDATASIZE PUSH1 0x4 PUSH2 0x4E3 JUMP JUMPDEST PUSH2 0x342 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x140 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0xC6 PUSH2 0x14F CALLDATASIZE PUSH1 0x4 PUSH2 0x675 JUMP JUMPDEST PUSH2 0x397 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15F JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x9C PUSH2 0x16E CALLDATASIZE PUSH1 0x4 PUSH2 0x494 JUMP JUMPDEST PUSH2 0x3F2 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 MLOAD PUSH2 0x18C SWAP1 PUSH2 0x6A6 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x1C4 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1C9 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x1D7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1EB SWAP2 SWAP1 PUSH2 0x6BB JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x225 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x21C SWAP1 PUSH2 0x6D9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x22E PUSH0 PUSH2 0x40B JUMP JUMPDEST JUMP JUMPDEST PUSH0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x259 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x21C SWAP1 PUSH2 0x6D9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x8F28397 PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x8F283970 SWAP1 PUSH2 0x285 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x4C1 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x29C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2AE JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x2DF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x21C SWAP1 PUSH2 0x6D9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x278F7943 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x4F1EF286 SWAP1 CALLVALUE SWAP1 PUSH2 0x30F SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x74F JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x326 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x338 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x36B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x21C SWAP1 PUSH2 0x6D9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x1B2CE7F3 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x3659CFE6 SWAP1 PUSH2 0x285 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x4C1 JUMP JUMPDEST PUSH0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x3C0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x21C SWAP1 PUSH2 0x6D9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x3E6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x21C SWAP1 PUSH2 0x76F JUMP JUMPDEST PUSH2 0x3EF DUP2 PUSH2 0x40B JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 MLOAD PUSH2 0x18C SWAP1 PUSH2 0x7C9 JUMP JUMPDEST PUSH0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x466 DUP3 PUSH2 0x45A JUMP JUMPDEST PUSH2 0x47F DUP2 PUSH2 0x46C JUMP JUMPDEST DUP2 EQ PUSH2 0x3EF JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x466 DUP2 PUSH2 0x476 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4A7 JUMPI PUSH2 0x4A7 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x1EB DUP5 DUP5 PUSH2 0x489 JUMP JUMPDEST PUSH2 0x4BB DUP2 PUSH2 0x45A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x466 DUP3 DUP5 PUSH2 0x4B2 JUMP JUMPDEST PUSH2 0x47F DUP2 PUSH2 0x45A JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x466 DUP2 PUSH2 0x4CF JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4F7 JUMPI PUSH2 0x4F7 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x502 DUP6 DUP6 PUSH2 0x489 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x513 DUP6 DUP3 DUP7 ADD PUSH2 0x4D8 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x557 JUMPI PUSH2 0x557 PUSH2 0x51D JUMP JUMPDEST PUSH1 0x40 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH2 0x568 PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST SWAP1 POP PUSH2 0x574 DUP3 DUP3 PUSH2 0x531 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x592 JUMPI PUSH2 0x592 PUSH2 0x51D JUMP JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH0 PUSH2 0x5C0 PUSH2 0x5BB DUP5 PUSH2 0x579 JUMP JUMPDEST PUSH2 0x55E JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x5DA JUMPI PUSH2 0x5DA PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x5E5 DUP5 DUP3 DUP6 PUSH2 0x5A3 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5FF JUMPI PUSH2 0x5FF PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1EB DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x5AE JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x624 JUMPI PUSH2 0x624 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x62F DUP7 DUP7 PUSH2 0x489 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x640 DUP7 DUP3 DUP8 ADD PUSH2 0x4D8 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x65F JUMPI PUSH2 0x65F PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x66B DUP7 DUP3 DUP8 ADD PUSH2 0x5ED JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x688 JUMPI PUSH2 0x688 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x1EB DUP5 DUP5 PUSH2 0x4D8 JUMP JUMPDEST PUSH4 0x5C60DA1B PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 JUMPDEST POP PUSH1 0x4 ADD SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x466 DUP3 PUSH2 0x693 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x466 DUP2 PUSH2 0x4CF JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6CE JUMPI PUSH2 0x6CE PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x1EB DUP5 DUP5 PUSH2 0x6B0 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD SWAP1 DUP2 MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD PUSH2 0x466 JUMP JUMPDEST DUP3 DUP2 DUP4 MCOPY POP PUSH0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH0 PUSH2 0x727 DUP3 MLOAD SWAP1 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH2 0x73E DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x713 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x75D DUP3 DUP6 PUSH2 0x4B2 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x1EB DUP2 DUP5 PUSH2 0x71E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x466 DUP2 PUSH1 0x26 DUP2 MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x20 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE PUSH0 PUSH2 0x69F JUMP JUMPDEST PUSH0 PUSH2 0x466 DUP3 PUSH2 0x7B9 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH4 0x128412B RETURNDATACOPY PUSH0 PUSH15 0x5AC3B29E782F4C22D0D92E1E535187 DUP14 GASLIMIT 0x26 SLT DUP10 0x4B LOG2 0x23 SWAP2 PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"435:2470:49:-:0;;;473:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;516:12;942:32:43;516:12:49;942:18:43;:32::i;:::-;897:84;473:59:49;435:2470;;2291:187:43;2364:16;2383:6;;-1:-1:-1;;;;;2399:17:43;;;-1:-1:-1;;;;;;2399:17:43;;;;;;2431:40;;2383:6;;;;;;;2431:40;;2364:16;2431:40;2354:124;2291:187;:::o;466:96:55:-;503:7;-1:-1:-1;;;;;400:54:55;;532:24;521:35;466:96;-1:-1:-1;;466:96:55:o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:143::-;778:13;;800:33;778:13;800:33;:::i;845:351::-;915:6;964:2;952:9;943:7;939:23;935:32;932:119;;;970:79;197:1;194;187:12;970:79;1090:1;1115:64;1171:7;1151:9;1115:64;:::i;:::-;1105:74;845:351;-1:-1:-1;;;;845:351:55:o;:::-;435:2470:49;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_msgSender_9493":{"entryPoint":null,"id":9493,"parameterSlots":0,"returnSlots":1},"@_transferOwnership_8433":{"entryPoint":1035,"id":8433,"parameterSlots":1,"returnSlots":0},"@changeProxyAdmin_8979":{"entryPoint":560,"id":8979,"parameterSlots":2,"returnSlots":0},"@getProxyAdmin_8961":{"entryPoint":1010,"id":8961,"parameterSlots":1,"returnSlots":1},"@getProxyImplementation_8927":{"entryPoint":371,"id":8927,"parameterSlots":1,"returnSlots":1},"@owner_8362":{"entryPoint":null,"id":8362,"parameterSlots":0,"returnSlots":1},"@renounceOwnership_8390":{"entryPoint":499,"id":8390,"parameterSlots":0,"returnSlots":0},"@transferOwnership_8413":{"entryPoint":919,"id":8413,"parameterSlots":1,"returnSlots":0},"@upgradeAndCall_9021":{"entryPoint":694,"id":9021,"parameterSlots":3,"returnSlots":0},"@upgrade_8997":{"entryPoint":834,"id":8997,"parameterSlots":2,"returnSlots":0},"abi_decode_available_length_t_bytes_memory_ptr":{"entryPoint":1454,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_address":{"entryPoint":1240,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_address_payable_fromMemory":{"entryPoint":1712,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes_memory_ptr":{"entryPoint":1517,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_contract$_TransparentUpgradeableProxy_$9186":{"entryPoint":1161,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":1653,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_payable_fromMemory":{"entryPoint":1723,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_TransparentUpgradeableProxy_$9186":{"entryPoint":1172,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_TransparentUpgradeableProxy_$9186t_address":{"entryPoint":1251,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_contract$_TransparentUpgradeableProxy_$9186t_addresst_bytes_memory_ptr":{"entryPoint":1551,"id":null,"parameterSlots":2,"returnSlots":3},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":1202,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack":{"entryPoint":1822,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_96a4c6be7716f5be15d118c16bd1d464cb27f01187d0b9218993a5d488a47c29_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":1683,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_cb23cf6c353ccb16f0d92c8e6b5c5b425654e65dd07e2d295b394de4cf15afb7_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":1977,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_packed_t_stringliteral_96a4c6be7716f5be15d118c16bd1d464cb27f01187d0b9218993a5d488a47c29__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":1702,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_packed_t_stringliteral_cb23cf6c353ccb16f0d92c8e6b5c5b425654e65dd07e2d295b394de4cf15afb7__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":1993,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":1217,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":1871,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":1903,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":1753,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory":{"entryPoint":1374,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_bytes_memory_ptr":{"entryPoint":1401,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_bytes_memory_ptr":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_address":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_address_payable":{"entryPoint":1114,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_contract$_TransparentUpgradeableProxy_$9186":{"entryPoint":1132,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"copy_calldata_to_memory_with_cleanup":{"entryPoint":1443,"id":null,"parameterSlots":3,"returnSlots":0},"copy_memory_to_memory_with_cleanup":{"entryPoint":1811,"id":null,"parameterSlots":3,"returnSlots":0},"finalize_allocation":{"entryPoint":1329,"id":null,"parameterSlots":2,"returnSlots":0},"panic_error_0x41":{"entryPoint":1309,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_96a4c6be7716f5be15d118c16bd1d464cb27f01187d0b9218993a5d488a47c29":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_cb23cf6c353ccb16f0d92c8e6b5c5b425654e65dd07e2d295b394de4cf15afb7":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_address":{"entryPoint":1231,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_address_payable":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_contract$_TransparentUpgradeableProxy_$9186":{"entryPoint":1142,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:12515:55","nodeType":"YulBlock","src":"0:12515:55","statements":[{"body":{"nativeSrc":"47:35:55","nodeType":"YulBlock","src":"47:35:55","statements":[{"nativeSrc":"57:19:55","nodeType":"YulAssignment","src":"57:19:55","value":{"arguments":[{"kind":"number","nativeSrc":"73:2:55","nodeType":"YulLiteral","src":"73:2:55","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"67:5:55","nodeType":"YulIdentifier","src":"67:5:55"},"nativeSrc":"67:9:55","nodeType":"YulFunctionCall","src":"67:9:55"},"variableNames":[{"name":"memPtr","nativeSrc":"57:6:55","nodeType":"YulIdentifier","src":"57:6:55"}]}]},"name":"allocate_unbounded","nativeSrc":"7:75:55","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"40:6:55","nodeType":"YulTypedName","src":"40:6:55","type":""}],"src":"7:75:55"},{"body":{"nativeSrc":"177:28:55","nodeType":"YulBlock","src":"177:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"194:1:55","nodeType":"YulLiteral","src":"194:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"197:1:55","nodeType":"YulLiteral","src":"197:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"187:6:55","nodeType":"YulIdentifier","src":"187:6:55"},"nativeSrc":"187:12:55","nodeType":"YulFunctionCall","src":"187:12:55"},"nativeSrc":"187:12:55","nodeType":"YulExpressionStatement","src":"187:12:55"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"88:117:55","nodeType":"YulFunctionDefinition","src":"88:117:55"},{"body":{"nativeSrc":"300:28:55","nodeType":"YulBlock","src":"300:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"317:1:55","nodeType":"YulLiteral","src":"317:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"320:1:55","nodeType":"YulLiteral","src":"320:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"310:6:55","nodeType":"YulIdentifier","src":"310:6:55"},"nativeSrc":"310:12:55","nodeType":"YulFunctionCall","src":"310:12:55"},"nativeSrc":"310:12:55","nodeType":"YulExpressionStatement","src":"310:12:55"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"211:117:55","nodeType":"YulFunctionDefinition","src":"211:117:55"},{"body":{"nativeSrc":"379:81:55","nodeType":"YulBlock","src":"379:81:55","statements":[{"nativeSrc":"389:65:55","nodeType":"YulAssignment","src":"389:65:55","value":{"arguments":[{"name":"value","nativeSrc":"404:5:55","nodeType":"YulIdentifier","src":"404:5:55"},{"kind":"number","nativeSrc":"411:42:55","nodeType":"YulLiteral","src":"411:42:55","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"400:3:55","nodeType":"YulIdentifier","src":"400:3:55"},"nativeSrc":"400:54:55","nodeType":"YulFunctionCall","src":"400:54:55"},"variableNames":[{"name":"cleaned","nativeSrc":"389:7:55","nodeType":"YulIdentifier","src":"389:7:55"}]}]},"name":"cleanup_t_uint160","nativeSrc":"334:126:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"361:5:55","nodeType":"YulTypedName","src":"361:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"371:7:55","nodeType":"YulTypedName","src":"371:7:55","type":""}],"src":"334:126:55"},{"body":{"nativeSrc":"519:51:55","nodeType":"YulBlock","src":"519:51:55","statements":[{"nativeSrc":"529:35:55","nodeType":"YulAssignment","src":"529:35:55","value":{"arguments":[{"name":"value","nativeSrc":"558:5:55","nodeType":"YulIdentifier","src":"558:5:55"}],"functionName":{"name":"cleanup_t_uint160","nativeSrc":"540:17:55","nodeType":"YulIdentifier","src":"540:17:55"},"nativeSrc":"540:24:55","nodeType":"YulFunctionCall","src":"540:24:55"},"variableNames":[{"name":"cleaned","nativeSrc":"529:7:55","nodeType":"YulIdentifier","src":"529:7:55"}]}]},"name":"cleanup_t_address_payable","nativeSrc":"466:104:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"501:5:55","nodeType":"YulTypedName","src":"501:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"511:7:55","nodeType":"YulTypedName","src":"511:7:55","type":""}],"src":"466:104:55"},{"body":{"nativeSrc":"657:59:55","nodeType":"YulBlock","src":"657:59:55","statements":[{"nativeSrc":"667:43:55","nodeType":"YulAssignment","src":"667:43:55","value":{"arguments":[{"name":"value","nativeSrc":"704:5:55","nodeType":"YulIdentifier","src":"704:5:55"}],"functionName":{"name":"cleanup_t_address_payable","nativeSrc":"678:25:55","nodeType":"YulIdentifier","src":"678:25:55"},"nativeSrc":"678:32:55","nodeType":"YulFunctionCall","src":"678:32:55"},"variableNames":[{"name":"cleaned","nativeSrc":"667:7:55","nodeType":"YulIdentifier","src":"667:7:55"}]}]},"name":"cleanup_t_contract$_TransparentUpgradeableProxy_$9186","nativeSrc":"576:140:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"639:5:55","nodeType":"YulTypedName","src":"639:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"649:7:55","nodeType":"YulTypedName","src":"649:7:55","type":""}],"src":"576:140:55"},{"body":{"nativeSrc":"801:115:55","nodeType":"YulBlock","src":"801:115:55","statements":[{"body":{"nativeSrc":"894:16:55","nodeType":"YulBlock","src":"894:16:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"903:1:55","nodeType":"YulLiteral","src":"903:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"906:1:55","nodeType":"YulLiteral","src":"906:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"896:6:55","nodeType":"YulIdentifier","src":"896:6:55"},"nativeSrc":"896:12:55","nodeType":"YulFunctionCall","src":"896:12:55"},"nativeSrc":"896:12:55","nodeType":"YulExpressionStatement","src":"896:12:55"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"824:5:55","nodeType":"YulIdentifier","src":"824:5:55"},{"arguments":[{"name":"value","nativeSrc":"885:5:55","nodeType":"YulIdentifier","src":"885:5:55"}],"functionName":{"name":"cleanup_t_contract$_TransparentUpgradeableProxy_$9186","nativeSrc":"831:53:55","nodeType":"YulIdentifier","src":"831:53:55"},"nativeSrc":"831:60:55","nodeType":"YulFunctionCall","src":"831:60:55"}],"functionName":{"name":"eq","nativeSrc":"821:2:55","nodeType":"YulIdentifier","src":"821:2:55"},"nativeSrc":"821:71:55","nodeType":"YulFunctionCall","src":"821:71:55"}],"functionName":{"name":"iszero","nativeSrc":"814:6:55","nodeType":"YulIdentifier","src":"814:6:55"},"nativeSrc":"814:79:55","nodeType":"YulFunctionCall","src":"814:79:55"},"nativeSrc":"811:99:55","nodeType":"YulIf","src":"811:99:55"}]},"name":"validator_revert_t_contract$_TransparentUpgradeableProxy_$9186","nativeSrc":"722:194:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"794:5:55","nodeType":"YulTypedName","src":"794:5:55","type":""}],"src":"722:194:55"},{"body":{"nativeSrc":"1010:123:55","nodeType":"YulBlock","src":"1010:123:55","statements":[{"nativeSrc":"1020:29:55","nodeType":"YulAssignment","src":"1020:29:55","value":{"arguments":[{"name":"offset","nativeSrc":"1042:6:55","nodeType":"YulIdentifier","src":"1042:6:55"}],"functionName":{"name":"calldataload","nativeSrc":"1029:12:55","nodeType":"YulIdentifier","src":"1029:12:55"},"nativeSrc":"1029:20:55","nodeType":"YulFunctionCall","src":"1029:20:55"},"variableNames":[{"name":"value","nativeSrc":"1020:5:55","nodeType":"YulIdentifier","src":"1020:5:55"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"1121:5:55","nodeType":"YulIdentifier","src":"1121:5:55"}],"functionName":{"name":"validator_revert_t_contract$_TransparentUpgradeableProxy_$9186","nativeSrc":"1058:62:55","nodeType":"YulIdentifier","src":"1058:62:55"},"nativeSrc":"1058:69:55","nodeType":"YulFunctionCall","src":"1058:69:55"},"nativeSrc":"1058:69:55","nodeType":"YulExpressionStatement","src":"1058:69:55"}]},"name":"abi_decode_t_contract$_TransparentUpgradeableProxy_$9186","nativeSrc":"922:211:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"988:6:55","nodeType":"YulTypedName","src":"988:6:55","type":""},{"name":"end","nativeSrc":"996:3:55","nodeType":"YulTypedName","src":"996:3:55","type":""}],"returnVariables":[{"name":"value","nativeSrc":"1004:5:55","nodeType":"YulTypedName","src":"1004:5:55","type":""}],"src":"922:211:55"},{"body":{"nativeSrc":"1241:299:55","nodeType":"YulBlock","src":"1241:299:55","statements":[{"body":{"nativeSrc":"1287:83:55","nodeType":"YulBlock","src":"1287:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"1289:77:55","nodeType":"YulIdentifier","src":"1289:77:55"},"nativeSrc":"1289:79:55","nodeType":"YulFunctionCall","src":"1289:79:55"},"nativeSrc":"1289:79:55","nodeType":"YulExpressionStatement","src":"1289:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1262:7:55","nodeType":"YulIdentifier","src":"1262:7:55"},{"name":"headStart","nativeSrc":"1271:9:55","nodeType":"YulIdentifier","src":"1271:9:55"}],"functionName":{"name":"sub","nativeSrc":"1258:3:55","nodeType":"YulIdentifier","src":"1258:3:55"},"nativeSrc":"1258:23:55","nodeType":"YulFunctionCall","src":"1258:23:55"},{"kind":"number","nativeSrc":"1283:2:55","nodeType":"YulLiteral","src":"1283:2:55","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"1254:3:55","nodeType":"YulIdentifier","src":"1254:3:55"},"nativeSrc":"1254:32:55","nodeType":"YulFunctionCall","src":"1254:32:55"},"nativeSrc":"1251:119:55","nodeType":"YulIf","src":"1251:119:55"},{"nativeSrc":"1380:153:55","nodeType":"YulBlock","src":"1380:153:55","statements":[{"nativeSrc":"1395:15:55","nodeType":"YulVariableDeclaration","src":"1395:15:55","value":{"kind":"number","nativeSrc":"1409:1:55","nodeType":"YulLiteral","src":"1409:1:55","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"1399:6:55","nodeType":"YulTypedName","src":"1399:6:55","type":""}]},{"nativeSrc":"1424:99:55","nodeType":"YulAssignment","src":"1424:99:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1495:9:55","nodeType":"YulIdentifier","src":"1495:9:55"},{"name":"offset","nativeSrc":"1506:6:55","nodeType":"YulIdentifier","src":"1506:6:55"}],"functionName":{"name":"add","nativeSrc":"1491:3:55","nodeType":"YulIdentifier","src":"1491:3:55"},"nativeSrc":"1491:22:55","nodeType":"YulFunctionCall","src":"1491:22:55"},{"name":"dataEnd","nativeSrc":"1515:7:55","nodeType":"YulIdentifier","src":"1515:7:55"}],"functionName":{"name":"abi_decode_t_contract$_TransparentUpgradeableProxy_$9186","nativeSrc":"1434:56:55","nodeType":"YulIdentifier","src":"1434:56:55"},"nativeSrc":"1434:89:55","nodeType":"YulFunctionCall","src":"1434:89:55"},"variableNames":[{"name":"value0","nativeSrc":"1424:6:55","nodeType":"YulIdentifier","src":"1424:6:55"}]}]}]},"name":"abi_decode_tuple_t_contract$_TransparentUpgradeableProxy_$9186","nativeSrc":"1139:401:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1211:9:55","nodeType":"YulTypedName","src":"1211:9:55","type":""},{"name":"dataEnd","nativeSrc":"1222:7:55","nodeType":"YulTypedName","src":"1222:7:55","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1234:6:55","nodeType":"YulTypedName","src":"1234:6:55","type":""}],"src":"1139:401:55"},{"body":{"nativeSrc":"1591:51:55","nodeType":"YulBlock","src":"1591:51:55","statements":[{"nativeSrc":"1601:35:55","nodeType":"YulAssignment","src":"1601:35:55","value":{"arguments":[{"name":"value","nativeSrc":"1630:5:55","nodeType":"YulIdentifier","src":"1630:5:55"}],"functionName":{"name":"cleanup_t_uint160","nativeSrc":"1612:17:55","nodeType":"YulIdentifier","src":"1612:17:55"},"nativeSrc":"1612:24:55","nodeType":"YulFunctionCall","src":"1612:24:55"},"variableNames":[{"name":"cleaned","nativeSrc":"1601:7:55","nodeType":"YulIdentifier","src":"1601:7:55"}]}]},"name":"cleanup_t_address","nativeSrc":"1546:96:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1573:5:55","nodeType":"YulTypedName","src":"1573:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"1583:7:55","nodeType":"YulTypedName","src":"1583:7:55","type":""}],"src":"1546:96:55"},{"body":{"nativeSrc":"1713:53:55","nodeType":"YulBlock","src":"1713:53:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"1730:3:55","nodeType":"YulIdentifier","src":"1730:3:55"},{"arguments":[{"name":"value","nativeSrc":"1753:5:55","nodeType":"YulIdentifier","src":"1753:5:55"}],"functionName":{"name":"cleanup_t_address","nativeSrc":"1735:17:55","nodeType":"YulIdentifier","src":"1735:17:55"},"nativeSrc":"1735:24:55","nodeType":"YulFunctionCall","src":"1735:24:55"}],"functionName":{"name":"mstore","nativeSrc":"1723:6:55","nodeType":"YulIdentifier","src":"1723:6:55"},"nativeSrc":"1723:37:55","nodeType":"YulFunctionCall","src":"1723:37:55"},"nativeSrc":"1723:37:55","nodeType":"YulExpressionStatement","src":"1723:37:55"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"1648:118:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1701:5:55","nodeType":"YulTypedName","src":"1701:5:55","type":""},{"name":"pos","nativeSrc":"1708:3:55","nodeType":"YulTypedName","src":"1708:3:55","type":""}],"src":"1648:118:55"},{"body":{"nativeSrc":"1870:124:55","nodeType":"YulBlock","src":"1870:124:55","statements":[{"nativeSrc":"1880:26:55","nodeType":"YulAssignment","src":"1880:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"1892:9:55","nodeType":"YulIdentifier","src":"1892:9:55"},{"kind":"number","nativeSrc":"1903:2:55","nodeType":"YulLiteral","src":"1903:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1888:3:55","nodeType":"YulIdentifier","src":"1888:3:55"},"nativeSrc":"1888:18:55","nodeType":"YulFunctionCall","src":"1888:18:55"},"variableNames":[{"name":"tail","nativeSrc":"1880:4:55","nodeType":"YulIdentifier","src":"1880:4:55"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"1960:6:55","nodeType":"YulIdentifier","src":"1960:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"1973:9:55","nodeType":"YulIdentifier","src":"1973:9:55"},{"kind":"number","nativeSrc":"1984:1:55","nodeType":"YulLiteral","src":"1984:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"1969:3:55","nodeType":"YulIdentifier","src":"1969:3:55"},"nativeSrc":"1969:17:55","nodeType":"YulFunctionCall","src":"1969:17:55"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"1916:43:55","nodeType":"YulIdentifier","src":"1916:43:55"},"nativeSrc":"1916:71:55","nodeType":"YulFunctionCall","src":"1916:71:55"},"nativeSrc":"1916:71:55","nodeType":"YulExpressionStatement","src":"1916:71:55"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"1772:222:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1842:9:55","nodeType":"YulTypedName","src":"1842:9:55","type":""},{"name":"value0","nativeSrc":"1854:6:55","nodeType":"YulTypedName","src":"1854:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1865:4:55","nodeType":"YulTypedName","src":"1865:4:55","type":""}],"src":"1772:222:55"},{"body":{"nativeSrc":"2043:79:55","nodeType":"YulBlock","src":"2043:79:55","statements":[{"body":{"nativeSrc":"2100:16:55","nodeType":"YulBlock","src":"2100:16:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2109:1:55","nodeType":"YulLiteral","src":"2109:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"2112:1:55","nodeType":"YulLiteral","src":"2112:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2102:6:55","nodeType":"YulIdentifier","src":"2102:6:55"},"nativeSrc":"2102:12:55","nodeType":"YulFunctionCall","src":"2102:12:55"},"nativeSrc":"2102:12:55","nodeType":"YulExpressionStatement","src":"2102:12:55"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2066:5:55","nodeType":"YulIdentifier","src":"2066:5:55"},{"arguments":[{"name":"value","nativeSrc":"2091:5:55","nodeType":"YulIdentifier","src":"2091:5:55"}],"functionName":{"name":"cleanup_t_address","nativeSrc":"2073:17:55","nodeType":"YulIdentifier","src":"2073:17:55"},"nativeSrc":"2073:24:55","nodeType":"YulFunctionCall","src":"2073:24:55"}],"functionName":{"name":"eq","nativeSrc":"2063:2:55","nodeType":"YulIdentifier","src":"2063:2:55"},"nativeSrc":"2063:35:55","nodeType":"YulFunctionCall","src":"2063:35:55"}],"functionName":{"name":"iszero","nativeSrc":"2056:6:55","nodeType":"YulIdentifier","src":"2056:6:55"},"nativeSrc":"2056:43:55","nodeType":"YulFunctionCall","src":"2056:43:55"},"nativeSrc":"2053:63:55","nodeType":"YulIf","src":"2053:63:55"}]},"name":"validator_revert_t_address","nativeSrc":"2000:122:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2036:5:55","nodeType":"YulTypedName","src":"2036:5:55","type":""}],"src":"2000:122:55"},{"body":{"nativeSrc":"2180:87:55","nodeType":"YulBlock","src":"2180:87:55","statements":[{"nativeSrc":"2190:29:55","nodeType":"YulAssignment","src":"2190:29:55","value":{"arguments":[{"name":"offset","nativeSrc":"2212:6:55","nodeType":"YulIdentifier","src":"2212:6:55"}],"functionName":{"name":"calldataload","nativeSrc":"2199:12:55","nodeType":"YulIdentifier","src":"2199:12:55"},"nativeSrc":"2199:20:55","nodeType":"YulFunctionCall","src":"2199:20:55"},"variableNames":[{"name":"value","nativeSrc":"2190:5:55","nodeType":"YulIdentifier","src":"2190:5:55"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"2255:5:55","nodeType":"YulIdentifier","src":"2255:5:55"}],"functionName":{"name":"validator_revert_t_address","nativeSrc":"2228:26:55","nodeType":"YulIdentifier","src":"2228:26:55"},"nativeSrc":"2228:33:55","nodeType":"YulFunctionCall","src":"2228:33:55"},"nativeSrc":"2228:33:55","nodeType":"YulExpressionStatement","src":"2228:33:55"}]},"name":"abi_decode_t_address","nativeSrc":"2128:139:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"2158:6:55","nodeType":"YulTypedName","src":"2158:6:55","type":""},{"name":"end","nativeSrc":"2166:3:55","nodeType":"YulTypedName","src":"2166:3:55","type":""}],"returnVariables":[{"name":"value","nativeSrc":"2174:5:55","nodeType":"YulTypedName","src":"2174:5:55","type":""}],"src":"2128:139:55"},{"body":{"nativeSrc":"2392:427:55","nodeType":"YulBlock","src":"2392:427:55","statements":[{"body":{"nativeSrc":"2438:83:55","nodeType":"YulBlock","src":"2438:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"2440:77:55","nodeType":"YulIdentifier","src":"2440:77:55"},"nativeSrc":"2440:79:55","nodeType":"YulFunctionCall","src":"2440:79:55"},"nativeSrc":"2440:79:55","nodeType":"YulExpressionStatement","src":"2440:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2413:7:55","nodeType":"YulIdentifier","src":"2413:7:55"},{"name":"headStart","nativeSrc":"2422:9:55","nodeType":"YulIdentifier","src":"2422:9:55"}],"functionName":{"name":"sub","nativeSrc":"2409:3:55","nodeType":"YulIdentifier","src":"2409:3:55"},"nativeSrc":"2409:23:55","nodeType":"YulFunctionCall","src":"2409:23:55"},{"kind":"number","nativeSrc":"2434:2:55","nodeType":"YulLiteral","src":"2434:2:55","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"2405:3:55","nodeType":"YulIdentifier","src":"2405:3:55"},"nativeSrc":"2405:32:55","nodeType":"YulFunctionCall","src":"2405:32:55"},"nativeSrc":"2402:119:55","nodeType":"YulIf","src":"2402:119:55"},{"nativeSrc":"2531:153:55","nodeType":"YulBlock","src":"2531:153:55","statements":[{"nativeSrc":"2546:15:55","nodeType":"YulVariableDeclaration","src":"2546:15:55","value":{"kind":"number","nativeSrc":"2560:1:55","nodeType":"YulLiteral","src":"2560:1:55","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"2550:6:55","nodeType":"YulTypedName","src":"2550:6:55","type":""}]},{"nativeSrc":"2575:99:55","nodeType":"YulAssignment","src":"2575:99:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2646:9:55","nodeType":"YulIdentifier","src":"2646:9:55"},{"name":"offset","nativeSrc":"2657:6:55","nodeType":"YulIdentifier","src":"2657:6:55"}],"functionName":{"name":"add","nativeSrc":"2642:3:55","nodeType":"YulIdentifier","src":"2642:3:55"},"nativeSrc":"2642:22:55","nodeType":"YulFunctionCall","src":"2642:22:55"},{"name":"dataEnd","nativeSrc":"2666:7:55","nodeType":"YulIdentifier","src":"2666:7:55"}],"functionName":{"name":"abi_decode_t_contract$_TransparentUpgradeableProxy_$9186","nativeSrc":"2585:56:55","nodeType":"YulIdentifier","src":"2585:56:55"},"nativeSrc":"2585:89:55","nodeType":"YulFunctionCall","src":"2585:89:55"},"variableNames":[{"name":"value0","nativeSrc":"2575:6:55","nodeType":"YulIdentifier","src":"2575:6:55"}]}]},{"nativeSrc":"2694:118:55","nodeType":"YulBlock","src":"2694:118:55","statements":[{"nativeSrc":"2709:16:55","nodeType":"YulVariableDeclaration","src":"2709:16:55","value":{"kind":"number","nativeSrc":"2723:2:55","nodeType":"YulLiteral","src":"2723:2:55","type":"","value":"32"},"variables":[{"name":"offset","nativeSrc":"2713:6:55","nodeType":"YulTypedName","src":"2713:6:55","type":""}]},{"nativeSrc":"2739:63:55","nodeType":"YulAssignment","src":"2739:63:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2774:9:55","nodeType":"YulIdentifier","src":"2774:9:55"},{"name":"offset","nativeSrc":"2785:6:55","nodeType":"YulIdentifier","src":"2785:6:55"}],"functionName":{"name":"add","nativeSrc":"2770:3:55","nodeType":"YulIdentifier","src":"2770:3:55"},"nativeSrc":"2770:22:55","nodeType":"YulFunctionCall","src":"2770:22:55"},{"name":"dataEnd","nativeSrc":"2794:7:55","nodeType":"YulIdentifier","src":"2794:7:55"}],"functionName":{"name":"abi_decode_t_address","nativeSrc":"2749:20:55","nodeType":"YulIdentifier","src":"2749:20:55"},"nativeSrc":"2749:53:55","nodeType":"YulFunctionCall","src":"2749:53:55"},"variableNames":[{"name":"value1","nativeSrc":"2739:6:55","nodeType":"YulIdentifier","src":"2739:6:55"}]}]}]},"name":"abi_decode_tuple_t_contract$_TransparentUpgradeableProxy_$9186t_address","nativeSrc":"2273:546:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2354:9:55","nodeType":"YulTypedName","src":"2354:9:55","type":""},{"name":"dataEnd","nativeSrc":"2365:7:55","nodeType":"YulTypedName","src":"2365:7:55","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2377:6:55","nodeType":"YulTypedName","src":"2377:6:55","type":""},{"name":"value1","nativeSrc":"2385:6:55","nodeType":"YulTypedName","src":"2385:6:55","type":""}],"src":"2273:546:55"},{"body":{"nativeSrc":"2914:28:55","nodeType":"YulBlock","src":"2914:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2931:1:55","nodeType":"YulLiteral","src":"2931:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"2934:1:55","nodeType":"YulLiteral","src":"2934:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2924:6:55","nodeType":"YulIdentifier","src":"2924:6:55"},"nativeSrc":"2924:12:55","nodeType":"YulFunctionCall","src":"2924:12:55"},"nativeSrc":"2924:12:55","nodeType":"YulExpressionStatement","src":"2924:12:55"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nativeSrc":"2825:117:55","nodeType":"YulFunctionDefinition","src":"2825:117:55"},{"body":{"nativeSrc":"3037:28:55","nodeType":"YulBlock","src":"3037:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3054:1:55","nodeType":"YulLiteral","src":"3054:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"3057:1:55","nodeType":"YulLiteral","src":"3057:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3047:6:55","nodeType":"YulIdentifier","src":"3047:6:55"},"nativeSrc":"3047:12:55","nodeType":"YulFunctionCall","src":"3047:12:55"},"nativeSrc":"3047:12:55","nodeType":"YulExpressionStatement","src":"3047:12:55"}]},"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nativeSrc":"2948:117:55","nodeType":"YulFunctionDefinition","src":"2948:117:55"},{"body":{"nativeSrc":"3119:54:55","nodeType":"YulBlock","src":"3119:54:55","statements":[{"nativeSrc":"3129:38:55","nodeType":"YulAssignment","src":"3129:38:55","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3147:5:55","nodeType":"YulIdentifier","src":"3147:5:55"},{"kind":"number","nativeSrc":"3154:2:55","nodeType":"YulLiteral","src":"3154:2:55","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"3143:3:55","nodeType":"YulIdentifier","src":"3143:3:55"},"nativeSrc":"3143:14:55","nodeType":"YulFunctionCall","src":"3143:14:55"},{"arguments":[{"kind":"number","nativeSrc":"3163:2:55","nodeType":"YulLiteral","src":"3163:2:55","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"3159:3:55","nodeType":"YulIdentifier","src":"3159:3:55"},"nativeSrc":"3159:7:55","nodeType":"YulFunctionCall","src":"3159:7:55"}],"functionName":{"name":"and","nativeSrc":"3139:3:55","nodeType":"YulIdentifier","src":"3139:3:55"},"nativeSrc":"3139:28:55","nodeType":"YulFunctionCall","src":"3139:28:55"},"variableNames":[{"name":"result","nativeSrc":"3129:6:55","nodeType":"YulIdentifier","src":"3129:6:55"}]}]},"name":"round_up_to_mul_of_32","nativeSrc":"3071:102:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"3102:5:55","nodeType":"YulTypedName","src":"3102:5:55","type":""}],"returnVariables":[{"name":"result","nativeSrc":"3112:6:55","nodeType":"YulTypedName","src":"3112:6:55","type":""}],"src":"3071:102:55"},{"body":{"nativeSrc":"3207:152:55","nodeType":"YulBlock","src":"3207:152:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3224:1:55","nodeType":"YulLiteral","src":"3224:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"3227:77:55","nodeType":"YulLiteral","src":"3227:77:55","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"3217:6:55","nodeType":"YulIdentifier","src":"3217:6:55"},"nativeSrc":"3217:88:55","nodeType":"YulFunctionCall","src":"3217:88:55"},"nativeSrc":"3217:88:55","nodeType":"YulExpressionStatement","src":"3217:88:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3321:1:55","nodeType":"YulLiteral","src":"3321:1:55","type":"","value":"4"},{"kind":"number","nativeSrc":"3324:4:55","nodeType":"YulLiteral","src":"3324:4:55","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"3314:6:55","nodeType":"YulIdentifier","src":"3314:6:55"},"nativeSrc":"3314:15:55","nodeType":"YulFunctionCall","src":"3314:15:55"},"nativeSrc":"3314:15:55","nodeType":"YulExpressionStatement","src":"3314:15:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3345:1:55","nodeType":"YulLiteral","src":"3345:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"3348:4:55","nodeType":"YulLiteral","src":"3348:4:55","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"3338:6:55","nodeType":"YulIdentifier","src":"3338:6:55"},"nativeSrc":"3338:15:55","nodeType":"YulFunctionCall","src":"3338:15:55"},"nativeSrc":"3338:15:55","nodeType":"YulExpressionStatement","src":"3338:15:55"}]},"name":"panic_error_0x41","nativeSrc":"3179:180:55","nodeType":"YulFunctionDefinition","src":"3179:180:55"},{"body":{"nativeSrc":"3408:238:55","nodeType":"YulBlock","src":"3408:238:55","statements":[{"nativeSrc":"3418:58:55","nodeType":"YulVariableDeclaration","src":"3418:58:55","value":{"arguments":[{"name":"memPtr","nativeSrc":"3440:6:55","nodeType":"YulIdentifier","src":"3440:6:55"},{"arguments":[{"name":"size","nativeSrc":"3470:4:55","nodeType":"YulIdentifier","src":"3470:4:55"}],"functionName":{"name":"round_up_to_mul_of_32","nativeSrc":"3448:21:55","nodeType":"YulIdentifier","src":"3448:21:55"},"nativeSrc":"3448:27:55","nodeType":"YulFunctionCall","src":"3448:27:55"}],"functionName":{"name":"add","nativeSrc":"3436:3:55","nodeType":"YulIdentifier","src":"3436:3:55"},"nativeSrc":"3436:40:55","nodeType":"YulFunctionCall","src":"3436:40:55"},"variables":[{"name":"newFreePtr","nativeSrc":"3422:10:55","nodeType":"YulTypedName","src":"3422:10:55","type":""}]},{"body":{"nativeSrc":"3587:22:55","nodeType":"YulBlock","src":"3587:22:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"3589:16:55","nodeType":"YulIdentifier","src":"3589:16:55"},"nativeSrc":"3589:18:55","nodeType":"YulFunctionCall","src":"3589:18:55"},"nativeSrc":"3589:18:55","nodeType":"YulExpressionStatement","src":"3589:18:55"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"3530:10:55","nodeType":"YulIdentifier","src":"3530:10:55"},{"kind":"number","nativeSrc":"3542:18:55","nodeType":"YulLiteral","src":"3542:18:55","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3527:2:55","nodeType":"YulIdentifier","src":"3527:2:55"},"nativeSrc":"3527:34:55","nodeType":"YulFunctionCall","src":"3527:34:55"},{"arguments":[{"name":"newFreePtr","nativeSrc":"3566:10:55","nodeType":"YulIdentifier","src":"3566:10:55"},{"name":"memPtr","nativeSrc":"3578:6:55","nodeType":"YulIdentifier","src":"3578:6:55"}],"functionName":{"name":"lt","nativeSrc":"3563:2:55","nodeType":"YulIdentifier","src":"3563:2:55"},"nativeSrc":"3563:22:55","nodeType":"YulFunctionCall","src":"3563:22:55"}],"functionName":{"name":"or","nativeSrc":"3524:2:55","nodeType":"YulIdentifier","src":"3524:2:55"},"nativeSrc":"3524:62:55","nodeType":"YulFunctionCall","src":"3524:62:55"},"nativeSrc":"3521:88:55","nodeType":"YulIf","src":"3521:88:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3625:2:55","nodeType":"YulLiteral","src":"3625:2:55","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"3629:10:55","nodeType":"YulIdentifier","src":"3629:10:55"}],"functionName":{"name":"mstore","nativeSrc":"3618:6:55","nodeType":"YulIdentifier","src":"3618:6:55"},"nativeSrc":"3618:22:55","nodeType":"YulFunctionCall","src":"3618:22:55"},"nativeSrc":"3618:22:55","nodeType":"YulExpressionStatement","src":"3618:22:55"}]},"name":"finalize_allocation","nativeSrc":"3365:281:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"3394:6:55","nodeType":"YulTypedName","src":"3394:6:55","type":""},{"name":"size","nativeSrc":"3402:4:55","nodeType":"YulTypedName","src":"3402:4:55","type":""}],"src":"3365:281:55"},{"body":{"nativeSrc":"3693:88:55","nodeType":"YulBlock","src":"3693:88:55","statements":[{"nativeSrc":"3703:30:55","nodeType":"YulAssignment","src":"3703:30:55","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nativeSrc":"3713:18:55","nodeType":"YulIdentifier","src":"3713:18:55"},"nativeSrc":"3713:20:55","nodeType":"YulFunctionCall","src":"3713:20:55"},"variableNames":[{"name":"memPtr","nativeSrc":"3703:6:55","nodeType":"YulIdentifier","src":"3703:6:55"}]},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"3762:6:55","nodeType":"YulIdentifier","src":"3762:6:55"},{"name":"size","nativeSrc":"3770:4:55","nodeType":"YulIdentifier","src":"3770:4:55"}],"functionName":{"name":"finalize_allocation","nativeSrc":"3742:19:55","nodeType":"YulIdentifier","src":"3742:19:55"},"nativeSrc":"3742:33:55","nodeType":"YulFunctionCall","src":"3742:33:55"},"nativeSrc":"3742:33:55","nodeType":"YulExpressionStatement","src":"3742:33:55"}]},"name":"allocate_memory","nativeSrc":"3652:129:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nativeSrc":"3677:4:55","nodeType":"YulTypedName","src":"3677:4:55","type":""}],"returnVariables":[{"name":"memPtr","nativeSrc":"3686:6:55","nodeType":"YulTypedName","src":"3686:6:55","type":""}],"src":"3652:129:55"},{"body":{"nativeSrc":"3853:241:55","nodeType":"YulBlock","src":"3853:241:55","statements":[{"body":{"nativeSrc":"3958:22:55","nodeType":"YulBlock","src":"3958:22:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"3960:16:55","nodeType":"YulIdentifier","src":"3960:16:55"},"nativeSrc":"3960:18:55","nodeType":"YulFunctionCall","src":"3960:18:55"},"nativeSrc":"3960:18:55","nodeType":"YulExpressionStatement","src":"3960:18:55"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"3930:6:55","nodeType":"YulIdentifier","src":"3930:6:55"},{"kind":"number","nativeSrc":"3938:18:55","nodeType":"YulLiteral","src":"3938:18:55","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3927:2:55","nodeType":"YulIdentifier","src":"3927:2:55"},"nativeSrc":"3927:30:55","nodeType":"YulFunctionCall","src":"3927:30:55"},"nativeSrc":"3924:56:55","nodeType":"YulIf","src":"3924:56:55"},{"nativeSrc":"3990:37:55","nodeType":"YulAssignment","src":"3990:37:55","value":{"arguments":[{"name":"length","nativeSrc":"4020:6:55","nodeType":"YulIdentifier","src":"4020:6:55"}],"functionName":{"name":"round_up_to_mul_of_32","nativeSrc":"3998:21:55","nodeType":"YulIdentifier","src":"3998:21:55"},"nativeSrc":"3998:29:55","nodeType":"YulFunctionCall","src":"3998:29:55"},"variableNames":[{"name":"size","nativeSrc":"3990:4:55","nodeType":"YulIdentifier","src":"3990:4:55"}]},{"nativeSrc":"4064:23:55","nodeType":"YulAssignment","src":"4064:23:55","value":{"arguments":[{"name":"size","nativeSrc":"4076:4:55","nodeType":"YulIdentifier","src":"4076:4:55"},{"kind":"number","nativeSrc":"4082:4:55","nodeType":"YulLiteral","src":"4082:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4072:3:55","nodeType":"YulIdentifier","src":"4072:3:55"},"nativeSrc":"4072:15:55","nodeType":"YulFunctionCall","src":"4072:15:55"},"variableNames":[{"name":"size","nativeSrc":"4064:4:55","nodeType":"YulIdentifier","src":"4064:4:55"}]}]},"name":"array_allocation_size_t_bytes_memory_ptr","nativeSrc":"3787:307:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nativeSrc":"3837:6:55","nodeType":"YulTypedName","src":"3837:6:55","type":""}],"returnVariables":[{"name":"size","nativeSrc":"3848:4:55","nodeType":"YulTypedName","src":"3848:4:55","type":""}],"src":"3787:307:55"},{"body":{"nativeSrc":"4164:84:55","nodeType":"YulBlock","src":"4164:84:55","statements":[{"expression":{"arguments":[{"name":"dst","nativeSrc":"4188:3:55","nodeType":"YulIdentifier","src":"4188:3:55"},{"name":"src","nativeSrc":"4193:3:55","nodeType":"YulIdentifier","src":"4193:3:55"},{"name":"length","nativeSrc":"4198:6:55","nodeType":"YulIdentifier","src":"4198:6:55"}],"functionName":{"name":"calldatacopy","nativeSrc":"4175:12:55","nodeType":"YulIdentifier","src":"4175:12:55"},"nativeSrc":"4175:30:55","nodeType":"YulFunctionCall","src":"4175:30:55"},"nativeSrc":"4175:30:55","nodeType":"YulExpressionStatement","src":"4175:30:55"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"4225:3:55","nodeType":"YulIdentifier","src":"4225:3:55"},{"name":"length","nativeSrc":"4230:6:55","nodeType":"YulIdentifier","src":"4230:6:55"}],"functionName":{"name":"add","nativeSrc":"4221:3:55","nodeType":"YulIdentifier","src":"4221:3:55"},"nativeSrc":"4221:16:55","nodeType":"YulFunctionCall","src":"4221:16:55"},{"kind":"number","nativeSrc":"4239:1:55","nodeType":"YulLiteral","src":"4239:1:55","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"4214:6:55","nodeType":"YulIdentifier","src":"4214:6:55"},"nativeSrc":"4214:27:55","nodeType":"YulFunctionCall","src":"4214:27:55"},"nativeSrc":"4214:27:55","nodeType":"YulExpressionStatement","src":"4214:27:55"}]},"name":"copy_calldata_to_memory_with_cleanup","nativeSrc":"4100:148:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nativeSrc":"4146:3:55","nodeType":"YulTypedName","src":"4146:3:55","type":""},{"name":"dst","nativeSrc":"4151:3:55","nodeType":"YulTypedName","src":"4151:3:55","type":""},{"name":"length","nativeSrc":"4156:6:55","nodeType":"YulTypedName","src":"4156:6:55","type":""}],"src":"4100:148:55"},{"body":{"nativeSrc":"4337:340:55","nodeType":"YulBlock","src":"4337:340:55","statements":[{"nativeSrc":"4347:74:55","nodeType":"YulAssignment","src":"4347:74:55","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"4413:6:55","nodeType":"YulIdentifier","src":"4413:6:55"}],"functionName":{"name":"array_allocation_size_t_bytes_memory_ptr","nativeSrc":"4372:40:55","nodeType":"YulIdentifier","src":"4372:40:55"},"nativeSrc":"4372:48:55","nodeType":"YulFunctionCall","src":"4372:48:55"}],"functionName":{"name":"allocate_memory","nativeSrc":"4356:15:55","nodeType":"YulIdentifier","src":"4356:15:55"},"nativeSrc":"4356:65:55","nodeType":"YulFunctionCall","src":"4356:65:55"},"variableNames":[{"name":"array","nativeSrc":"4347:5:55","nodeType":"YulIdentifier","src":"4347:5:55"}]},{"expression":{"arguments":[{"name":"array","nativeSrc":"4437:5:55","nodeType":"YulIdentifier","src":"4437:5:55"},{"name":"length","nativeSrc":"4444:6:55","nodeType":"YulIdentifier","src":"4444:6:55"}],"functionName":{"name":"mstore","nativeSrc":"4430:6:55","nodeType":"YulIdentifier","src":"4430:6:55"},"nativeSrc":"4430:21:55","nodeType":"YulFunctionCall","src":"4430:21:55"},"nativeSrc":"4430:21:55","nodeType":"YulExpressionStatement","src":"4430:21:55"},{"nativeSrc":"4460:27:55","nodeType":"YulVariableDeclaration","src":"4460:27:55","value":{"arguments":[{"name":"array","nativeSrc":"4475:5:55","nodeType":"YulIdentifier","src":"4475:5:55"},{"kind":"number","nativeSrc":"4482:4:55","nodeType":"YulLiteral","src":"4482:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4471:3:55","nodeType":"YulIdentifier","src":"4471:3:55"},"nativeSrc":"4471:16:55","nodeType":"YulFunctionCall","src":"4471:16:55"},"variables":[{"name":"dst","nativeSrc":"4464:3:55","nodeType":"YulTypedName","src":"4464:3:55","type":""}]},{"body":{"nativeSrc":"4525:83:55","nodeType":"YulBlock","src":"4525:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nativeSrc":"4527:77:55","nodeType":"YulIdentifier","src":"4527:77:55"},"nativeSrc":"4527:79:55","nodeType":"YulFunctionCall","src":"4527:79:55"},"nativeSrc":"4527:79:55","nodeType":"YulExpressionStatement","src":"4527:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"4506:3:55","nodeType":"YulIdentifier","src":"4506:3:55"},{"name":"length","nativeSrc":"4511:6:55","nodeType":"YulIdentifier","src":"4511:6:55"}],"functionName":{"name":"add","nativeSrc":"4502:3:55","nodeType":"YulIdentifier","src":"4502:3:55"},"nativeSrc":"4502:16:55","nodeType":"YulFunctionCall","src":"4502:16:55"},{"name":"end","nativeSrc":"4520:3:55","nodeType":"YulIdentifier","src":"4520:3:55"}],"functionName":{"name":"gt","nativeSrc":"4499:2:55","nodeType":"YulIdentifier","src":"4499:2:55"},"nativeSrc":"4499:25:55","nodeType":"YulFunctionCall","src":"4499:25:55"},"nativeSrc":"4496:112:55","nodeType":"YulIf","src":"4496:112:55"},{"expression":{"arguments":[{"name":"src","nativeSrc":"4654:3:55","nodeType":"YulIdentifier","src":"4654:3:55"},{"name":"dst","nativeSrc":"4659:3:55","nodeType":"YulIdentifier","src":"4659:3:55"},{"name":"length","nativeSrc":"4664:6:55","nodeType":"YulIdentifier","src":"4664:6:55"}],"functionName":{"name":"copy_calldata_to_memory_with_cleanup","nativeSrc":"4617:36:55","nodeType":"YulIdentifier","src":"4617:36:55"},"nativeSrc":"4617:54:55","nodeType":"YulFunctionCall","src":"4617:54:55"},"nativeSrc":"4617:54:55","nodeType":"YulExpressionStatement","src":"4617:54:55"}]},"name":"abi_decode_available_length_t_bytes_memory_ptr","nativeSrc":"4254:423:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nativeSrc":"4310:3:55","nodeType":"YulTypedName","src":"4310:3:55","type":""},{"name":"length","nativeSrc":"4315:6:55","nodeType":"YulTypedName","src":"4315:6:55","type":""},{"name":"end","nativeSrc":"4323:3:55","nodeType":"YulTypedName","src":"4323:3:55","type":""}],"returnVariables":[{"name":"array","nativeSrc":"4331:5:55","nodeType":"YulTypedName","src":"4331:5:55","type":""}],"src":"4254:423:55"},{"body":{"nativeSrc":"4757:277:55","nodeType":"YulBlock","src":"4757:277:55","statements":[{"body":{"nativeSrc":"4806:83:55","nodeType":"YulBlock","src":"4806:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nativeSrc":"4808:77:55","nodeType":"YulIdentifier","src":"4808:77:55"},"nativeSrc":"4808:79:55","nodeType":"YulFunctionCall","src":"4808:79:55"},"nativeSrc":"4808:79:55","nodeType":"YulExpressionStatement","src":"4808:79:55"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"4785:6:55","nodeType":"YulIdentifier","src":"4785:6:55"},{"kind":"number","nativeSrc":"4793:4:55","nodeType":"YulLiteral","src":"4793:4:55","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"4781:3:55","nodeType":"YulIdentifier","src":"4781:3:55"},"nativeSrc":"4781:17:55","nodeType":"YulFunctionCall","src":"4781:17:55"},{"name":"end","nativeSrc":"4800:3:55","nodeType":"YulIdentifier","src":"4800:3:55"}],"functionName":{"name":"slt","nativeSrc":"4777:3:55","nodeType":"YulIdentifier","src":"4777:3:55"},"nativeSrc":"4777:27:55","nodeType":"YulFunctionCall","src":"4777:27:55"}],"functionName":{"name":"iszero","nativeSrc":"4770:6:55","nodeType":"YulIdentifier","src":"4770:6:55"},"nativeSrc":"4770:35:55","nodeType":"YulFunctionCall","src":"4770:35:55"},"nativeSrc":"4767:122:55","nodeType":"YulIf","src":"4767:122:55"},{"nativeSrc":"4898:34:55","nodeType":"YulVariableDeclaration","src":"4898:34:55","value":{"arguments":[{"name":"offset","nativeSrc":"4925:6:55","nodeType":"YulIdentifier","src":"4925:6:55"}],"functionName":{"name":"calldataload","nativeSrc":"4912:12:55","nodeType":"YulIdentifier","src":"4912:12:55"},"nativeSrc":"4912:20:55","nodeType":"YulFunctionCall","src":"4912:20:55"},"variables":[{"name":"length","nativeSrc":"4902:6:55","nodeType":"YulTypedName","src":"4902:6:55","type":""}]},{"nativeSrc":"4941:87:55","nodeType":"YulAssignment","src":"4941:87:55","value":{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"5001:6:55","nodeType":"YulIdentifier","src":"5001:6:55"},{"kind":"number","nativeSrc":"5009:4:55","nodeType":"YulLiteral","src":"5009:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4997:3:55","nodeType":"YulIdentifier","src":"4997:3:55"},"nativeSrc":"4997:17:55","nodeType":"YulFunctionCall","src":"4997:17:55"},{"name":"length","nativeSrc":"5016:6:55","nodeType":"YulIdentifier","src":"5016:6:55"},{"name":"end","nativeSrc":"5024:3:55","nodeType":"YulIdentifier","src":"5024:3:55"}],"functionName":{"name":"abi_decode_available_length_t_bytes_memory_ptr","nativeSrc":"4950:46:55","nodeType":"YulIdentifier","src":"4950:46:55"},"nativeSrc":"4950:78:55","nodeType":"YulFunctionCall","src":"4950:78:55"},"variableNames":[{"name":"array","nativeSrc":"4941:5:55","nodeType":"YulIdentifier","src":"4941:5:55"}]}]},"name":"abi_decode_t_bytes_memory_ptr","nativeSrc":"4696:338:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"4735:6:55","nodeType":"YulTypedName","src":"4735:6:55","type":""},{"name":"end","nativeSrc":"4743:3:55","nodeType":"YulTypedName","src":"4743:3:55","type":""}],"returnVariables":[{"name":"array","nativeSrc":"4751:5:55","nodeType":"YulTypedName","src":"4751:5:55","type":""}],"src":"4696:338:55"},{"body":{"nativeSrc":"5185:724:55","nodeType":"YulBlock","src":"5185:724:55","statements":[{"body":{"nativeSrc":"5231:83:55","nodeType":"YulBlock","src":"5231:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"5233:77:55","nodeType":"YulIdentifier","src":"5233:77:55"},"nativeSrc":"5233:79:55","nodeType":"YulFunctionCall","src":"5233:79:55"},"nativeSrc":"5233:79:55","nodeType":"YulExpressionStatement","src":"5233:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5206:7:55","nodeType":"YulIdentifier","src":"5206:7:55"},{"name":"headStart","nativeSrc":"5215:9:55","nodeType":"YulIdentifier","src":"5215:9:55"}],"functionName":{"name":"sub","nativeSrc":"5202:3:55","nodeType":"YulIdentifier","src":"5202:3:55"},"nativeSrc":"5202:23:55","nodeType":"YulFunctionCall","src":"5202:23:55"},{"kind":"number","nativeSrc":"5227:2:55","nodeType":"YulLiteral","src":"5227:2:55","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"5198:3:55","nodeType":"YulIdentifier","src":"5198:3:55"},"nativeSrc":"5198:32:55","nodeType":"YulFunctionCall","src":"5198:32:55"},"nativeSrc":"5195:119:55","nodeType":"YulIf","src":"5195:119:55"},{"nativeSrc":"5324:153:55","nodeType":"YulBlock","src":"5324:153:55","statements":[{"nativeSrc":"5339:15:55","nodeType":"YulVariableDeclaration","src":"5339:15:55","value":{"kind":"number","nativeSrc":"5353:1:55","nodeType":"YulLiteral","src":"5353:1:55","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"5343:6:55","nodeType":"YulTypedName","src":"5343:6:55","type":""}]},{"nativeSrc":"5368:99:55","nodeType":"YulAssignment","src":"5368:99:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5439:9:55","nodeType":"YulIdentifier","src":"5439:9:55"},{"name":"offset","nativeSrc":"5450:6:55","nodeType":"YulIdentifier","src":"5450:6:55"}],"functionName":{"name":"add","nativeSrc":"5435:3:55","nodeType":"YulIdentifier","src":"5435:3:55"},"nativeSrc":"5435:22:55","nodeType":"YulFunctionCall","src":"5435:22:55"},{"name":"dataEnd","nativeSrc":"5459:7:55","nodeType":"YulIdentifier","src":"5459:7:55"}],"functionName":{"name":"abi_decode_t_contract$_TransparentUpgradeableProxy_$9186","nativeSrc":"5378:56:55","nodeType":"YulIdentifier","src":"5378:56:55"},"nativeSrc":"5378:89:55","nodeType":"YulFunctionCall","src":"5378:89:55"},"variableNames":[{"name":"value0","nativeSrc":"5368:6:55","nodeType":"YulIdentifier","src":"5368:6:55"}]}]},{"nativeSrc":"5487:118:55","nodeType":"YulBlock","src":"5487:118:55","statements":[{"nativeSrc":"5502:16:55","nodeType":"YulVariableDeclaration","src":"5502:16:55","value":{"kind":"number","nativeSrc":"5516:2:55","nodeType":"YulLiteral","src":"5516:2:55","type":"","value":"32"},"variables":[{"name":"offset","nativeSrc":"5506:6:55","nodeType":"YulTypedName","src":"5506:6:55","type":""}]},{"nativeSrc":"5532:63:55","nodeType":"YulAssignment","src":"5532:63:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5567:9:55","nodeType":"YulIdentifier","src":"5567:9:55"},{"name":"offset","nativeSrc":"5578:6:55","nodeType":"YulIdentifier","src":"5578:6:55"}],"functionName":{"name":"add","nativeSrc":"5563:3:55","nodeType":"YulIdentifier","src":"5563:3:55"},"nativeSrc":"5563:22:55","nodeType":"YulFunctionCall","src":"5563:22:55"},{"name":"dataEnd","nativeSrc":"5587:7:55","nodeType":"YulIdentifier","src":"5587:7:55"}],"functionName":{"name":"abi_decode_t_address","nativeSrc":"5542:20:55","nodeType":"YulIdentifier","src":"5542:20:55"},"nativeSrc":"5542:53:55","nodeType":"YulFunctionCall","src":"5542:53:55"},"variableNames":[{"name":"value1","nativeSrc":"5532:6:55","nodeType":"YulIdentifier","src":"5532:6:55"}]}]},{"nativeSrc":"5615:287:55","nodeType":"YulBlock","src":"5615:287:55","statements":[{"nativeSrc":"5630:46:55","nodeType":"YulVariableDeclaration","src":"5630:46:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5661:9:55","nodeType":"YulIdentifier","src":"5661:9:55"},{"kind":"number","nativeSrc":"5672:2:55","nodeType":"YulLiteral","src":"5672:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5657:3:55","nodeType":"YulIdentifier","src":"5657:3:55"},"nativeSrc":"5657:18:55","nodeType":"YulFunctionCall","src":"5657:18:55"}],"functionName":{"name":"calldataload","nativeSrc":"5644:12:55","nodeType":"YulIdentifier","src":"5644:12:55"},"nativeSrc":"5644:32:55","nodeType":"YulFunctionCall","src":"5644:32:55"},"variables":[{"name":"offset","nativeSrc":"5634:6:55","nodeType":"YulTypedName","src":"5634:6:55","type":""}]},{"body":{"nativeSrc":"5723:83:55","nodeType":"YulBlock","src":"5723:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"5725:77:55","nodeType":"YulIdentifier","src":"5725:77:55"},"nativeSrc":"5725:79:55","nodeType":"YulFunctionCall","src":"5725:79:55"},"nativeSrc":"5725:79:55","nodeType":"YulExpressionStatement","src":"5725:79:55"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"5695:6:55","nodeType":"YulIdentifier","src":"5695:6:55"},{"kind":"number","nativeSrc":"5703:18:55","nodeType":"YulLiteral","src":"5703:18:55","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"5692:2:55","nodeType":"YulIdentifier","src":"5692:2:55"},"nativeSrc":"5692:30:55","nodeType":"YulFunctionCall","src":"5692:30:55"},"nativeSrc":"5689:117:55","nodeType":"YulIf","src":"5689:117:55"},{"nativeSrc":"5820:72:55","nodeType":"YulAssignment","src":"5820:72:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5864:9:55","nodeType":"YulIdentifier","src":"5864:9:55"},{"name":"offset","nativeSrc":"5875:6:55","nodeType":"YulIdentifier","src":"5875:6:55"}],"functionName":{"name":"add","nativeSrc":"5860:3:55","nodeType":"YulIdentifier","src":"5860:3:55"},"nativeSrc":"5860:22:55","nodeType":"YulFunctionCall","src":"5860:22:55"},{"name":"dataEnd","nativeSrc":"5884:7:55","nodeType":"YulIdentifier","src":"5884:7:55"}],"functionName":{"name":"abi_decode_t_bytes_memory_ptr","nativeSrc":"5830:29:55","nodeType":"YulIdentifier","src":"5830:29:55"},"nativeSrc":"5830:62:55","nodeType":"YulFunctionCall","src":"5830:62:55"},"variableNames":[{"name":"value2","nativeSrc":"5820:6:55","nodeType":"YulIdentifier","src":"5820:6:55"}]}]}]},"name":"abi_decode_tuple_t_contract$_TransparentUpgradeableProxy_$9186t_addresst_bytes_memory_ptr","nativeSrc":"5040:869:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5139:9:55","nodeType":"YulTypedName","src":"5139:9:55","type":""},{"name":"dataEnd","nativeSrc":"5150:7:55","nodeType":"YulTypedName","src":"5150:7:55","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5162:6:55","nodeType":"YulTypedName","src":"5162:6:55","type":""},{"name":"value1","nativeSrc":"5170:6:55","nodeType":"YulTypedName","src":"5170:6:55","type":""},{"name":"value2","nativeSrc":"5178:6:55","nodeType":"YulTypedName","src":"5178:6:55","type":""}],"src":"5040:869:55"},{"body":{"nativeSrc":"5981:263:55","nodeType":"YulBlock","src":"5981:263:55","statements":[{"body":{"nativeSrc":"6027:83:55","nodeType":"YulBlock","src":"6027:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"6029:77:55","nodeType":"YulIdentifier","src":"6029:77:55"},"nativeSrc":"6029:79:55","nodeType":"YulFunctionCall","src":"6029:79:55"},"nativeSrc":"6029:79:55","nodeType":"YulExpressionStatement","src":"6029:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6002:7:55","nodeType":"YulIdentifier","src":"6002:7:55"},{"name":"headStart","nativeSrc":"6011:9:55","nodeType":"YulIdentifier","src":"6011:9:55"}],"functionName":{"name":"sub","nativeSrc":"5998:3:55","nodeType":"YulIdentifier","src":"5998:3:55"},"nativeSrc":"5998:23:55","nodeType":"YulFunctionCall","src":"5998:23:55"},{"kind":"number","nativeSrc":"6023:2:55","nodeType":"YulLiteral","src":"6023:2:55","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"5994:3:55","nodeType":"YulIdentifier","src":"5994:3:55"},"nativeSrc":"5994:32:55","nodeType":"YulFunctionCall","src":"5994:32:55"},"nativeSrc":"5991:119:55","nodeType":"YulIf","src":"5991:119:55"},{"nativeSrc":"6120:117:55","nodeType":"YulBlock","src":"6120:117:55","statements":[{"nativeSrc":"6135:15:55","nodeType":"YulVariableDeclaration","src":"6135:15:55","value":{"kind":"number","nativeSrc":"6149:1:55","nodeType":"YulLiteral","src":"6149:1:55","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"6139:6:55","nodeType":"YulTypedName","src":"6139:6:55","type":""}]},{"nativeSrc":"6164:63:55","nodeType":"YulAssignment","src":"6164:63:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6199:9:55","nodeType":"YulIdentifier","src":"6199:9:55"},{"name":"offset","nativeSrc":"6210:6:55","nodeType":"YulIdentifier","src":"6210:6:55"}],"functionName":{"name":"add","nativeSrc":"6195:3:55","nodeType":"YulIdentifier","src":"6195:3:55"},"nativeSrc":"6195:22:55","nodeType":"YulFunctionCall","src":"6195:22:55"},{"name":"dataEnd","nativeSrc":"6219:7:55","nodeType":"YulIdentifier","src":"6219:7:55"}],"functionName":{"name":"abi_decode_t_address","nativeSrc":"6174:20:55","nodeType":"YulIdentifier","src":"6174:20:55"},"nativeSrc":"6174:53:55","nodeType":"YulFunctionCall","src":"6174:53:55"},"variableNames":[{"name":"value0","nativeSrc":"6164:6:55","nodeType":"YulIdentifier","src":"6164:6:55"}]}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"5915:329:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5951:9:55","nodeType":"YulTypedName","src":"5951:9:55","type":""},{"name":"dataEnd","nativeSrc":"5962:7:55","nodeType":"YulTypedName","src":"5962:7:55","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5974:6:55","nodeType":"YulTypedName","src":"5974:6:55","type":""}],"src":"5915:329:55"},{"body":{"nativeSrc":"6363:34:55","nodeType":"YulBlock","src":"6363:34:55","statements":[{"nativeSrc":"6373:18:55","nodeType":"YulAssignment","src":"6373:18:55","value":{"name":"pos","nativeSrc":"6388:3:55","nodeType":"YulIdentifier","src":"6388:3:55"},"variableNames":[{"name":"updated_pos","nativeSrc":"6373:11:55","nodeType":"YulIdentifier","src":"6373:11:55"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"6250:147:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"6335:3:55","nodeType":"YulTypedName","src":"6335:3:55","type":""},{"name":"length","nativeSrc":"6340:6:55","nodeType":"YulTypedName","src":"6340:6:55","type":""}],"returnVariables":[{"name":"updated_pos","nativeSrc":"6351:11:55","nodeType":"YulTypedName","src":"6351:11:55","type":""}],"src":"6250:147:55"},{"body":{"nativeSrc":"6509:108:55","nodeType":"YulBlock","src":"6509:108:55","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"6531:6:55","nodeType":"YulIdentifier","src":"6531:6:55"},{"kind":"number","nativeSrc":"6539:1:55","nodeType":"YulLiteral","src":"6539:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"6527:3:55","nodeType":"YulIdentifier","src":"6527:3:55"},"nativeSrc":"6527:14:55","nodeType":"YulFunctionCall","src":"6527:14:55"},{"kind":"number","nativeSrc":"6543:66:55","nodeType":"YulLiteral","src":"6543:66:55","type":"","value":"0x5c60da1b00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"mstore","nativeSrc":"6520:6:55","nodeType":"YulIdentifier","src":"6520:6:55"},"nativeSrc":"6520:90:55","nodeType":"YulFunctionCall","src":"6520:90:55"},"nativeSrc":"6520:90:55","nodeType":"YulExpressionStatement","src":"6520:90:55"}]},"name":"store_literal_in_memory_96a4c6be7716f5be15d118c16bd1d464cb27f01187d0b9218993a5d488a47c29","nativeSrc":"6403:214:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"6501:6:55","nodeType":"YulTypedName","src":"6501:6:55","type":""}],"src":"6403:214:55"},{"body":{"nativeSrc":"6786:235:55","nodeType":"YulBlock","src":"6786:235:55","statements":[{"nativeSrc":"6796:90:55","nodeType":"YulAssignment","src":"6796:90:55","value":{"arguments":[{"name":"pos","nativeSrc":"6879:3:55","nodeType":"YulIdentifier","src":"6879:3:55"},{"kind":"number","nativeSrc":"6884:1:55","nodeType":"YulLiteral","src":"6884:1:55","type":"","value":"4"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"6803:75:55","nodeType":"YulIdentifier","src":"6803:75:55"},"nativeSrc":"6803:83:55","nodeType":"YulFunctionCall","src":"6803:83:55"},"variableNames":[{"name":"pos","nativeSrc":"6796:3:55","nodeType":"YulIdentifier","src":"6796:3:55"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"6984:3:55","nodeType":"YulIdentifier","src":"6984:3:55"}],"functionName":{"name":"store_literal_in_memory_96a4c6be7716f5be15d118c16bd1d464cb27f01187d0b9218993a5d488a47c29","nativeSrc":"6895:88:55","nodeType":"YulIdentifier","src":"6895:88:55"},"nativeSrc":"6895:93:55","nodeType":"YulFunctionCall","src":"6895:93:55"},"nativeSrc":"6895:93:55","nodeType":"YulExpressionStatement","src":"6895:93:55"},{"nativeSrc":"6997:18:55","nodeType":"YulAssignment","src":"6997:18:55","value":{"arguments":[{"name":"pos","nativeSrc":"7008:3:55","nodeType":"YulIdentifier","src":"7008:3:55"},{"kind":"number","nativeSrc":"7013:1:55","nodeType":"YulLiteral","src":"7013:1:55","type":"","value":"4"}],"functionName":{"name":"add","nativeSrc":"7004:3:55","nodeType":"YulIdentifier","src":"7004:3:55"},"nativeSrc":"7004:11:55","nodeType":"YulFunctionCall","src":"7004:11:55"},"variableNames":[{"name":"end","nativeSrc":"6997:3:55","nodeType":"YulIdentifier","src":"6997:3:55"}]}]},"name":"abi_encode_t_stringliteral_96a4c6be7716f5be15d118c16bd1d464cb27f01187d0b9218993a5d488a47c29_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"6623:398:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"6774:3:55","nodeType":"YulTypedName","src":"6774:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"6782:3:55","nodeType":"YulTypedName","src":"6782:3:55","type":""}],"src":"6623:398:55"},{"body":{"nativeSrc":"7215:191:55","nodeType":"YulBlock","src":"7215:191:55","statements":[{"nativeSrc":"7226:154:55","nodeType":"YulAssignment","src":"7226:154:55","value":{"arguments":[{"name":"pos","nativeSrc":"7376:3:55","nodeType":"YulIdentifier","src":"7376:3:55"}],"functionName":{"name":"abi_encode_t_stringliteral_96a4c6be7716f5be15d118c16bd1d464cb27f01187d0b9218993a5d488a47c29_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"7233:141:55","nodeType":"YulIdentifier","src":"7233:141:55"},"nativeSrc":"7233:147:55","nodeType":"YulFunctionCall","src":"7233:147:55"},"variableNames":[{"name":"pos","nativeSrc":"7226:3:55","nodeType":"YulIdentifier","src":"7226:3:55"}]},{"nativeSrc":"7390:10:55","nodeType":"YulAssignment","src":"7390:10:55","value":{"name":"pos","nativeSrc":"7397:3:55","nodeType":"YulIdentifier","src":"7397:3:55"},"variableNames":[{"name":"end","nativeSrc":"7390:3:55","nodeType":"YulIdentifier","src":"7390:3:55"}]}]},"name":"abi_encode_tuple_packed_t_stringliteral_96a4c6be7716f5be15d118c16bd1d464cb27f01187d0b9218993a5d488a47c29__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"7027:379:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"7202:3:55","nodeType":"YulTypedName","src":"7202:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"7211:3:55","nodeType":"YulTypedName","src":"7211:3:55","type":""}],"src":"7027:379:55"},{"body":{"nativeSrc":"7463:87:55","nodeType":"YulBlock","src":"7463:87:55","statements":[{"body":{"nativeSrc":"7528:16:55","nodeType":"YulBlock","src":"7528:16:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7537:1:55","nodeType":"YulLiteral","src":"7537:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"7540:1:55","nodeType":"YulLiteral","src":"7540:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7530:6:55","nodeType":"YulIdentifier","src":"7530:6:55"},"nativeSrc":"7530:12:55","nodeType":"YulFunctionCall","src":"7530:12:55"},"nativeSrc":"7530:12:55","nodeType":"YulExpressionStatement","src":"7530:12:55"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"7486:5:55","nodeType":"YulIdentifier","src":"7486:5:55"},{"arguments":[{"name":"value","nativeSrc":"7519:5:55","nodeType":"YulIdentifier","src":"7519:5:55"}],"functionName":{"name":"cleanup_t_address_payable","nativeSrc":"7493:25:55","nodeType":"YulIdentifier","src":"7493:25:55"},"nativeSrc":"7493:32:55","nodeType":"YulFunctionCall","src":"7493:32:55"}],"functionName":{"name":"eq","nativeSrc":"7483:2:55","nodeType":"YulIdentifier","src":"7483:2:55"},"nativeSrc":"7483:43:55","nodeType":"YulFunctionCall","src":"7483:43:55"}],"functionName":{"name":"iszero","nativeSrc":"7476:6:55","nodeType":"YulIdentifier","src":"7476:6:55"},"nativeSrc":"7476:51:55","nodeType":"YulFunctionCall","src":"7476:51:55"},"nativeSrc":"7473:71:55","nodeType":"YulIf","src":"7473:71:55"}]},"name":"validator_revert_t_address_payable","nativeSrc":"7412:138:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"7456:5:55","nodeType":"YulTypedName","src":"7456:5:55","type":""}],"src":"7412:138:55"},{"body":{"nativeSrc":"7627:88:55","nodeType":"YulBlock","src":"7627:88:55","statements":[{"nativeSrc":"7637:22:55","nodeType":"YulAssignment","src":"7637:22:55","value":{"arguments":[{"name":"offset","nativeSrc":"7652:6:55","nodeType":"YulIdentifier","src":"7652:6:55"}],"functionName":{"name":"mload","nativeSrc":"7646:5:55","nodeType":"YulIdentifier","src":"7646:5:55"},"nativeSrc":"7646:13:55","nodeType":"YulFunctionCall","src":"7646:13:55"},"variableNames":[{"name":"value","nativeSrc":"7637:5:55","nodeType":"YulIdentifier","src":"7637:5:55"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"7703:5:55","nodeType":"YulIdentifier","src":"7703:5:55"}],"functionName":{"name":"validator_revert_t_address_payable","nativeSrc":"7668:34:55","nodeType":"YulIdentifier","src":"7668:34:55"},"nativeSrc":"7668:41:55","nodeType":"YulFunctionCall","src":"7668:41:55"},"nativeSrc":"7668:41:55","nodeType":"YulExpressionStatement","src":"7668:41:55"}]},"name":"abi_decode_t_address_payable_fromMemory","nativeSrc":"7556:159:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"7605:6:55","nodeType":"YulTypedName","src":"7605:6:55","type":""},{"name":"end","nativeSrc":"7613:3:55","nodeType":"YulTypedName","src":"7613:3:55","type":""}],"returnVariables":[{"name":"value","nativeSrc":"7621:5:55","nodeType":"YulTypedName","src":"7621:5:55","type":""}],"src":"7556:159:55"},{"body":{"nativeSrc":"7806:282:55","nodeType":"YulBlock","src":"7806:282:55","statements":[{"body":{"nativeSrc":"7852:83:55","nodeType":"YulBlock","src":"7852:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"7854:77:55","nodeType":"YulIdentifier","src":"7854:77:55"},"nativeSrc":"7854:79:55","nodeType":"YulFunctionCall","src":"7854:79:55"},"nativeSrc":"7854:79:55","nodeType":"YulExpressionStatement","src":"7854:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"7827:7:55","nodeType":"YulIdentifier","src":"7827:7:55"},{"name":"headStart","nativeSrc":"7836:9:55","nodeType":"YulIdentifier","src":"7836:9:55"}],"functionName":{"name":"sub","nativeSrc":"7823:3:55","nodeType":"YulIdentifier","src":"7823:3:55"},"nativeSrc":"7823:23:55","nodeType":"YulFunctionCall","src":"7823:23:55"},{"kind":"number","nativeSrc":"7848:2:55","nodeType":"YulLiteral","src":"7848:2:55","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"7819:3:55","nodeType":"YulIdentifier","src":"7819:3:55"},"nativeSrc":"7819:32:55","nodeType":"YulFunctionCall","src":"7819:32:55"},"nativeSrc":"7816:119:55","nodeType":"YulIf","src":"7816:119:55"},{"nativeSrc":"7945:136:55","nodeType":"YulBlock","src":"7945:136:55","statements":[{"nativeSrc":"7960:15:55","nodeType":"YulVariableDeclaration","src":"7960:15:55","value":{"kind":"number","nativeSrc":"7974:1:55","nodeType":"YulLiteral","src":"7974:1:55","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"7964:6:55","nodeType":"YulTypedName","src":"7964:6:55","type":""}]},{"nativeSrc":"7989:82:55","nodeType":"YulAssignment","src":"7989:82:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8043:9:55","nodeType":"YulIdentifier","src":"8043:9:55"},{"name":"offset","nativeSrc":"8054:6:55","nodeType":"YulIdentifier","src":"8054:6:55"}],"functionName":{"name":"add","nativeSrc":"8039:3:55","nodeType":"YulIdentifier","src":"8039:3:55"},"nativeSrc":"8039:22:55","nodeType":"YulFunctionCall","src":"8039:22:55"},{"name":"dataEnd","nativeSrc":"8063:7:55","nodeType":"YulIdentifier","src":"8063:7:55"}],"functionName":{"name":"abi_decode_t_address_payable_fromMemory","nativeSrc":"7999:39:55","nodeType":"YulIdentifier","src":"7999:39:55"},"nativeSrc":"7999:72:55","nodeType":"YulFunctionCall","src":"7999:72:55"},"variableNames":[{"name":"value0","nativeSrc":"7989:6:55","nodeType":"YulIdentifier","src":"7989:6:55"}]}]}]},"name":"abi_decode_tuple_t_address_payable_fromMemory","nativeSrc":"7721:367:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7776:9:55","nodeType":"YulTypedName","src":"7776:9:55","type":""},{"name":"dataEnd","nativeSrc":"7787:7:55","nodeType":"YulTypedName","src":"7787:7:55","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"7799:6:55","nodeType":"YulTypedName","src":"7799:6:55","type":""}],"src":"7721:367:55"},{"body":{"nativeSrc":"8190:73:55","nodeType":"YulBlock","src":"8190:73:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"8207:3:55","nodeType":"YulIdentifier","src":"8207:3:55"},{"name":"length","nativeSrc":"8212:6:55","nodeType":"YulIdentifier","src":"8212:6:55"}],"functionName":{"name":"mstore","nativeSrc":"8200:6:55","nodeType":"YulIdentifier","src":"8200:6:55"},"nativeSrc":"8200:19:55","nodeType":"YulFunctionCall","src":"8200:19:55"},"nativeSrc":"8200:19:55","nodeType":"YulExpressionStatement","src":"8200:19:55"},{"nativeSrc":"8228:29:55","nodeType":"YulAssignment","src":"8228:29:55","value":{"arguments":[{"name":"pos","nativeSrc":"8247:3:55","nodeType":"YulIdentifier","src":"8247:3:55"},{"kind":"number","nativeSrc":"8252:4:55","nodeType":"YulLiteral","src":"8252:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8243:3:55","nodeType":"YulIdentifier","src":"8243:3:55"},"nativeSrc":"8243:14:55","nodeType":"YulFunctionCall","src":"8243:14:55"},"variableNames":[{"name":"updated_pos","nativeSrc":"8228:11:55","nodeType":"YulIdentifier","src":"8228:11:55"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"8094:169:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"8162:3:55","nodeType":"YulTypedName","src":"8162:3:55","type":""},{"name":"length","nativeSrc":"8167:6:55","nodeType":"YulTypedName","src":"8167:6:55","type":""}],"returnVariables":[{"name":"updated_pos","nativeSrc":"8178:11:55","nodeType":"YulTypedName","src":"8178:11:55","type":""}],"src":"8094:169:55"},{"body":{"nativeSrc":"8375:76:55","nodeType":"YulBlock","src":"8375:76:55","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"8397:6:55","nodeType":"YulIdentifier","src":"8397:6:55"},{"kind":"number","nativeSrc":"8405:1:55","nodeType":"YulLiteral","src":"8405:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"8393:3:55","nodeType":"YulIdentifier","src":"8393:3:55"},"nativeSrc":"8393:14:55","nodeType":"YulFunctionCall","src":"8393:14:55"},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","kind":"string","nativeSrc":"8409:34:55","nodeType":"YulLiteral","src":"8409:34:55","type":"","value":"Ownable: caller is not the owner"}],"functionName":{"name":"mstore","nativeSrc":"8386:6:55","nodeType":"YulIdentifier","src":"8386:6:55"},"nativeSrc":"8386:58:55","nodeType":"YulFunctionCall","src":"8386:58:55"},"nativeSrc":"8386:58:55","nodeType":"YulExpressionStatement","src":"8386:58:55"}]},"name":"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","nativeSrc":"8269:182:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"8367:6:55","nodeType":"YulTypedName","src":"8367:6:55","type":""}],"src":"8269:182:55"},{"body":{"nativeSrc":"8603:220:55","nodeType":"YulBlock","src":"8603:220:55","statements":[{"nativeSrc":"8613:74:55","nodeType":"YulAssignment","src":"8613:74:55","value":{"arguments":[{"name":"pos","nativeSrc":"8679:3:55","nodeType":"YulIdentifier","src":"8679:3:55"},{"kind":"number","nativeSrc":"8684:2:55","nodeType":"YulLiteral","src":"8684:2:55","type":"","value":"32"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"8620:58:55","nodeType":"YulIdentifier","src":"8620:58:55"},"nativeSrc":"8620:67:55","nodeType":"YulFunctionCall","src":"8620:67:55"},"variableNames":[{"name":"pos","nativeSrc":"8613:3:55","nodeType":"YulIdentifier","src":"8613:3:55"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"8785:3:55","nodeType":"YulIdentifier","src":"8785:3:55"}],"functionName":{"name":"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","nativeSrc":"8696:88:55","nodeType":"YulIdentifier","src":"8696:88:55"},"nativeSrc":"8696:93:55","nodeType":"YulFunctionCall","src":"8696:93:55"},"nativeSrc":"8696:93:55","nodeType":"YulExpressionStatement","src":"8696:93:55"},{"nativeSrc":"8798:19:55","nodeType":"YulAssignment","src":"8798:19:55","value":{"arguments":[{"name":"pos","nativeSrc":"8809:3:55","nodeType":"YulIdentifier","src":"8809:3:55"},{"kind":"number","nativeSrc":"8814:2:55","nodeType":"YulLiteral","src":"8814:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8805:3:55","nodeType":"YulIdentifier","src":"8805:3:55"},"nativeSrc":"8805:12:55","nodeType":"YulFunctionCall","src":"8805:12:55"},"variableNames":[{"name":"end","nativeSrc":"8798:3:55","nodeType":"YulIdentifier","src":"8798:3:55"}]}]},"name":"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack","nativeSrc":"8457:366:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"8591:3:55","nodeType":"YulTypedName","src":"8591:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"8599:3:55","nodeType":"YulTypedName","src":"8599:3:55","type":""}],"src":"8457:366:55"},{"body":{"nativeSrc":"9000:248:55","nodeType":"YulBlock","src":"9000:248:55","statements":[{"nativeSrc":"9010:26:55","nodeType":"YulAssignment","src":"9010:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"9022:9:55","nodeType":"YulIdentifier","src":"9022:9:55"},{"kind":"number","nativeSrc":"9033:2:55","nodeType":"YulLiteral","src":"9033:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9018:3:55","nodeType":"YulIdentifier","src":"9018:3:55"},"nativeSrc":"9018:18:55","nodeType":"YulFunctionCall","src":"9018:18:55"},"variableNames":[{"name":"tail","nativeSrc":"9010:4:55","nodeType":"YulIdentifier","src":"9010:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9057:9:55","nodeType":"YulIdentifier","src":"9057:9:55"},{"kind":"number","nativeSrc":"9068:1:55","nodeType":"YulLiteral","src":"9068:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"9053:3:55","nodeType":"YulIdentifier","src":"9053:3:55"},"nativeSrc":"9053:17:55","nodeType":"YulFunctionCall","src":"9053:17:55"},{"arguments":[{"name":"tail","nativeSrc":"9076:4:55","nodeType":"YulIdentifier","src":"9076:4:55"},{"name":"headStart","nativeSrc":"9082:9:55","nodeType":"YulIdentifier","src":"9082:9:55"}],"functionName":{"name":"sub","nativeSrc":"9072:3:55","nodeType":"YulIdentifier","src":"9072:3:55"},"nativeSrc":"9072:20:55","nodeType":"YulFunctionCall","src":"9072:20:55"}],"functionName":{"name":"mstore","nativeSrc":"9046:6:55","nodeType":"YulIdentifier","src":"9046:6:55"},"nativeSrc":"9046:47:55","nodeType":"YulFunctionCall","src":"9046:47:55"},"nativeSrc":"9046:47:55","nodeType":"YulExpressionStatement","src":"9046:47:55"},{"nativeSrc":"9102:139:55","nodeType":"YulAssignment","src":"9102:139:55","value":{"arguments":[{"name":"tail","nativeSrc":"9236:4:55","nodeType":"YulIdentifier","src":"9236:4:55"}],"functionName":{"name":"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack","nativeSrc":"9110:124:55","nodeType":"YulIdentifier","src":"9110:124:55"},"nativeSrc":"9110:131:55","nodeType":"YulFunctionCall","src":"9110:131:55"},"variableNames":[{"name":"tail","nativeSrc":"9102:4:55","nodeType":"YulIdentifier","src":"9102:4:55"}]}]},"name":"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"8829:419:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8980:9:55","nodeType":"YulTypedName","src":"8980:9:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8995:4:55","nodeType":"YulTypedName","src":"8995:4:55","type":""}],"src":"8829:419:55"},{"body":{"nativeSrc":"9312:40:55","nodeType":"YulBlock","src":"9312:40:55","statements":[{"nativeSrc":"9323:22:55","nodeType":"YulAssignment","src":"9323:22:55","value":{"arguments":[{"name":"value","nativeSrc":"9339:5:55","nodeType":"YulIdentifier","src":"9339:5:55"}],"functionName":{"name":"mload","nativeSrc":"9333:5:55","nodeType":"YulIdentifier","src":"9333:5:55"},"nativeSrc":"9333:12:55","nodeType":"YulFunctionCall","src":"9333:12:55"},"variableNames":[{"name":"length","nativeSrc":"9323:6:55","nodeType":"YulIdentifier","src":"9323:6:55"}]}]},"name":"array_length_t_bytes_memory_ptr","nativeSrc":"9254:98:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"9295:5:55","nodeType":"YulTypedName","src":"9295:5:55","type":""}],"returnVariables":[{"name":"length","nativeSrc":"9305:6:55","nodeType":"YulTypedName","src":"9305:6:55","type":""}],"src":"9254:98:55"},{"body":{"nativeSrc":"9453:73:55","nodeType":"YulBlock","src":"9453:73:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"9470:3:55","nodeType":"YulIdentifier","src":"9470:3:55"},{"name":"length","nativeSrc":"9475:6:55","nodeType":"YulIdentifier","src":"9475:6:55"}],"functionName":{"name":"mstore","nativeSrc":"9463:6:55","nodeType":"YulIdentifier","src":"9463:6:55"},"nativeSrc":"9463:19:55","nodeType":"YulFunctionCall","src":"9463:19:55"},"nativeSrc":"9463:19:55","nodeType":"YulExpressionStatement","src":"9463:19:55"},{"nativeSrc":"9491:29:55","nodeType":"YulAssignment","src":"9491:29:55","value":{"arguments":[{"name":"pos","nativeSrc":"9510:3:55","nodeType":"YulIdentifier","src":"9510:3:55"},{"kind":"number","nativeSrc":"9515:4:55","nodeType":"YulLiteral","src":"9515:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"9506:3:55","nodeType":"YulIdentifier","src":"9506:3:55"},"nativeSrc":"9506:14:55","nodeType":"YulFunctionCall","src":"9506:14:55"},"variableNames":[{"name":"updated_pos","nativeSrc":"9491:11:55","nodeType":"YulIdentifier","src":"9491:11:55"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nativeSrc":"9358:168:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"9425:3:55","nodeType":"YulTypedName","src":"9425:3:55","type":""},{"name":"length","nativeSrc":"9430:6:55","nodeType":"YulTypedName","src":"9430:6:55","type":""}],"returnVariables":[{"name":"updated_pos","nativeSrc":"9441:11:55","nodeType":"YulTypedName","src":"9441:11:55","type":""}],"src":"9358:168:55"},{"body":{"nativeSrc":"9594:77:55","nodeType":"YulBlock","src":"9594:77:55","statements":[{"expression":{"arguments":[{"name":"dst","nativeSrc":"9611:3:55","nodeType":"YulIdentifier","src":"9611:3:55"},{"name":"src","nativeSrc":"9616:3:55","nodeType":"YulIdentifier","src":"9616:3:55"},{"name":"length","nativeSrc":"9621:6:55","nodeType":"YulIdentifier","src":"9621:6:55"}],"functionName":{"name":"mcopy","nativeSrc":"9605:5:55","nodeType":"YulIdentifier","src":"9605:5:55"},"nativeSrc":"9605:23:55","nodeType":"YulFunctionCall","src":"9605:23:55"},"nativeSrc":"9605:23:55","nodeType":"YulExpressionStatement","src":"9605:23:55"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"9648:3:55","nodeType":"YulIdentifier","src":"9648:3:55"},{"name":"length","nativeSrc":"9653:6:55","nodeType":"YulIdentifier","src":"9653:6:55"}],"functionName":{"name":"add","nativeSrc":"9644:3:55","nodeType":"YulIdentifier","src":"9644:3:55"},"nativeSrc":"9644:16:55","nodeType":"YulFunctionCall","src":"9644:16:55"},{"kind":"number","nativeSrc":"9662:1:55","nodeType":"YulLiteral","src":"9662:1:55","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"9637:6:55","nodeType":"YulIdentifier","src":"9637:6:55"},"nativeSrc":"9637:27:55","nodeType":"YulFunctionCall","src":"9637:27:55"},"nativeSrc":"9637:27:55","nodeType":"YulExpressionStatement","src":"9637:27:55"}]},"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"9532:139:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nativeSrc":"9576:3:55","nodeType":"YulTypedName","src":"9576:3:55","type":""},{"name":"dst","nativeSrc":"9581:3:55","nodeType":"YulTypedName","src":"9581:3:55","type":""},{"name":"length","nativeSrc":"9586:6:55","nodeType":"YulTypedName","src":"9586:6:55","type":""}],"src":"9532:139:55"},{"body":{"nativeSrc":"9767:283:55","nodeType":"YulBlock","src":"9767:283:55","statements":[{"nativeSrc":"9777:52:55","nodeType":"YulVariableDeclaration","src":"9777:52:55","value":{"arguments":[{"name":"value","nativeSrc":"9823:5:55","nodeType":"YulIdentifier","src":"9823:5:55"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nativeSrc":"9791:31:55","nodeType":"YulIdentifier","src":"9791:31:55"},"nativeSrc":"9791:38:55","nodeType":"YulFunctionCall","src":"9791:38:55"},"variables":[{"name":"length","nativeSrc":"9781:6:55","nodeType":"YulTypedName","src":"9781:6:55","type":""}]},{"nativeSrc":"9838:77:55","nodeType":"YulAssignment","src":"9838:77:55","value":{"arguments":[{"name":"pos","nativeSrc":"9903:3:55","nodeType":"YulIdentifier","src":"9903:3:55"},{"name":"length","nativeSrc":"9908:6:55","nodeType":"YulIdentifier","src":"9908:6:55"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nativeSrc":"9845:57:55","nodeType":"YulIdentifier","src":"9845:57:55"},"nativeSrc":"9845:70:55","nodeType":"YulFunctionCall","src":"9845:70:55"},"variableNames":[{"name":"pos","nativeSrc":"9838:3:55","nodeType":"YulIdentifier","src":"9838:3:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"9963:5:55","nodeType":"YulIdentifier","src":"9963:5:55"},{"kind":"number","nativeSrc":"9970:4:55","nodeType":"YulLiteral","src":"9970:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"9959:3:55","nodeType":"YulIdentifier","src":"9959:3:55"},"nativeSrc":"9959:16:55","nodeType":"YulFunctionCall","src":"9959:16:55"},{"name":"pos","nativeSrc":"9977:3:55","nodeType":"YulIdentifier","src":"9977:3:55"},{"name":"length","nativeSrc":"9982:6:55","nodeType":"YulIdentifier","src":"9982:6:55"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"9924:34:55","nodeType":"YulIdentifier","src":"9924:34:55"},"nativeSrc":"9924:65:55","nodeType":"YulFunctionCall","src":"9924:65:55"},"nativeSrc":"9924:65:55","nodeType":"YulExpressionStatement","src":"9924:65:55"},{"nativeSrc":"9998:46:55","nodeType":"YulAssignment","src":"9998:46:55","value":{"arguments":[{"name":"pos","nativeSrc":"10009:3:55","nodeType":"YulIdentifier","src":"10009:3:55"},{"arguments":[{"name":"length","nativeSrc":"10036:6:55","nodeType":"YulIdentifier","src":"10036:6:55"}],"functionName":{"name":"round_up_to_mul_of_32","nativeSrc":"10014:21:55","nodeType":"YulIdentifier","src":"10014:21:55"},"nativeSrc":"10014:29:55","nodeType":"YulFunctionCall","src":"10014:29:55"}],"functionName":{"name":"add","nativeSrc":"10005:3:55","nodeType":"YulIdentifier","src":"10005:3:55"},"nativeSrc":"10005:39:55","nodeType":"YulFunctionCall","src":"10005:39:55"},"variableNames":[{"name":"end","nativeSrc":"9998:3:55","nodeType":"YulIdentifier","src":"9998:3:55"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nativeSrc":"9677:373:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"9748:5:55","nodeType":"YulTypedName","src":"9748:5:55","type":""},{"name":"pos","nativeSrc":"9755:3:55","nodeType":"YulTypedName","src":"9755:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"9763:3:55","nodeType":"YulTypedName","src":"9763:3:55","type":""}],"src":"9677:373:55"},{"body":{"nativeSrc":"10200:275:55","nodeType":"YulBlock","src":"10200:275:55","statements":[{"nativeSrc":"10210:26:55","nodeType":"YulAssignment","src":"10210:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"10222:9:55","nodeType":"YulIdentifier","src":"10222:9:55"},{"kind":"number","nativeSrc":"10233:2:55","nodeType":"YulLiteral","src":"10233:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"10218:3:55","nodeType":"YulIdentifier","src":"10218:3:55"},"nativeSrc":"10218:18:55","nodeType":"YulFunctionCall","src":"10218:18:55"},"variableNames":[{"name":"tail","nativeSrc":"10210:4:55","nodeType":"YulIdentifier","src":"10210:4:55"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"10290:6:55","nodeType":"YulIdentifier","src":"10290:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"10303:9:55","nodeType":"YulIdentifier","src":"10303:9:55"},{"kind":"number","nativeSrc":"10314:1:55","nodeType":"YulLiteral","src":"10314:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"10299:3:55","nodeType":"YulIdentifier","src":"10299:3:55"},"nativeSrc":"10299:17:55","nodeType":"YulFunctionCall","src":"10299:17:55"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"10246:43:55","nodeType":"YulIdentifier","src":"10246:43:55"},"nativeSrc":"10246:71:55","nodeType":"YulFunctionCall","src":"10246:71:55"},"nativeSrc":"10246:71:55","nodeType":"YulExpressionStatement","src":"10246:71:55"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10338:9:55","nodeType":"YulIdentifier","src":"10338:9:55"},{"kind":"number","nativeSrc":"10349:2:55","nodeType":"YulLiteral","src":"10349:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"10334:3:55","nodeType":"YulIdentifier","src":"10334:3:55"},"nativeSrc":"10334:18:55","nodeType":"YulFunctionCall","src":"10334:18:55"},{"arguments":[{"name":"tail","nativeSrc":"10358:4:55","nodeType":"YulIdentifier","src":"10358:4:55"},{"name":"headStart","nativeSrc":"10364:9:55","nodeType":"YulIdentifier","src":"10364:9:55"}],"functionName":{"name":"sub","nativeSrc":"10354:3:55","nodeType":"YulIdentifier","src":"10354:3:55"},"nativeSrc":"10354:20:55","nodeType":"YulFunctionCall","src":"10354:20:55"}],"functionName":{"name":"mstore","nativeSrc":"10327:6:55","nodeType":"YulIdentifier","src":"10327:6:55"},"nativeSrc":"10327:48:55","nodeType":"YulFunctionCall","src":"10327:48:55"},"nativeSrc":"10327:48:55","nodeType":"YulExpressionStatement","src":"10327:48:55"},{"nativeSrc":"10384:84:55","nodeType":"YulAssignment","src":"10384:84:55","value":{"arguments":[{"name":"value1","nativeSrc":"10454:6:55","nodeType":"YulIdentifier","src":"10454:6:55"},{"name":"tail","nativeSrc":"10463:4:55","nodeType":"YulIdentifier","src":"10463:4:55"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nativeSrc":"10392:61:55","nodeType":"YulIdentifier","src":"10392:61:55"},"nativeSrc":"10392:76:55","nodeType":"YulFunctionCall","src":"10392:76:55"},"variableNames":[{"name":"tail","nativeSrc":"10384:4:55","nodeType":"YulIdentifier","src":"10384:4:55"}]}]},"name":"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"10056:419:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10164:9:55","nodeType":"YulTypedName","src":"10164:9:55","type":""},{"name":"value1","nativeSrc":"10176:6:55","nodeType":"YulTypedName","src":"10176:6:55","type":""},{"name":"value0","nativeSrc":"10184:6:55","nodeType":"YulTypedName","src":"10184:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"10195:4:55","nodeType":"YulTypedName","src":"10195:4:55","type":""}],"src":"10056:419:55"},{"body":{"nativeSrc":"10587:119:55","nodeType":"YulBlock","src":"10587:119:55","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"10609:6:55","nodeType":"YulIdentifier","src":"10609:6:55"},{"kind":"number","nativeSrc":"10617:1:55","nodeType":"YulLiteral","src":"10617:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"10605:3:55","nodeType":"YulIdentifier","src":"10605:3:55"},"nativeSrc":"10605:14:55","nodeType":"YulFunctionCall","src":"10605:14:55"},{"hexValue":"4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061","kind":"string","nativeSrc":"10621:34:55","nodeType":"YulLiteral","src":"10621:34:55","type":"","value":"Ownable: new owner is the zero a"}],"functionName":{"name":"mstore","nativeSrc":"10598:6:55","nodeType":"YulIdentifier","src":"10598:6:55"},"nativeSrc":"10598:58:55","nodeType":"YulFunctionCall","src":"10598:58:55"},"nativeSrc":"10598:58:55","nodeType":"YulExpressionStatement","src":"10598:58:55"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"10677:6:55","nodeType":"YulIdentifier","src":"10677:6:55"},{"kind":"number","nativeSrc":"10685:2:55","nodeType":"YulLiteral","src":"10685:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"10673:3:55","nodeType":"YulIdentifier","src":"10673:3:55"},"nativeSrc":"10673:15:55","nodeType":"YulFunctionCall","src":"10673:15:55"},{"hexValue":"646472657373","kind":"string","nativeSrc":"10690:8:55","nodeType":"YulLiteral","src":"10690:8:55","type":"","value":"ddress"}],"functionName":{"name":"mstore","nativeSrc":"10666:6:55","nodeType":"YulIdentifier","src":"10666:6:55"},"nativeSrc":"10666:33:55","nodeType":"YulFunctionCall","src":"10666:33:55"},"nativeSrc":"10666:33:55","nodeType":"YulExpressionStatement","src":"10666:33:55"}]},"name":"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","nativeSrc":"10481:225:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"10579:6:55","nodeType":"YulTypedName","src":"10579:6:55","type":""}],"src":"10481:225:55"},{"body":{"nativeSrc":"10858:220:55","nodeType":"YulBlock","src":"10858:220:55","statements":[{"nativeSrc":"10868:74:55","nodeType":"YulAssignment","src":"10868:74:55","value":{"arguments":[{"name":"pos","nativeSrc":"10934:3:55","nodeType":"YulIdentifier","src":"10934:3:55"},{"kind":"number","nativeSrc":"10939:2:55","nodeType":"YulLiteral","src":"10939:2:55","type":"","value":"38"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"10875:58:55","nodeType":"YulIdentifier","src":"10875:58:55"},"nativeSrc":"10875:67:55","nodeType":"YulFunctionCall","src":"10875:67:55"},"variableNames":[{"name":"pos","nativeSrc":"10868:3:55","nodeType":"YulIdentifier","src":"10868:3:55"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"11040:3:55","nodeType":"YulIdentifier","src":"11040:3:55"}],"functionName":{"name":"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","nativeSrc":"10951:88:55","nodeType":"YulIdentifier","src":"10951:88:55"},"nativeSrc":"10951:93:55","nodeType":"YulFunctionCall","src":"10951:93:55"},"nativeSrc":"10951:93:55","nodeType":"YulExpressionStatement","src":"10951:93:55"},{"nativeSrc":"11053:19:55","nodeType":"YulAssignment","src":"11053:19:55","value":{"arguments":[{"name":"pos","nativeSrc":"11064:3:55","nodeType":"YulIdentifier","src":"11064:3:55"},{"kind":"number","nativeSrc":"11069:2:55","nodeType":"YulLiteral","src":"11069:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"11060:3:55","nodeType":"YulIdentifier","src":"11060:3:55"},"nativeSrc":"11060:12:55","nodeType":"YulFunctionCall","src":"11060:12:55"},"variableNames":[{"name":"end","nativeSrc":"11053:3:55","nodeType":"YulIdentifier","src":"11053:3:55"}]}]},"name":"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack","nativeSrc":"10712:366:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"10846:3:55","nodeType":"YulTypedName","src":"10846:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"10854:3:55","nodeType":"YulTypedName","src":"10854:3:55","type":""}],"src":"10712:366:55"},{"body":{"nativeSrc":"11255:248:55","nodeType":"YulBlock","src":"11255:248:55","statements":[{"nativeSrc":"11265:26:55","nodeType":"YulAssignment","src":"11265:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"11277:9:55","nodeType":"YulIdentifier","src":"11277:9:55"},{"kind":"number","nativeSrc":"11288:2:55","nodeType":"YulLiteral","src":"11288:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11273:3:55","nodeType":"YulIdentifier","src":"11273:3:55"},"nativeSrc":"11273:18:55","nodeType":"YulFunctionCall","src":"11273:18:55"},"variableNames":[{"name":"tail","nativeSrc":"11265:4:55","nodeType":"YulIdentifier","src":"11265:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11312:9:55","nodeType":"YulIdentifier","src":"11312:9:55"},{"kind":"number","nativeSrc":"11323:1:55","nodeType":"YulLiteral","src":"11323:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"11308:3:55","nodeType":"YulIdentifier","src":"11308:3:55"},"nativeSrc":"11308:17:55","nodeType":"YulFunctionCall","src":"11308:17:55"},{"arguments":[{"name":"tail","nativeSrc":"11331:4:55","nodeType":"YulIdentifier","src":"11331:4:55"},{"name":"headStart","nativeSrc":"11337:9:55","nodeType":"YulIdentifier","src":"11337:9:55"}],"functionName":{"name":"sub","nativeSrc":"11327:3:55","nodeType":"YulIdentifier","src":"11327:3:55"},"nativeSrc":"11327:20:55","nodeType":"YulFunctionCall","src":"11327:20:55"}],"functionName":{"name":"mstore","nativeSrc":"11301:6:55","nodeType":"YulIdentifier","src":"11301:6:55"},"nativeSrc":"11301:47:55","nodeType":"YulFunctionCall","src":"11301:47:55"},"nativeSrc":"11301:47:55","nodeType":"YulExpressionStatement","src":"11301:47:55"},{"nativeSrc":"11357:139:55","nodeType":"YulAssignment","src":"11357:139:55","value":{"arguments":[{"name":"tail","nativeSrc":"11491:4:55","nodeType":"YulIdentifier","src":"11491:4:55"}],"functionName":{"name":"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack","nativeSrc":"11365:124:55","nodeType":"YulIdentifier","src":"11365:124:55"},"nativeSrc":"11365:131:55","nodeType":"YulFunctionCall","src":"11365:131:55"},"variableNames":[{"name":"tail","nativeSrc":"11357:4:55","nodeType":"YulIdentifier","src":"11357:4:55"}]}]},"name":"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"11084:419:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11235:9:55","nodeType":"YulTypedName","src":"11235:9:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"11250:4:55","nodeType":"YulTypedName","src":"11250:4:55","type":""}],"src":"11084:419:55"},{"body":{"nativeSrc":"11615:108:55","nodeType":"YulBlock","src":"11615:108:55","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"11637:6:55","nodeType":"YulIdentifier","src":"11637:6:55"},{"kind":"number","nativeSrc":"11645:1:55","nodeType":"YulLiteral","src":"11645:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"11633:3:55","nodeType":"YulIdentifier","src":"11633:3:55"},"nativeSrc":"11633:14:55","nodeType":"YulFunctionCall","src":"11633:14:55"},{"kind":"number","nativeSrc":"11649:66:55","nodeType":"YulLiteral","src":"11649:66:55","type":"","value":"0xf851a44000000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"mstore","nativeSrc":"11626:6:55","nodeType":"YulIdentifier","src":"11626:6:55"},"nativeSrc":"11626:90:55","nodeType":"YulFunctionCall","src":"11626:90:55"},"nativeSrc":"11626:90:55","nodeType":"YulExpressionStatement","src":"11626:90:55"}]},"name":"store_literal_in_memory_cb23cf6c353ccb16f0d92c8e6b5c5b425654e65dd07e2d295b394de4cf15afb7","nativeSrc":"11509:214:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"11607:6:55","nodeType":"YulTypedName","src":"11607:6:55","type":""}],"src":"11509:214:55"},{"body":{"nativeSrc":"11892:235:55","nodeType":"YulBlock","src":"11892:235:55","statements":[{"nativeSrc":"11902:90:55","nodeType":"YulAssignment","src":"11902:90:55","value":{"arguments":[{"name":"pos","nativeSrc":"11985:3:55","nodeType":"YulIdentifier","src":"11985:3:55"},{"kind":"number","nativeSrc":"11990:1:55","nodeType":"YulLiteral","src":"11990:1:55","type":"","value":"4"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"11909:75:55","nodeType":"YulIdentifier","src":"11909:75:55"},"nativeSrc":"11909:83:55","nodeType":"YulFunctionCall","src":"11909:83:55"},"variableNames":[{"name":"pos","nativeSrc":"11902:3:55","nodeType":"YulIdentifier","src":"11902:3:55"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"12090:3:55","nodeType":"YulIdentifier","src":"12090:3:55"}],"functionName":{"name":"store_literal_in_memory_cb23cf6c353ccb16f0d92c8e6b5c5b425654e65dd07e2d295b394de4cf15afb7","nativeSrc":"12001:88:55","nodeType":"YulIdentifier","src":"12001:88:55"},"nativeSrc":"12001:93:55","nodeType":"YulFunctionCall","src":"12001:93:55"},"nativeSrc":"12001:93:55","nodeType":"YulExpressionStatement","src":"12001:93:55"},{"nativeSrc":"12103:18:55","nodeType":"YulAssignment","src":"12103:18:55","value":{"arguments":[{"name":"pos","nativeSrc":"12114:3:55","nodeType":"YulIdentifier","src":"12114:3:55"},{"kind":"number","nativeSrc":"12119:1:55","nodeType":"YulLiteral","src":"12119:1:55","type":"","value":"4"}],"functionName":{"name":"add","nativeSrc":"12110:3:55","nodeType":"YulIdentifier","src":"12110:3:55"},"nativeSrc":"12110:11:55","nodeType":"YulFunctionCall","src":"12110:11:55"},"variableNames":[{"name":"end","nativeSrc":"12103:3:55","nodeType":"YulIdentifier","src":"12103:3:55"}]}]},"name":"abi_encode_t_stringliteral_cb23cf6c353ccb16f0d92c8e6b5c5b425654e65dd07e2d295b394de4cf15afb7_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"11729:398:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"11880:3:55","nodeType":"YulTypedName","src":"11880:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"11888:3:55","nodeType":"YulTypedName","src":"11888:3:55","type":""}],"src":"11729:398:55"},{"body":{"nativeSrc":"12321:191:55","nodeType":"YulBlock","src":"12321:191:55","statements":[{"nativeSrc":"12332:154:55","nodeType":"YulAssignment","src":"12332:154:55","value":{"arguments":[{"name":"pos","nativeSrc":"12482:3:55","nodeType":"YulIdentifier","src":"12482:3:55"}],"functionName":{"name":"abi_encode_t_stringliteral_cb23cf6c353ccb16f0d92c8e6b5c5b425654e65dd07e2d295b394de4cf15afb7_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"12339:141:55","nodeType":"YulIdentifier","src":"12339:141:55"},"nativeSrc":"12339:147:55","nodeType":"YulFunctionCall","src":"12339:147:55"},"variableNames":[{"name":"pos","nativeSrc":"12332:3:55","nodeType":"YulIdentifier","src":"12332:3:55"}]},{"nativeSrc":"12496:10:55","nodeType":"YulAssignment","src":"12496:10:55","value":{"name":"pos","nativeSrc":"12503:3:55","nodeType":"YulIdentifier","src":"12503:3:55"},"variableNames":[{"name":"end","nativeSrc":"12496:3:55","nodeType":"YulIdentifier","src":"12496:3:55"}]}]},"name":"abi_encode_tuple_packed_t_stringliteral_cb23cf6c353ccb16f0d92c8e6b5c5b425654e65dd07e2d295b394de4cf15afb7__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"12133:379:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"12308:3:55","nodeType":"YulTypedName","src":"12308:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"12317:3:55","nodeType":"YulTypedName","src":"12317:3:55","type":""}],"src":"12133:379:55"}]},"contents":"{\n\n    function allocate_unbounded() -> memPtr {\n        memPtr := mload(64)\n    }\n\n    function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n        revert(0, 0)\n    }\n\n    function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n        revert(0, 0)\n    }\n\n    function cleanup_t_uint160(value) -> cleaned {\n        cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n    }\n\n    function cleanup_t_address_payable(value) -> cleaned {\n        cleaned := cleanup_t_uint160(value)\n    }\n\n    function cleanup_t_contract$_TransparentUpgradeableProxy_$9186(value) -> cleaned {\n        cleaned := cleanup_t_address_payable(value)\n    }\n\n    function validator_revert_t_contract$_TransparentUpgradeableProxy_$9186(value) {\n        if iszero(eq(value, cleanup_t_contract$_TransparentUpgradeableProxy_$9186(value))) { revert(0, 0) }\n    }\n\n    function abi_decode_t_contract$_TransparentUpgradeableProxy_$9186(offset, end) -> value {\n        value := calldataload(offset)\n        validator_revert_t_contract$_TransparentUpgradeableProxy_$9186(value)\n    }\n\n    function abi_decode_tuple_t_contract$_TransparentUpgradeableProxy_$9186(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_contract$_TransparentUpgradeableProxy_$9186(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function cleanup_t_address(value) -> cleaned {\n        cleaned := cleanup_t_uint160(value)\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 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 abi_decode_tuple_t_contract$_TransparentUpgradeableProxy_$9186t_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_contract$_TransparentUpgradeableProxy_$9186(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 revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n        revert(0, 0)\n    }\n\n    function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n        revert(0, 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 panic_error_0x41() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n\n    function finalize_allocation(memPtr, size) {\n        let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n        // protect against overflow\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n\n    function allocate_memory(size) -> memPtr {\n        memPtr := allocate_unbounded()\n        finalize_allocation(memPtr, size)\n    }\n\n    function array_allocation_size_t_bytes_memory_ptr(length) -> size {\n        // Make sure we can allocate memory without overflow\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n        size := round_up_to_mul_of_32(length)\n\n        // add length slot\n        size := add(size, 0x20)\n\n    }\n\n    function copy_calldata_to_memory_with_cleanup(src, dst, length) {\n\n        calldatacopy(dst, src, length)\n        mstore(add(dst, length), 0)\n\n    }\n\n    function abi_decode_available_length_t_bytes_memory_ptr(src, length, end) -> array {\n        array := allocate_memory(array_allocation_size_t_bytes_memory_ptr(length))\n        mstore(array, length)\n        let dst := add(array, 0x20)\n        if gt(add(src, length), end) { revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n        copy_calldata_to_memory_with_cleanup(src, dst, length)\n    }\n\n    // bytes\n    function abi_decode_t_bytes_memory_ptr(offset, end) -> array {\n        if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n        let length := calldataload(offset)\n        array := abi_decode_available_length_t_bytes_memory_ptr(add(offset, 0x20), length, end)\n    }\n\n    function abi_decode_tuple_t_contract$_TransparentUpgradeableProxy_$9186t_addresst_bytes_memory_ptr(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_contract$_TransparentUpgradeableProxy_$9186(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 := calldataload(add(headStart, 64))\n            if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n            value2 := abi_decode_t_bytes_memory_ptr(add(headStart, offset), dataEnd)\n        }\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 array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n        updated_pos := pos\n    }\n\n    function store_literal_in_memory_96a4c6be7716f5be15d118c16bd1d464cb27f01187d0b9218993a5d488a47c29(memPtr) {\n\n        mstore(add(memPtr, 0), 0x5c60da1b00000000000000000000000000000000000000000000000000000000)\n\n    }\n\n    function abi_encode_t_stringliteral_96a4c6be7716f5be15d118c16bd1d464cb27f01187d0b9218993a5d488a47c29_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, 4)\n        store_literal_in_memory_96a4c6be7716f5be15d118c16bd1d464cb27f01187d0b9218993a5d488a47c29(pos)\n        end := add(pos, 4)\n    }\n\n    function abi_encode_tuple_packed_t_stringliteral_96a4c6be7716f5be15d118c16bd1d464cb27f01187d0b9218993a5d488a47c29__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos ) -> end {\n\n        pos := abi_encode_t_stringliteral_96a4c6be7716f5be15d118c16bd1d464cb27f01187d0b9218993a5d488a47c29_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n        end := pos\n    }\n\n    function validator_revert_t_address_payable(value) {\n        if iszero(eq(value, cleanup_t_address_payable(value))) { revert(0, 0) }\n    }\n\n    function abi_decode_t_address_payable_fromMemory(offset, end) -> value {\n        value := mload(offset)\n        validator_revert_t_address_payable(value)\n    }\n\n    function abi_decode_tuple_t_address_payable_fromMemory(headStart, dataEnd) -> value0 {\n        if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_address_payable_fromMemory(add(headStart, offset), dataEnd)\n        }\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 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 array_length_t_bytes_memory_ptr(value) -> length {\n\n        length := mload(value)\n\n    }\n\n    function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n        mstore(pos, length)\n        updated_pos := add(pos, 0x20)\n    }\n\n    function copy_memory_to_memory_with_cleanup(src, dst, length) {\n\n        mcopy(dst, src, length)\n        mstore(add(dst, length), 0)\n\n    }\n\n    function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value, pos) -> end {\n        let length := array_length_t_bytes_memory_ptr(value)\n        pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n        copy_memory_to_memory_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_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart , value1, value0) -> tail {\n        tail := add(headStart, 64)\n\n        abi_encode_t_address_to_t_address_fromStack(value0,  add(headStart, 0))\n\n        mstore(add(headStart, 32), sub(tail, headStart))\n        tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value1,  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_cb23cf6c353ccb16f0d92c8e6b5c5b425654e65dd07e2d295b394de4cf15afb7(memPtr) {\n\n        mstore(add(memPtr, 0), 0xf851a44000000000000000000000000000000000000000000000000000000000)\n\n    }\n\n    function abi_encode_t_stringliteral_cb23cf6c353ccb16f0d92c8e6b5c5b425654e65dd07e2d295b394de4cf15afb7_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, 4)\n        store_literal_in_memory_cb23cf6c353ccb16f0d92c8e6b5c5b425654e65dd07e2d295b394de4cf15afb7(pos)\n        end := add(pos, 4)\n    }\n\n    function abi_encode_tuple_packed_t_stringliteral_cb23cf6c353ccb16f0d92c8e6b5c5b425654e65dd07e2d295b394de4cf15afb7__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos ) -> end {\n\n        pos := abi_encode_t_stringliteral_cb23cf6c353ccb16f0d92c8e6b5c5b425654e65dd07e2d295b394de4cf15afb7_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n        end := pos\n    }\n\n}\n","id":55,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405260043610610079575f3560e01c80639623609d1161004c5780639623609d1461010357806399a88ec414610116578063f2fde38b14610135578063f3b7dead14610154575f5ffd5b8063204e1c7a1461007d578063715018a6146100b25780637eff275e146100c85780638da5cb5b146100e7575b5f5ffd5b348015610088575f5ffd5b5061009c610097366004610494565b610173565b6040516100a991906104c1565b60405180910390f35b3480156100bd575f5ffd5b506100c66101f3565b005b3480156100d3575f5ffd5b506100c66100e23660046104e3565b610230565b3480156100f2575f5ffd5b505f546001600160a01b031661009c565b6100c661011136600461060f565b6102b6565b348015610121575f5ffd5b506100c66101303660046104e3565b610342565b348015610140575f5ffd5b506100c661014f366004610675565b610397565b34801561015f575f5ffd5b5061009c61016e366004610494565b6103f2565b5f5f5f836001600160a01b031660405161018c906106a6565b5f60405180830381855afa9150503d805f81146101c4576040519150601f19603f3d011682016040523d82523d5f602084013e6101c9565b606091505b5091509150816101d7575f5ffd5b808060200190518101906101eb91906106bb565b949350505050565b5f546001600160a01b031633146102255760405162461bcd60e51b815260040161021c906106d9565b60405180910390fd5b61022e5f61040b565b565b5f546001600160a01b031633146102595760405162461bcd60e51b815260040161021c906106d9565b6040516308f2839760e41b81526001600160a01b03831690638f283970906102859084906004016104c1565b5f604051808303815f87803b15801561029c575f5ffd5b505af11580156102ae573d5f5f3e3d5ffd5b505050505050565b5f546001600160a01b031633146102df5760405162461bcd60e51b815260040161021c906106d9565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061030f908690869060040161074f565b5f604051808303818588803b158015610326575f5ffd5b505af1158015610338573d5f5f3e3d5ffd5b5050505050505050565b5f546001600160a01b0316331461036b5760405162461bcd60e51b815260040161021c906106d9565b604051631b2ce7f360e11b81526001600160a01b03831690633659cfe6906102859084906004016104c1565b5f546001600160a01b031633146103c05760405162461bcd60e51b815260040161021c906106d9565b6001600160a01b0381166103e65760405162461bcd60e51b815260040161021c9061076f565b6103ef8161040b565b50565b5f5f5f836001600160a01b031660405161018c906107c9565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f6001600160a01b0382165b92915050565b5f6104668261045a565b61047f8161046c565b81146103ef575f5ffd5b803561046681610476565b5f602082840312156104a7576104a75f5ffd5b5f6101eb8484610489565b6104bb8161045a565b82525050565b6020810161046682846104b2565b61047f8161045a565b8035610466816104cf565b5f5f604083850312156104f7576104f75f5ffd5b5f6105028585610489565b9250506020610513858286016104d8565b9150509250929050565b634e487b7160e01b5f52604160045260245ffd5b601f19601f830116810181811067ffffffffffffffff821117156105575761055761051d565b6040525050565b5f61056860405190565b90506105748282610531565b919050565b5f67ffffffffffffffff8211156105925761059261051d565b601f19601f83011660200192915050565b82818337505f910152565b5f6105c06105bb84610579565b61055e565b9050828152602081018484840111156105da576105da5f5ffd5b6105e58482856105a3565b509392505050565b5f82601f8301126105ff576105ff5f5ffd5b81356101eb8482602086016105ae565b5f5f5f60608486031215610624576106245f5ffd5b5f61062f8686610489565b9350506020610640868287016104d8565b925050604084013567ffffffffffffffff81111561065f5761065f5f5ffd5b61066b868287016105ed565b9150509250925092565b5f60208284031215610688576106885f5ffd5b5f6101eb84846104d8565b635c60da1b60e01b81525f5b5060040190565b5f61046682610693565b8051610466816104cf565b5f602082840312156106ce576106ce5f5ffd5b5f6101eb84846106b0565b60208082528181019081527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604083015260608201610466565b8281835e505f910152565b5f610727825190565b80845260208401935061073e818560208601610713565b601f01601f19169290920192915050565b6040810161075d82856104b2565b81810360208301526101eb818461071e565b6020808252810161046681602681527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160208201526564647265737360d01b604082015260600190565b6303e1469160e61b81525f61069f565b5f610466826107b956fea2646970667358221220630128412b3e5f6e5ac3b29e782f4c22d0d92e1e5351878d452612894ba2239164736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x79 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9623609D GT PUSH2 0x4C JUMPI DUP1 PUSH4 0x9623609D EQ PUSH2 0x103 JUMPI DUP1 PUSH4 0x99A88EC4 EQ PUSH2 0x116 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x135 JUMPI DUP1 PUSH4 0xF3B7DEAD EQ PUSH2 0x154 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x204E1C7A EQ PUSH2 0x7D JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0x7EFF275E EQ PUSH2 0xC8 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xE7 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x88 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x9C PUSH2 0x97 CALLDATASIZE PUSH1 0x4 PUSH2 0x494 JUMP JUMPDEST PUSH2 0x173 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x4C1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBD JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0xC6 PUSH2 0x1F3 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0xC6 PUSH2 0xE2 CALLDATASIZE PUSH1 0x4 PUSH2 0x4E3 JUMP JUMPDEST PUSH2 0x230 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9C JUMP JUMPDEST PUSH2 0xC6 PUSH2 0x111 CALLDATASIZE PUSH1 0x4 PUSH2 0x60F JUMP JUMPDEST PUSH2 0x2B6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x121 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0xC6 PUSH2 0x130 CALLDATASIZE PUSH1 0x4 PUSH2 0x4E3 JUMP JUMPDEST PUSH2 0x342 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x140 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0xC6 PUSH2 0x14F CALLDATASIZE PUSH1 0x4 PUSH2 0x675 JUMP JUMPDEST PUSH2 0x397 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15F JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x9C PUSH2 0x16E CALLDATASIZE PUSH1 0x4 PUSH2 0x494 JUMP JUMPDEST PUSH2 0x3F2 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 MLOAD PUSH2 0x18C SWAP1 PUSH2 0x6A6 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x1C4 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1C9 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x1D7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1EB SWAP2 SWAP1 PUSH2 0x6BB JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x225 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x21C SWAP1 PUSH2 0x6D9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x22E PUSH0 PUSH2 0x40B JUMP JUMPDEST JUMP JUMPDEST PUSH0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x259 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x21C SWAP1 PUSH2 0x6D9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x8F28397 PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x8F283970 SWAP1 PUSH2 0x285 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x4C1 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x29C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2AE JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x2DF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x21C SWAP1 PUSH2 0x6D9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x278F7943 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x4F1EF286 SWAP1 CALLVALUE SWAP1 PUSH2 0x30F SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x74F JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x326 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x338 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x36B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x21C SWAP1 PUSH2 0x6D9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x1B2CE7F3 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x3659CFE6 SWAP1 PUSH2 0x285 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x4C1 JUMP JUMPDEST PUSH0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x3C0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x21C SWAP1 PUSH2 0x6D9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x3E6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x21C SWAP1 PUSH2 0x76F JUMP JUMPDEST PUSH2 0x3EF DUP2 PUSH2 0x40B JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 MLOAD PUSH2 0x18C SWAP1 PUSH2 0x7C9 JUMP JUMPDEST PUSH0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x466 DUP3 PUSH2 0x45A JUMP JUMPDEST PUSH2 0x47F DUP2 PUSH2 0x46C JUMP JUMPDEST DUP2 EQ PUSH2 0x3EF JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x466 DUP2 PUSH2 0x476 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4A7 JUMPI PUSH2 0x4A7 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x1EB DUP5 DUP5 PUSH2 0x489 JUMP JUMPDEST PUSH2 0x4BB DUP2 PUSH2 0x45A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x466 DUP3 DUP5 PUSH2 0x4B2 JUMP JUMPDEST PUSH2 0x47F DUP2 PUSH2 0x45A JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x466 DUP2 PUSH2 0x4CF JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4F7 JUMPI PUSH2 0x4F7 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x502 DUP6 DUP6 PUSH2 0x489 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x513 DUP6 DUP3 DUP7 ADD PUSH2 0x4D8 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x557 JUMPI PUSH2 0x557 PUSH2 0x51D JUMP JUMPDEST PUSH1 0x40 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH2 0x568 PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST SWAP1 POP PUSH2 0x574 DUP3 DUP3 PUSH2 0x531 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x592 JUMPI PUSH2 0x592 PUSH2 0x51D JUMP JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY POP PUSH0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH0 PUSH2 0x5C0 PUSH2 0x5BB DUP5 PUSH2 0x579 JUMP JUMPDEST PUSH2 0x55E JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x5DA JUMPI PUSH2 0x5DA PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x5E5 DUP5 DUP3 DUP6 PUSH2 0x5A3 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5FF JUMPI PUSH2 0x5FF PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1EB DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x5AE JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x624 JUMPI PUSH2 0x624 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x62F DUP7 DUP7 PUSH2 0x489 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x640 DUP7 DUP3 DUP8 ADD PUSH2 0x4D8 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x65F JUMPI PUSH2 0x65F PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x66B DUP7 DUP3 DUP8 ADD PUSH2 0x5ED JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x688 JUMPI PUSH2 0x688 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x1EB DUP5 DUP5 PUSH2 0x4D8 JUMP JUMPDEST PUSH4 0x5C60DA1B PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 JUMPDEST POP PUSH1 0x4 ADD SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x466 DUP3 PUSH2 0x693 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x466 DUP2 PUSH2 0x4CF JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6CE JUMPI PUSH2 0x6CE PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x1EB DUP5 DUP5 PUSH2 0x6B0 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD SWAP1 DUP2 MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD PUSH2 0x466 JUMP JUMPDEST DUP3 DUP2 DUP4 MCOPY POP PUSH0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH0 PUSH2 0x727 DUP3 MLOAD SWAP1 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH2 0x73E DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x713 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x75D DUP3 DUP6 PUSH2 0x4B2 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x1EB DUP2 DUP5 PUSH2 0x71E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x466 DUP2 PUSH1 0x26 DUP2 MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x20 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH4 0x3E14691 PUSH1 0xE6 SHL DUP2 MSTORE PUSH0 PUSH2 0x69F JUMP JUMPDEST PUSH0 PUSH2 0x466 DUP3 PUSH2 0x7B9 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH4 0x128412B RETURNDATACOPY PUSH0 PUSH15 0x5AC3B29E782F4C22D0D92E1E535187 DUP14 GASLIMIT 0x26 SLT DUP10 0x4B LOG2 0x23 SWAP2 PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"435:2470:49:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;701:437;;;;;;;;;;-1:-1:-1;701:437:49;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1689:101:43;;;;;;;;;;;;;:::i;:::-;;1891:148:49;;;;;;;;;;-1:-1:-1;1891:148:49;;;;;:::i;:::-;;:::i;1057:85:43:-;;;;;;;;;;-1:-1:-1;1103:7:43;1129:6;-1:-1:-1;;;;;1129:6:43;1057:85;;2659:244:49;;;;;;:::i;:::-;;:::i;2244:149::-;;;;;;;;;;-1:-1:-1;2244:149:49;;;;;:::i;:::-;;:::i;1939:198:43:-;;;;;;;;;;-1:-1:-1;1939:198:43;;;;;:::i;:::-;;:::i;1298:419:49:-;;;;;;;;;;-1:-1:-1;1298:419:49;;;;;:::i;:::-;;:::i;701:437::-;797:7;974:12;988:23;1023:5;-1:-1:-1;;;;;1015:25:49;:40;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;973:82;;;;1073:7;1065:16;;;;;;1109:10;1098:33;;;;;;;;;;;;:::i;:::-;1091:40;701:437;-1:-1:-1;;;;701:437:49:o;1689:101:43:-;1103:7;1129:6;-1:-1:-1;;;;;1129:6:43;719:10:52;1269:23:43;1261:68;;;;-1:-1:-1;;;1261:68:43;;;;;;;:::i;:::-;;;;;;;;;1753:30:::1;1780:1;1753:18;:30::i;:::-;1689:101::o:0;1891:148:49:-;1103:7:43;1129:6;-1:-1:-1;;;;;1129:6:43;719:10:52;1269:23:43;1261:68;;;;-1:-1:-1;;;1261:68:43;;;;;;;:::i;:::-;2005:27:49::1;::::0;-1:-1:-1;;;2005:27:49;;-1:-1:-1;;;;;2005:17:49;::::1;::::0;::::1;::::0;:27:::1;::::0;2023:8;;2005:27:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1891:148:::0;;:::o;2659:244::-;1103:7:43;1129:6;-1:-1:-1;;;;;1129:6:43;719:10:52;1269:23:43;1261:68;;;;-1:-1:-1;;;1261:68:43;;;;;;;:::i;:::-;2834:62:49::1;::::0;-1:-1:-1;;;2834:62:49;;-1:-1:-1;;;;;2834:22:49;::::1;::::0;::::1;::::0;2864:9:::1;::::0;2834:62:::1;::::0;2875:14;;2891:4;;2834:62:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2659:244:::0;;;:::o;2244:149::-;1103:7:43;1129:6;-1:-1:-1;;;;;1129:6:43;719:10:52;1269:23:43;1261:68;;;;-1:-1:-1;;;1261:68:43;;;;;;;:::i;:::-;2355:31:49::1;::::0;-1:-1:-1;;;2355:31:49;;-1:-1:-1;;;;;2355:15:49;::::1;::::0;::::1;::::0;:31:::1;::::0;2371:14;;2355:31:::1;;;:::i;1939:198:43:-:0;1103:7;1129:6;-1:-1:-1;;;;;1129:6:43;719:10:52;1269:23:43;1261:68;;;;-1:-1:-1;;;1261:68:43;;;;;;;:::i;:::-;-1:-1:-1;;;;;2027:22:43;::::1;2019:73;;;;-1:-1:-1::0;;;2019:73:43::1;;;;;;;:::i;:::-;2102:28;2121:8;2102:18;:28::i;:::-;1939:198:::0;:::o;1298:419:49:-;1385:7;1553:12;1567:23;1602:5;-1:-1:-1;;;;;1594:25:49;:40;;;;;:::i;2291:187:43:-;2364:16;2383:6;;-1:-1:-1;;;;;2399:17:43;;;-1:-1:-1;;;;;;2399:17:43;;;;;;2431:40;;2383:6;;;;;;;2431:40;;2364:16;2431:40;2354:124;2291:187;:::o;466:104:55:-;511:7;-1:-1:-1;;;;;400:54:55;;540:24;529:35;466:104;-1:-1:-1;;466:104:55:o;576:140::-;649:7;678:32;704:5;678:32;:::i;722:194::-;831:60;885:5;831:60;:::i;:::-;824:5;821:71;811:99;;906:1;903;896:12;922:211;1029:20;;1058:69;1029:20;1058:69;:::i;1139:401::-;1234:6;1283:2;1271:9;1262:7;1258:23;1254:32;1251:119;;;1289:79;197:1;194;187:12;1289:79;1409:1;1434:89;1515:7;1495:9;1434:89;:::i;1648:118::-;1735:24;1753:5;1735:24;:::i;:::-;1730:3;1723:37;1648:118;;:::o;1772:222::-;1903:2;1888:18;;1916:71;1892:9;1960:6;1916:71;:::i;2000:122::-;2073:24;2091:5;2073:24;:::i;2128:139::-;2199:20;;2228:33;2199:20;2228:33;:::i;2273:546::-;2377:6;2385;2434:2;2422:9;2413:7;2409:23;2405:32;2402:119;;;2440:79;197:1;194;187:12;2440:79;2560:1;2585:89;2666:7;2646:9;2585:89;:::i;:::-;2575:99;;2531:153;2723:2;2749:53;2794:7;2785:6;2774:9;2770:22;2749:53;:::i;:::-;2739:63;;2694:118;2273:546;;;;;:::o;3179:180::-;-1:-1:-1;;;3224:1:55;3217:88;3324:4;3321:1;3314:15;3348:4;3345:1;3338:15;3365:281;-1:-1:-1;;3163:2:55;3143:14;;3139:28;3440:6;3436:40;3578:6;3566:10;3563:22;3542:18;3530:10;3527:34;3524:62;3521:88;;;3589:18;;:::i;:::-;3625:2;3618:22;-1:-1:-1;;3365:281:55:o;3652:129::-;3686:6;3713:20;73:2;67:9;;7:75;3713:20;3703:30;;3742:33;3770:4;3762:6;3742:33;:::i;:::-;3652:129;;;:::o;3787:307::-;3848:4;3938:18;3930:6;3927:30;3924:56;;;3960:18;;:::i;:::-;-1:-1:-1;;3163:2:55;3143:14;;3139:28;4082:4;4072:15;;3787:307;-1:-1:-1;;3787:307:55:o;4100:148::-;4198:6;4193:3;4188;4175:30;-1:-1:-1;4239:1:55;4221:16;;4214:27;4100:148::o;4254:423::-;4331:5;4356:65;4372:48;4413:6;4372:48;:::i;:::-;4356:65;:::i;:::-;4347:74;;4444:6;4437:5;4430:21;4482:4;4475:5;4471:16;4520:3;4511:6;4506:3;4502:16;4499:25;4496:112;;;4527:79;3057:1;3054;3047:12;4527:79;4617:54;4664:6;4659:3;4654;4617:54;:::i;:::-;4337:340;4254:423;;;;;:::o;4696:338::-;4751:5;4800:3;4793:4;4785:6;4781:17;4777:27;4767:122;;4808:79;2934:1;2931;2924:12;4808:79;4925:6;4912:20;4950:78;5024:3;5016:6;5009:4;5001:6;4997:17;4950:78;:::i;5040:869::-;5162:6;5170;5178;5227:2;5215:9;5206:7;5202:23;5198:32;5195:119;;;5233:79;197:1;194;187:12;5233:79;5353:1;5378:89;5459:7;5439:9;5378:89;:::i;:::-;5368:99;;5324:153;5516:2;5542:53;5587:7;5578:6;5567:9;5563:22;5542:53;:::i;:::-;5532:63;;5487:118;5672:2;5661:9;5657:18;5644:32;5703:18;5695:6;5692:30;5689:117;;;5725:79;320:1;317;310:12;5725:79;5830:62;5884:7;5875:6;5864:9;5860:22;5830:62;:::i;:::-;5820:72;;5615:287;5040:869;;;;;:::o;5915:329::-;5974:6;6023:2;6011:9;6002:7;5998:23;5994:32;5991:119;;;6029:79;197:1;194;187:12;6029:79;6149:1;6174:53;6219:7;6199:9;6174:53;:::i;6623:398::-;-1:-1:-1;;;6520:90:55;;6782:3;6895:93;-1:-1:-1;7013:1:55;7004:11;;6623:398::o;7027:379::-;7211:3;7233:147;7376:3;7233:147;:::i;7556:159::-;7646:13;;7668:41;7646:13;7668:41;:::i;7721:367::-;7799:6;7848:2;7836:9;7827:7;7823:23;7819:32;7816:119;;;7854:79;197:1;194;187:12;7854:79;7974:1;7999:72;8063:7;8043:9;7999:72;:::i;8829:419::-;9033:2;9046:47;;;9018:18;;;8200:19;;;8409:34;8243:14;;;8386:58;8805:12;;;9110:131;8457:366;9532:139;9621:6;9616:3;9611;9605:23;-1:-1:-1;9662:1:55;9644:16;;9637:27;9532:139::o;9677:373::-;9763:3;9791:38;9823:5;9333:12;;9254:98;9791:38;8200:19;;;8252:4;8243:14;;9838:77;;9924:65;9982:6;9977:3;9970:4;9963:5;9959:16;9924:65;:::i;:::-;3163:2;3143:14;-1:-1:-1;;3139:28:55;10005:39;;;;;;-1:-1:-1;;9677:373:55:o;10056:419::-;10233:2;10218:18;;10246:71;10222:9;10290:6;10246:71;:::i;:::-;10364:9;10358:4;10354:20;10349:2;10338:9;10334:18;10327:48;10392:76;10463:4;10454:6;10392:76;:::i;11084:419::-;11288:2;11301:47;;;11273:18;;11365:131;11273:18;10939:2;8200:19;;10621:34;8252:4;8243:14;;10598:58;-1:-1:-1;;;10673:15:55;;;10666:33;11060:12;;;10712:366;11729:398;-1:-1:-1;;;11626:90:55;;11888:3;12001:93;11509:214;12133:379;12317:3;12339:147;12482:3;12339:147;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"411400","executionCost":"infinite","totalCost":"infinite"},"external":{"changeProxyAdmin(address,address)":"infinite","getProxyAdmin(address)":"infinite","getProxyImplementation(address)":"infinite","owner()":"infinite","renounceOwnership()":"28133","transferOwnership(address)":"infinite","upgrade(address,address)":"infinite","upgradeAndCall(address,address,bytes)":"infinite"}},"methodIdentifiers":{"changeProxyAdmin(address,address)":"7eff275e","getProxyAdmin(address)":"f3b7dead","getProxyImplementation(address)":"204e1c7a","owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b","upgrade(address,address)":"99a88ec4","upgradeAndCall(address,address,bytes)":"9623609d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract TransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"changeProxyAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract TransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"}],\"name\":\"getProxyAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract TransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"}],\"name\":\"getProxyImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract TransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"upgrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract TransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is an auxiliary contract meant to be assigned as the admin of a {TransparentUpgradeableProxy}. For an explanation of why you would want to use this see the documentation for {TransparentUpgradeableProxy}.\",\"kind\":\"dev\",\"methods\":{\"changeProxyAdmin(address,address)\":{\"details\":\"Changes the admin of `proxy` to `newAdmin`. Requirements: - This contract must be the current admin of `proxy`.\"},\"getProxyAdmin(address)\":{\"details\":\"Returns the current admin of `proxy`. Requirements: - This contract must be the admin of `proxy`.\"},\"getProxyImplementation(address)\":{\"details\":\"Returns the current implementation of `proxy`. Requirements: - This contract must be the admin of `proxy`.\"},\"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.\"},\"upgrade(address,address)\":{\"details\":\"Upgrades `proxy` to `implementation`. See {TransparentUpgradeableProxy-upgradeTo}. Requirements: - This contract must be the admin of `proxy`.\"},\"upgradeAndCall(address,address,bytes)\":{\"details\":\"Upgrades `proxy` to `implementation` and calls a function on the new implementation. See {TransparentUpgradeableProxy-upgradeToAndCall}. Requirements: - This contract must be the admin of `proxy`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/ProxyAdmin.sol\":\"ProxyAdmin\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"hardhat-deploy/solc_0.8/openzeppelin/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (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 (address initialOwner) {\\n        _transferOwnership(initialOwner);\\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 called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n        _;\\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\",\"keccak256\":\"0x9b2bbba5bb04f53f277739c1cdff896ba8b3bf591cfc4eab2098c655e8ac251e\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n    /**\\n     * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n     *\\n     * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n     * function call, and allows initializating the storage of the proxy like a Solidity constructor.\\n     */\\n    constructor(address _logic, bytes memory _data) payable {\\n        assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\\\"eip1967.proxy.implementation\\\")) - 1));\\n        _upgradeToAndCall(_logic, _data, false);\\n    }\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function _implementation() internal view virtual override returns (address impl) {\\n        return ERC1967Upgrade._getImplementation();\\n    }\\n}\\n\",\"keccak256\":\"0x6309f9f39dc6f4f45a24f296543867aa358e32946cd6b2874627a996d606b3a0\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n    // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n    bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function _getImplementation() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n        StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeTo(address newImplementation) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCall(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _upgradeTo(newImplementation);\\n        if (data.length > 0 || forceCall) {\\n            Address.functionDelegateCall(newImplementation, data);\\n        }\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        // Upgrades from old implementations will perform a rollback test. This test requires the new\\n        // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n        // this special case will break upgrade paths from old UUPS implementation to new ones.\\n        if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n            _setImplementation(newImplementation);\\n        } else {\\n            try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n                require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n            } catch {\\n                revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n            }\\n            _upgradeToAndCall(newImplementation, data, forceCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Returns the current admin.\\n     */\\n    function _getAdmin() internal view virtual returns (address) {\\n        return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n        StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {AdminChanged} event.\\n     */\\n    function _changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(_getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n     */\\n    bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Emitted when the beacon is upgraded.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function _getBeacon() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n        require(Address.isContract(IBeacon(newBeacon).implementation()), \\\"ERC1967: beacon implementation is not a contract\\\");\\n        StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n    }\\n\\n    /**\\n     * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n     * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n     *\\n     * Emits a {BeaconUpgraded} event.\\n     */\\n    function _upgradeBeaconToAndCall(\\n        address newBeacon,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n        if (data.length > 0 || forceCall) {\\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x17668652127feebed0ce8d9431ef95ccc8c4292f03e3b8cf06c6ca16af396633\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n    /**\\n     * @dev Delegates the current call to `implementation`.\\n     *\\n     * This function does not return to its internal call site, it will return directly to the external caller.\\n     */\\n    function _delegate(address implementation) internal virtual {\\n        assembly {\\n            // Copy msg.data. We take full control of memory in this inline assembly\\n            // block because it will not return to Solidity code. We overwrite the\\n            // Solidity scratch pad at memory position 0.\\n            calldatacopy(0, 0, calldatasize())\\n\\n            // Call the implementation.\\n            // out and outsize are 0 because we don't know the size yet.\\n            let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n            // Copy the returned data.\\n            returndatacopy(0, 0, returndatasize())\\n\\n            switch result\\n            // delegatecall returns 0 on error.\\n            case 0 {\\n                revert(0, returndatasize())\\n            }\\n            default {\\n                return(0, returndatasize())\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\\n     * and {_fallback} should delegate.\\n     */\\n    function _implementation() internal view virtual returns (address);\\n\\n    /**\\n     * @dev Delegates the current call to the address returned by `_implementation()`.\\n     *\\n     * This function does not return to its internall call site, it will return directly to the external caller.\\n     */\\n    function _fallback() internal virtual {\\n        _beforeFallback();\\n        _delegate(_implementation());\\n    }\\n\\n    /**\\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n     * function in the contract matches the call data.\\n     */\\n    fallback() external payable virtual {\\n        _fallback();\\n    }\\n\\n    /**\\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n     * is empty.\\n     */\\n    receive() external payable virtual {\\n        _fallback();\\n    }\\n\\n    /**\\n     * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n     * call, or as part of the Solidity `fallback` or `receive` functions.\\n     *\\n     * If overriden should call `super._beforeFallback()`.\\n     */\\n    function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xd5d1fd16e9faff7fcb3a52e02a8d49156f42a38a03f07b5f1810c21c2149a8ab\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {BeaconProxy} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/ProxyAdmin.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/ProxyAdmin.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./TransparentUpgradeableProxy.sol\\\";\\nimport \\\"../../access/Ownable.sol\\\";\\n\\n/**\\n * @dev This is an auxiliary contract meant to be assigned as the admin of a {TransparentUpgradeableProxy}. For an\\n * explanation of why you would want to use this see the documentation for {TransparentUpgradeableProxy}.\\n */\\ncontract ProxyAdmin is Ownable {\\n\\n    constructor (address initialOwner) Ownable(initialOwner) {}\\n\\n    /**\\n     * @dev Returns the current implementation of `proxy`.\\n     *\\n     * Requirements:\\n     *\\n     * - This contract must be the admin of `proxy`.\\n     */\\n    function getProxyImplementation(TransparentUpgradeableProxy proxy) public view virtual returns (address) {\\n        // We need to manually run the static call since the getter cannot be flagged as view\\n        // bytes4(keccak256(\\\"implementation()\\\")) == 0x5c60da1b\\n        (bool success, bytes memory returndata) = address(proxy).staticcall(hex\\\"5c60da1b\\\");\\n        require(success);\\n        return abi.decode(returndata, (address));\\n    }\\n\\n    /**\\n     * @dev Returns the current admin of `proxy`.\\n     *\\n     * Requirements:\\n     *\\n     * - This contract must be the admin of `proxy`.\\n     */\\n    function getProxyAdmin(TransparentUpgradeableProxy proxy) public view virtual returns (address) {\\n        // We need to manually run the static call since the getter cannot be flagged as view\\n        // bytes4(keccak256(\\\"admin()\\\")) == 0xf851a440\\n        (bool success, bytes memory returndata) = address(proxy).staticcall(hex\\\"f851a440\\\");\\n        require(success);\\n        return abi.decode(returndata, (address));\\n    }\\n\\n    /**\\n     * @dev Changes the admin of `proxy` to `newAdmin`.\\n     *\\n     * Requirements:\\n     *\\n     * - This contract must be the current admin of `proxy`.\\n     */\\n    function changeProxyAdmin(TransparentUpgradeableProxy proxy, address newAdmin) public virtual onlyOwner {\\n        proxy.changeAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev Upgrades `proxy` to `implementation`. See {TransparentUpgradeableProxy-upgradeTo}.\\n     *\\n     * Requirements:\\n     *\\n     * - This contract must be the admin of `proxy`.\\n     */\\n    function upgrade(TransparentUpgradeableProxy proxy, address implementation) public virtual onlyOwner {\\n        proxy.upgradeTo(implementation);\\n    }\\n\\n    /**\\n     * @dev Upgrades `proxy` to `implementation` and calls a function on the new implementation. See\\n     * {TransparentUpgradeableProxy-upgradeToAndCall}.\\n     *\\n     * Requirements:\\n     *\\n     * - This contract must be the admin of `proxy`.\\n     */\\n    function upgradeAndCall(\\n        TransparentUpgradeableProxy proxy,\\n        address implementation,\\n        bytes memory data\\n    ) public payable virtual onlyOwner {\\n        proxy.upgradeToAndCall{value: msg.value}(implementation, data);\\n    }\\n}\\n\",\"keccak256\":\"0x754888b9c9ab5525343460b0a4fa2e2f4fca9b6a7e0e7ddea4154e2b1182a45d\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../ERC1967/ERC1967Proxy.sol\\\";\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable by an admin.\\n *\\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n *\\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches one of the admin functions exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\\n * \\\"admin cannot fallback to proxy target\\\".\\n *\\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\\n * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\\n * to sudden errors when trying to call a function from the proxy implementation.\\n *\\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\\n */\\ncontract TransparentUpgradeableProxy is ERC1967Proxy {\\n    /**\\n     * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\\n     * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\\n     */\\n    constructor(\\n        address _logic,\\n        address admin_,\\n        bytes memory _data\\n    ) payable ERC1967Proxy(_logic, _data) {\\n        assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\\\"eip1967.proxy.admin\\\")) - 1));\\n        _changeAdmin(admin_);\\n    }\\n\\n    /**\\n     * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\\n     */\\n    modifier ifAdmin() {\\n        if (msg.sender == _getAdmin()) {\\n            _;\\n        } else {\\n            _fallback();\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the current admin.\\n     *\\n     * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\\n     *\\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n     * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n     */\\n    function admin() external ifAdmin returns (address admin_) {\\n        admin_ = _getAdmin();\\n    }\\n\\n    /**\\n     * @dev Returns the current implementation.\\n     *\\n     * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\\n     *\\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n     * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n     * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n     */\\n    function implementation() external ifAdmin returns (address implementation_) {\\n        implementation_ = _implementation();\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {AdminChanged} event.\\n     *\\n     * NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.\\n     */\\n    function changeAdmin(address newAdmin) external virtual ifAdmin {\\n        _changeAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy.\\n     *\\n     * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\\n     */\\n    function upgradeTo(address newImplementation) external ifAdmin {\\n        _upgradeToAndCall(newImplementation, bytes(\\\"\\\"), false);\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\\n     * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\\n     * proxied contract.\\n     *\\n     * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\\n        _upgradeToAndCall(newImplementation, data, true);\\n    }\\n\\n    /**\\n     * @dev Returns the current admin.\\n     */\\n    function _admin() internal view virtual returns (address) {\\n        return _getAdmin();\\n    }\\n\\n    /**\\n     * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\\n     */\\n    function _beforeFallback() internal virtual override {\\n        require(msg.sender != _getAdmin(), \\\"TransparentUpgradeableProxy: admin cannot fallback to proxy target\\\");\\n        super._beforeFallback();\\n    }\\n}\\n\",\"keccak256\":\"0x140055a64cf579d622e04f5a198595832bf2cb193cd0005f4f2d4d61ca906253\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/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\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (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        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        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        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        assembly {\\n            r.slot := slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":8336,"contract":"hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/ProxyAdmin.sol:ProxyAdmin","label":"_owner","offset":0,"slot":"0","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol":{"TransparentUpgradeableProxy":{"abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"admin_","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"admin_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"details":"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \"admin cannot fallback to proxy target\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.","events":{"AdminChanged(address,address)":{"details":"Emitted when the admin account has changed."},"BeaconUpgraded(address)":{"details":"Emitted when the beacon is upgraded."},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{"admin()":{"details":"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"changeAdmin(address)":{"details":"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}."},"constructor":{"details":"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"implementation()":{"details":"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"upgradeTo(address)":{"details":"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"upgradeToAndCall(address,bytes)":{"details":"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_8484":{"entryPoint":null,"id":8484,"parameterSlots":2,"returnSlots":0},"@_9063":{"entryPoint":null,"id":9063,"parameterSlots":3,"returnSlots":0},"@_changeAdmin_8718":{"entryPoint":250,"id":8718,"parameterSlots":1,"returnSlots":0},"@_getAdmin_8675":{"entryPoint":null,"id":8675,"parameterSlots":0,"returnSlots":1},"@_setAdmin_8701":{"entryPoint":457,"id":8701,"parameterSlots":1,"returnSlots":0},"@_setImplementation_8553":{"entryPoint":553,"id":8553,"parameterSlots":1,"returnSlots":0},"@_upgradeToAndCall_8598":{"entryPoint":207,"id":8598,"parameterSlots":3,"returnSlots":0},"@_upgradeTo_8568":{"entryPoint":348,"id":8568,"parameterSlots":1,"returnSlots":0},"@functionDelegateCall_9414":{"entryPoint":411,"id":9414,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_9449":{"entryPoint":612,"id":9449,"parameterSlots":3,"returnSlots":1},"@getAddressSlot_9529":{"entryPoint":null,"id":9529,"parameterSlots":1,"returnSlots":1},"@isContract_9204":{"entryPoint":null,"id":9204,"parameterSlots":1,"returnSlots":1},"@verifyCallResult_9480":{"entryPoint":769,"id":9480,"parameterSlots":3,"returnSlots":1},"abi_decode_available_length_t_bytes_memory_ptr_fromMemory":{"entryPoint":1015,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_address_fromMemory":{"entryPoint":861,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes_memory_ptr_fromMemory":{"entryPoint":1078,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_addresst_bytes_memory_ptr_fromMemory":{"entryPoint":1120,"id":null,"parameterSlots":2,"returnSlots":3},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":1280,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":1578,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack":{"entryPoint":1622,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5_to_t_string_memory_ptr_fromStack":{"entryPoint":1322,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65_to_t_string_memory_ptr_fromStack":{"entryPoint":1407,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520_to_t_string_memory_ptr_fromStack":{"entryPoint":1496,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":1611,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed":{"entryPoint":1295,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":1671,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":1391,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":1480,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":1562,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory":{"entryPoint":936,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_bytes_memory_ptr":{"entryPoint":963,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_bytes_memory_ptr":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_string_memory_ptr":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":1241,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_address":{"entryPoint":826,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":1004,"id":null,"parameterSlots":3,"returnSlots":0},"finalize_allocation":{"entryPoint":892,"id":null,"parameterSlots":2,"returnSlots":0},"panic_error_0x01":{"entryPoint":1260,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x11":{"entryPoint":1221,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":872,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"store_literal_in_memory_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_address":{"entryPoint":842,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:10028:55","nodeType":"YulBlock","src":"0:10028:55","statements":[{"body":{"nativeSrc":"47:35:55","nodeType":"YulBlock","src":"47:35:55","statements":[{"nativeSrc":"57:19:55","nodeType":"YulAssignment","src":"57:19:55","value":{"arguments":[{"kind":"number","nativeSrc":"73:2:55","nodeType":"YulLiteral","src":"73:2:55","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"67:5:55","nodeType":"YulIdentifier","src":"67:5:55"},"nativeSrc":"67:9:55","nodeType":"YulFunctionCall","src":"67:9:55"},"variableNames":[{"name":"memPtr","nativeSrc":"57:6:55","nodeType":"YulIdentifier","src":"57:6:55"}]}]},"name":"allocate_unbounded","nativeSrc":"7:75:55","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"40:6:55","nodeType":"YulTypedName","src":"40:6:55","type":""}],"src":"7:75:55"},{"body":{"nativeSrc":"177:28:55","nodeType":"YulBlock","src":"177:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"194:1:55","nodeType":"YulLiteral","src":"194:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"197:1:55","nodeType":"YulLiteral","src":"197:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"187:6:55","nodeType":"YulIdentifier","src":"187:6:55"},"nativeSrc":"187:12:55","nodeType":"YulFunctionCall","src":"187:12:55"},"nativeSrc":"187:12:55","nodeType":"YulExpressionStatement","src":"187:12:55"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"88:117:55","nodeType":"YulFunctionDefinition","src":"88:117:55"},{"body":{"nativeSrc":"300:28:55","nodeType":"YulBlock","src":"300:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"317:1:55","nodeType":"YulLiteral","src":"317:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"320:1:55","nodeType":"YulLiteral","src":"320:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"310:6:55","nodeType":"YulIdentifier","src":"310:6:55"},"nativeSrc":"310:12:55","nodeType":"YulFunctionCall","src":"310:12:55"},"nativeSrc":"310:12:55","nodeType":"YulExpressionStatement","src":"310:12:55"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"211:117:55","nodeType":"YulFunctionDefinition","src":"211:117:55"},{"body":{"nativeSrc":"379:81:55","nodeType":"YulBlock","src":"379:81:55","statements":[{"nativeSrc":"389:65:55","nodeType":"YulAssignment","src":"389:65:55","value":{"arguments":[{"name":"value","nativeSrc":"404:5:55","nodeType":"YulIdentifier","src":"404:5:55"},{"kind":"number","nativeSrc":"411:42:55","nodeType":"YulLiteral","src":"411:42:55","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"400:3:55","nodeType":"YulIdentifier","src":"400:3:55"},"nativeSrc":"400:54:55","nodeType":"YulFunctionCall","src":"400:54:55"},"variableNames":[{"name":"cleaned","nativeSrc":"389:7:55","nodeType":"YulIdentifier","src":"389:7:55"}]}]},"name":"cleanup_t_uint160","nativeSrc":"334:126:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"361:5:55","nodeType":"YulTypedName","src":"361:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"371:7:55","nodeType":"YulTypedName","src":"371:7:55","type":""}],"src":"334:126:55"},{"body":{"nativeSrc":"511:51:55","nodeType":"YulBlock","src":"511:51:55","statements":[{"nativeSrc":"521:35:55","nodeType":"YulAssignment","src":"521:35:55","value":{"arguments":[{"name":"value","nativeSrc":"550:5:55","nodeType":"YulIdentifier","src":"550:5:55"}],"functionName":{"name":"cleanup_t_uint160","nativeSrc":"532:17:55","nodeType":"YulIdentifier","src":"532:17:55"},"nativeSrc":"532:24:55","nodeType":"YulFunctionCall","src":"532:24:55"},"variableNames":[{"name":"cleaned","nativeSrc":"521:7:55","nodeType":"YulIdentifier","src":"521:7:55"}]}]},"name":"cleanup_t_address","nativeSrc":"466:96:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"493:5:55","nodeType":"YulTypedName","src":"493:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"503:7:55","nodeType":"YulTypedName","src":"503:7:55","type":""}],"src":"466:96:55"},{"body":{"nativeSrc":"611:79:55","nodeType":"YulBlock","src":"611:79:55","statements":[{"body":{"nativeSrc":"668:16:55","nodeType":"YulBlock","src":"668:16:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"677:1:55","nodeType":"YulLiteral","src":"677:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"680:1:55","nodeType":"YulLiteral","src":"680:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"670:6:55","nodeType":"YulIdentifier","src":"670:6:55"},"nativeSrc":"670:12:55","nodeType":"YulFunctionCall","src":"670:12:55"},"nativeSrc":"670:12:55","nodeType":"YulExpressionStatement","src":"670:12:55"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"634:5:55","nodeType":"YulIdentifier","src":"634:5:55"},{"arguments":[{"name":"value","nativeSrc":"659:5:55","nodeType":"YulIdentifier","src":"659:5:55"}],"functionName":{"name":"cleanup_t_address","nativeSrc":"641:17:55","nodeType":"YulIdentifier","src":"641:17:55"},"nativeSrc":"641:24:55","nodeType":"YulFunctionCall","src":"641:24:55"}],"functionName":{"name":"eq","nativeSrc":"631:2:55","nodeType":"YulIdentifier","src":"631:2:55"},"nativeSrc":"631:35:55","nodeType":"YulFunctionCall","src":"631:35:55"}],"functionName":{"name":"iszero","nativeSrc":"624:6:55","nodeType":"YulIdentifier","src":"624:6:55"},"nativeSrc":"624:43:55","nodeType":"YulFunctionCall","src":"624:43:55"},"nativeSrc":"621:63:55","nodeType":"YulIf","src":"621:63:55"}]},"name":"validator_revert_t_address","nativeSrc":"568:122:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"604:5:55","nodeType":"YulTypedName","src":"604:5:55","type":""}],"src":"568:122:55"},{"body":{"nativeSrc":"759:80:55","nodeType":"YulBlock","src":"759:80:55","statements":[{"nativeSrc":"769:22:55","nodeType":"YulAssignment","src":"769:22:55","value":{"arguments":[{"name":"offset","nativeSrc":"784:6:55","nodeType":"YulIdentifier","src":"784:6:55"}],"functionName":{"name":"mload","nativeSrc":"778:5:55","nodeType":"YulIdentifier","src":"778:5:55"},"nativeSrc":"778:13:55","nodeType":"YulFunctionCall","src":"778:13:55"},"variableNames":[{"name":"value","nativeSrc":"769:5:55","nodeType":"YulIdentifier","src":"769:5:55"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"827:5:55","nodeType":"YulIdentifier","src":"827:5:55"}],"functionName":{"name":"validator_revert_t_address","nativeSrc":"800:26:55","nodeType":"YulIdentifier","src":"800:26:55"},"nativeSrc":"800:33:55","nodeType":"YulFunctionCall","src":"800:33:55"},"nativeSrc":"800:33:55","nodeType":"YulExpressionStatement","src":"800:33:55"}]},"name":"abi_decode_t_address_fromMemory","nativeSrc":"696:143:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"737:6:55","nodeType":"YulTypedName","src":"737:6:55","type":""},{"name":"end","nativeSrc":"745:3:55","nodeType":"YulTypedName","src":"745:3:55","type":""}],"returnVariables":[{"name":"value","nativeSrc":"753:5:55","nodeType":"YulTypedName","src":"753:5:55","type":""}],"src":"696:143:55"},{"body":{"nativeSrc":"934:28:55","nodeType":"YulBlock","src":"934:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"951:1:55","nodeType":"YulLiteral","src":"951:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"954:1:55","nodeType":"YulLiteral","src":"954:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"944:6:55","nodeType":"YulIdentifier","src":"944:6:55"},"nativeSrc":"944:12:55","nodeType":"YulFunctionCall","src":"944:12:55"},"nativeSrc":"944:12:55","nodeType":"YulExpressionStatement","src":"944:12:55"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nativeSrc":"845:117:55","nodeType":"YulFunctionDefinition","src":"845:117:55"},{"body":{"nativeSrc":"1057:28:55","nodeType":"YulBlock","src":"1057:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1074:1:55","nodeType":"YulLiteral","src":"1074:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"1077:1:55","nodeType":"YulLiteral","src":"1077:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1067:6:55","nodeType":"YulIdentifier","src":"1067:6:55"},"nativeSrc":"1067:12:55","nodeType":"YulFunctionCall","src":"1067:12:55"},"nativeSrc":"1067:12:55","nodeType":"YulExpressionStatement","src":"1067:12:55"}]},"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nativeSrc":"968:117:55","nodeType":"YulFunctionDefinition","src":"968:117:55"},{"body":{"nativeSrc":"1139:54:55","nodeType":"YulBlock","src":"1139:54:55","statements":[{"nativeSrc":"1149:38:55","nodeType":"YulAssignment","src":"1149:38:55","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1167:5:55","nodeType":"YulIdentifier","src":"1167:5:55"},{"kind":"number","nativeSrc":"1174:2:55","nodeType":"YulLiteral","src":"1174:2:55","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"1163:3:55","nodeType":"YulIdentifier","src":"1163:3:55"},"nativeSrc":"1163:14:55","nodeType":"YulFunctionCall","src":"1163:14:55"},{"arguments":[{"kind":"number","nativeSrc":"1183:2:55","nodeType":"YulLiteral","src":"1183:2:55","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"1179:3:55","nodeType":"YulIdentifier","src":"1179:3:55"},"nativeSrc":"1179:7:55","nodeType":"YulFunctionCall","src":"1179:7:55"}],"functionName":{"name":"and","nativeSrc":"1159:3:55","nodeType":"YulIdentifier","src":"1159:3:55"},"nativeSrc":"1159:28:55","nodeType":"YulFunctionCall","src":"1159:28:55"},"variableNames":[{"name":"result","nativeSrc":"1149:6:55","nodeType":"YulIdentifier","src":"1149:6:55"}]}]},"name":"round_up_to_mul_of_32","nativeSrc":"1091:102:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1122:5:55","nodeType":"YulTypedName","src":"1122:5:55","type":""}],"returnVariables":[{"name":"result","nativeSrc":"1132:6:55","nodeType":"YulTypedName","src":"1132:6:55","type":""}],"src":"1091:102:55"},{"body":{"nativeSrc":"1227:152:55","nodeType":"YulBlock","src":"1227:152:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1244:1:55","nodeType":"YulLiteral","src":"1244:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"1247:77:55","nodeType":"YulLiteral","src":"1247:77:55","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"1237:6:55","nodeType":"YulIdentifier","src":"1237:6:55"},"nativeSrc":"1237:88:55","nodeType":"YulFunctionCall","src":"1237:88:55"},"nativeSrc":"1237:88:55","nodeType":"YulExpressionStatement","src":"1237:88:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1341:1:55","nodeType":"YulLiteral","src":"1341:1:55","type":"","value":"4"},{"kind":"number","nativeSrc":"1344:4:55","nodeType":"YulLiteral","src":"1344:4:55","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"1334:6:55","nodeType":"YulIdentifier","src":"1334:6:55"},"nativeSrc":"1334:15:55","nodeType":"YulFunctionCall","src":"1334:15:55"},"nativeSrc":"1334:15:55","nodeType":"YulExpressionStatement","src":"1334:15:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1365:1:55","nodeType":"YulLiteral","src":"1365:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"1368:4:55","nodeType":"YulLiteral","src":"1368:4:55","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"1358:6:55","nodeType":"YulIdentifier","src":"1358:6:55"},"nativeSrc":"1358:15:55","nodeType":"YulFunctionCall","src":"1358:15:55"},"nativeSrc":"1358:15:55","nodeType":"YulExpressionStatement","src":"1358:15:55"}]},"name":"panic_error_0x41","nativeSrc":"1199:180:55","nodeType":"YulFunctionDefinition","src":"1199:180:55"},{"body":{"nativeSrc":"1428:238:55","nodeType":"YulBlock","src":"1428:238:55","statements":[{"nativeSrc":"1438:58:55","nodeType":"YulVariableDeclaration","src":"1438:58:55","value":{"arguments":[{"name":"memPtr","nativeSrc":"1460:6:55","nodeType":"YulIdentifier","src":"1460:6:55"},{"arguments":[{"name":"size","nativeSrc":"1490:4:55","nodeType":"YulIdentifier","src":"1490:4:55"}],"functionName":{"name":"round_up_to_mul_of_32","nativeSrc":"1468:21:55","nodeType":"YulIdentifier","src":"1468:21:55"},"nativeSrc":"1468:27:55","nodeType":"YulFunctionCall","src":"1468:27:55"}],"functionName":{"name":"add","nativeSrc":"1456:3:55","nodeType":"YulIdentifier","src":"1456:3:55"},"nativeSrc":"1456:40:55","nodeType":"YulFunctionCall","src":"1456:40:55"},"variables":[{"name":"newFreePtr","nativeSrc":"1442:10:55","nodeType":"YulTypedName","src":"1442:10:55","type":""}]},{"body":{"nativeSrc":"1607:22:55","nodeType":"YulBlock","src":"1607:22:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"1609:16:55","nodeType":"YulIdentifier","src":"1609:16:55"},"nativeSrc":"1609:18:55","nodeType":"YulFunctionCall","src":"1609:18:55"},"nativeSrc":"1609:18:55","nodeType":"YulExpressionStatement","src":"1609:18:55"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"1550:10:55","nodeType":"YulIdentifier","src":"1550:10:55"},{"kind":"number","nativeSrc":"1562:18:55","nodeType":"YulLiteral","src":"1562:18:55","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1547:2:55","nodeType":"YulIdentifier","src":"1547:2:55"},"nativeSrc":"1547:34:55","nodeType":"YulFunctionCall","src":"1547:34:55"},{"arguments":[{"name":"newFreePtr","nativeSrc":"1586:10:55","nodeType":"YulIdentifier","src":"1586:10:55"},{"name":"memPtr","nativeSrc":"1598:6:55","nodeType":"YulIdentifier","src":"1598:6:55"}],"functionName":{"name":"lt","nativeSrc":"1583:2:55","nodeType":"YulIdentifier","src":"1583:2:55"},"nativeSrc":"1583:22:55","nodeType":"YulFunctionCall","src":"1583:22:55"}],"functionName":{"name":"or","nativeSrc":"1544:2:55","nodeType":"YulIdentifier","src":"1544:2:55"},"nativeSrc":"1544:62:55","nodeType":"YulFunctionCall","src":"1544:62:55"},"nativeSrc":"1541:88:55","nodeType":"YulIf","src":"1541:88:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1645:2:55","nodeType":"YulLiteral","src":"1645:2:55","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"1649:10:55","nodeType":"YulIdentifier","src":"1649:10:55"}],"functionName":{"name":"mstore","nativeSrc":"1638:6:55","nodeType":"YulIdentifier","src":"1638:6:55"},"nativeSrc":"1638:22:55","nodeType":"YulFunctionCall","src":"1638:22:55"},"nativeSrc":"1638:22:55","nodeType":"YulExpressionStatement","src":"1638:22:55"}]},"name":"finalize_allocation","nativeSrc":"1385:281:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"1414:6:55","nodeType":"YulTypedName","src":"1414:6:55","type":""},{"name":"size","nativeSrc":"1422:4:55","nodeType":"YulTypedName","src":"1422:4:55","type":""}],"src":"1385:281:55"},{"body":{"nativeSrc":"1713:88:55","nodeType":"YulBlock","src":"1713:88:55","statements":[{"nativeSrc":"1723:30:55","nodeType":"YulAssignment","src":"1723:30:55","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nativeSrc":"1733:18:55","nodeType":"YulIdentifier","src":"1733:18:55"},"nativeSrc":"1733:20:55","nodeType":"YulFunctionCall","src":"1733:20:55"},"variableNames":[{"name":"memPtr","nativeSrc":"1723:6:55","nodeType":"YulIdentifier","src":"1723:6:55"}]},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"1782:6:55","nodeType":"YulIdentifier","src":"1782:6:55"},{"name":"size","nativeSrc":"1790:4:55","nodeType":"YulIdentifier","src":"1790:4:55"}],"functionName":{"name":"finalize_allocation","nativeSrc":"1762:19:55","nodeType":"YulIdentifier","src":"1762:19:55"},"nativeSrc":"1762:33:55","nodeType":"YulFunctionCall","src":"1762:33:55"},"nativeSrc":"1762:33:55","nodeType":"YulExpressionStatement","src":"1762:33:55"}]},"name":"allocate_memory","nativeSrc":"1672:129:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nativeSrc":"1697:4:55","nodeType":"YulTypedName","src":"1697:4:55","type":""}],"returnVariables":[{"name":"memPtr","nativeSrc":"1706:6:55","nodeType":"YulTypedName","src":"1706:6:55","type":""}],"src":"1672:129:55"},{"body":{"nativeSrc":"1873:241:55","nodeType":"YulBlock","src":"1873:241:55","statements":[{"body":{"nativeSrc":"1978:22:55","nodeType":"YulBlock","src":"1978:22:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"1980:16:55","nodeType":"YulIdentifier","src":"1980:16:55"},"nativeSrc":"1980:18:55","nodeType":"YulFunctionCall","src":"1980:18:55"},"nativeSrc":"1980:18:55","nodeType":"YulExpressionStatement","src":"1980:18:55"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"1950:6:55","nodeType":"YulIdentifier","src":"1950:6:55"},{"kind":"number","nativeSrc":"1958:18:55","nodeType":"YulLiteral","src":"1958:18:55","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1947:2:55","nodeType":"YulIdentifier","src":"1947:2:55"},"nativeSrc":"1947:30:55","nodeType":"YulFunctionCall","src":"1947:30:55"},"nativeSrc":"1944:56:55","nodeType":"YulIf","src":"1944:56:55"},{"nativeSrc":"2010:37:55","nodeType":"YulAssignment","src":"2010:37:55","value":{"arguments":[{"name":"length","nativeSrc":"2040:6:55","nodeType":"YulIdentifier","src":"2040:6:55"}],"functionName":{"name":"round_up_to_mul_of_32","nativeSrc":"2018:21:55","nodeType":"YulIdentifier","src":"2018:21:55"},"nativeSrc":"2018:29:55","nodeType":"YulFunctionCall","src":"2018:29:55"},"variableNames":[{"name":"size","nativeSrc":"2010:4:55","nodeType":"YulIdentifier","src":"2010:4:55"}]},{"nativeSrc":"2084:23:55","nodeType":"YulAssignment","src":"2084:23:55","value":{"arguments":[{"name":"size","nativeSrc":"2096:4:55","nodeType":"YulIdentifier","src":"2096:4:55"},{"kind":"number","nativeSrc":"2102:4:55","nodeType":"YulLiteral","src":"2102:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2092:3:55","nodeType":"YulIdentifier","src":"2092:3:55"},"nativeSrc":"2092:15:55","nodeType":"YulFunctionCall","src":"2092:15:55"},"variableNames":[{"name":"size","nativeSrc":"2084:4:55","nodeType":"YulIdentifier","src":"2084:4:55"}]}]},"name":"array_allocation_size_t_bytes_memory_ptr","nativeSrc":"1807:307:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nativeSrc":"1857:6:55","nodeType":"YulTypedName","src":"1857:6:55","type":""}],"returnVariables":[{"name":"size","nativeSrc":"1868:4:55","nodeType":"YulTypedName","src":"1868:4:55","type":""}],"src":"1807:307:55"},{"body":{"nativeSrc":"2182:77:55","nodeType":"YulBlock","src":"2182:77:55","statements":[{"expression":{"arguments":[{"name":"dst","nativeSrc":"2199:3:55","nodeType":"YulIdentifier","src":"2199:3:55"},{"name":"src","nativeSrc":"2204:3:55","nodeType":"YulIdentifier","src":"2204:3:55"},{"name":"length","nativeSrc":"2209:6:55","nodeType":"YulIdentifier","src":"2209:6:55"}],"functionName":{"name":"mcopy","nativeSrc":"2193:5:55","nodeType":"YulIdentifier","src":"2193:5:55"},"nativeSrc":"2193:23:55","nodeType":"YulFunctionCall","src":"2193:23:55"},"nativeSrc":"2193:23:55","nodeType":"YulExpressionStatement","src":"2193:23:55"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"2236:3:55","nodeType":"YulIdentifier","src":"2236:3:55"},{"name":"length","nativeSrc":"2241:6:55","nodeType":"YulIdentifier","src":"2241:6:55"}],"functionName":{"name":"add","nativeSrc":"2232:3:55","nodeType":"YulIdentifier","src":"2232:3:55"},"nativeSrc":"2232:16:55","nodeType":"YulFunctionCall","src":"2232:16:55"},{"kind":"number","nativeSrc":"2250:1:55","nodeType":"YulLiteral","src":"2250:1:55","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"2225:6:55","nodeType":"YulIdentifier","src":"2225:6:55"},"nativeSrc":"2225:27:55","nodeType":"YulFunctionCall","src":"2225:27:55"},"nativeSrc":"2225:27:55","nodeType":"YulExpressionStatement","src":"2225:27:55"}]},"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"2120:139:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nativeSrc":"2164:3:55","nodeType":"YulTypedName","src":"2164:3:55","type":""},{"name":"dst","nativeSrc":"2169:3:55","nodeType":"YulTypedName","src":"2169:3:55","type":""},{"name":"length","nativeSrc":"2174:6:55","nodeType":"YulTypedName","src":"2174:6:55","type":""}],"src":"2120:139:55"},{"body":{"nativeSrc":"2359:338:55","nodeType":"YulBlock","src":"2359:338:55","statements":[{"nativeSrc":"2369:74:55","nodeType":"YulAssignment","src":"2369:74:55","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"2435:6:55","nodeType":"YulIdentifier","src":"2435:6:55"}],"functionName":{"name":"array_allocation_size_t_bytes_memory_ptr","nativeSrc":"2394:40:55","nodeType":"YulIdentifier","src":"2394:40:55"},"nativeSrc":"2394:48:55","nodeType":"YulFunctionCall","src":"2394:48:55"}],"functionName":{"name":"allocate_memory","nativeSrc":"2378:15:55","nodeType":"YulIdentifier","src":"2378:15:55"},"nativeSrc":"2378:65:55","nodeType":"YulFunctionCall","src":"2378:65:55"},"variableNames":[{"name":"array","nativeSrc":"2369:5:55","nodeType":"YulIdentifier","src":"2369:5:55"}]},{"expression":{"arguments":[{"name":"array","nativeSrc":"2459:5:55","nodeType":"YulIdentifier","src":"2459:5:55"},{"name":"length","nativeSrc":"2466:6:55","nodeType":"YulIdentifier","src":"2466:6:55"}],"functionName":{"name":"mstore","nativeSrc":"2452:6:55","nodeType":"YulIdentifier","src":"2452:6:55"},"nativeSrc":"2452:21:55","nodeType":"YulFunctionCall","src":"2452:21:55"},"nativeSrc":"2452:21:55","nodeType":"YulExpressionStatement","src":"2452:21:55"},{"nativeSrc":"2482:27:55","nodeType":"YulVariableDeclaration","src":"2482:27:55","value":{"arguments":[{"name":"array","nativeSrc":"2497:5:55","nodeType":"YulIdentifier","src":"2497:5:55"},{"kind":"number","nativeSrc":"2504:4:55","nodeType":"YulLiteral","src":"2504:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2493:3:55","nodeType":"YulIdentifier","src":"2493:3:55"},"nativeSrc":"2493:16:55","nodeType":"YulFunctionCall","src":"2493:16:55"},"variables":[{"name":"dst","nativeSrc":"2486:3:55","nodeType":"YulTypedName","src":"2486:3:55","type":""}]},{"body":{"nativeSrc":"2547:83:55","nodeType":"YulBlock","src":"2547:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nativeSrc":"2549:77:55","nodeType":"YulIdentifier","src":"2549:77:55"},"nativeSrc":"2549:79:55","nodeType":"YulFunctionCall","src":"2549:79:55"},"nativeSrc":"2549:79:55","nodeType":"YulExpressionStatement","src":"2549:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"2528:3:55","nodeType":"YulIdentifier","src":"2528:3:55"},{"name":"length","nativeSrc":"2533:6:55","nodeType":"YulIdentifier","src":"2533:6:55"}],"functionName":{"name":"add","nativeSrc":"2524:3:55","nodeType":"YulIdentifier","src":"2524:3:55"},"nativeSrc":"2524:16:55","nodeType":"YulFunctionCall","src":"2524:16:55"},{"name":"end","nativeSrc":"2542:3:55","nodeType":"YulIdentifier","src":"2542:3:55"}],"functionName":{"name":"gt","nativeSrc":"2521:2:55","nodeType":"YulIdentifier","src":"2521:2:55"},"nativeSrc":"2521:25:55","nodeType":"YulFunctionCall","src":"2521:25:55"},"nativeSrc":"2518:112:55","nodeType":"YulIf","src":"2518:112:55"},{"expression":{"arguments":[{"name":"src","nativeSrc":"2674:3:55","nodeType":"YulIdentifier","src":"2674:3:55"},{"name":"dst","nativeSrc":"2679:3:55","nodeType":"YulIdentifier","src":"2679:3:55"},{"name":"length","nativeSrc":"2684:6:55","nodeType":"YulIdentifier","src":"2684:6:55"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"2639:34:55","nodeType":"YulIdentifier","src":"2639:34:55"},"nativeSrc":"2639:52:55","nodeType":"YulFunctionCall","src":"2639:52:55"},"nativeSrc":"2639:52:55","nodeType":"YulExpressionStatement","src":"2639:52:55"}]},"name":"abi_decode_available_length_t_bytes_memory_ptr_fromMemory","nativeSrc":"2265:432:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nativeSrc":"2332:3:55","nodeType":"YulTypedName","src":"2332:3:55","type":""},{"name":"length","nativeSrc":"2337:6:55","nodeType":"YulTypedName","src":"2337:6:55","type":""},{"name":"end","nativeSrc":"2345:3:55","nodeType":"YulTypedName","src":"2345:3:55","type":""}],"returnVariables":[{"name":"array","nativeSrc":"2353:5:55","nodeType":"YulTypedName","src":"2353:5:55","type":""}],"src":"2265:432:55"},{"body":{"nativeSrc":"2788:281:55","nodeType":"YulBlock","src":"2788:281:55","statements":[{"body":{"nativeSrc":"2837:83:55","nodeType":"YulBlock","src":"2837:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nativeSrc":"2839:77:55","nodeType":"YulIdentifier","src":"2839:77:55"},"nativeSrc":"2839:79:55","nodeType":"YulFunctionCall","src":"2839:79:55"},"nativeSrc":"2839:79:55","nodeType":"YulExpressionStatement","src":"2839:79:55"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"2816:6:55","nodeType":"YulIdentifier","src":"2816:6:55"},{"kind":"number","nativeSrc":"2824:4:55","nodeType":"YulLiteral","src":"2824:4:55","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"2812:3:55","nodeType":"YulIdentifier","src":"2812:3:55"},"nativeSrc":"2812:17:55","nodeType":"YulFunctionCall","src":"2812:17:55"},{"name":"end","nativeSrc":"2831:3:55","nodeType":"YulIdentifier","src":"2831:3:55"}],"functionName":{"name":"slt","nativeSrc":"2808:3:55","nodeType":"YulIdentifier","src":"2808:3:55"},"nativeSrc":"2808:27:55","nodeType":"YulFunctionCall","src":"2808:27:55"}],"functionName":{"name":"iszero","nativeSrc":"2801:6:55","nodeType":"YulIdentifier","src":"2801:6:55"},"nativeSrc":"2801:35:55","nodeType":"YulFunctionCall","src":"2801:35:55"},"nativeSrc":"2798:122:55","nodeType":"YulIf","src":"2798:122:55"},{"nativeSrc":"2929:27:55","nodeType":"YulVariableDeclaration","src":"2929:27:55","value":{"arguments":[{"name":"offset","nativeSrc":"2949:6:55","nodeType":"YulIdentifier","src":"2949:6:55"}],"functionName":{"name":"mload","nativeSrc":"2943:5:55","nodeType":"YulIdentifier","src":"2943:5:55"},"nativeSrc":"2943:13:55","nodeType":"YulFunctionCall","src":"2943:13:55"},"variables":[{"name":"length","nativeSrc":"2933:6:55","nodeType":"YulTypedName","src":"2933:6:55","type":""}]},{"nativeSrc":"2965:98:55","nodeType":"YulAssignment","src":"2965:98:55","value":{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"3036:6:55","nodeType":"YulIdentifier","src":"3036:6:55"},{"kind":"number","nativeSrc":"3044:4:55","nodeType":"YulLiteral","src":"3044:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3032:3:55","nodeType":"YulIdentifier","src":"3032:3:55"},"nativeSrc":"3032:17:55","nodeType":"YulFunctionCall","src":"3032:17:55"},{"name":"length","nativeSrc":"3051:6:55","nodeType":"YulIdentifier","src":"3051:6:55"},{"name":"end","nativeSrc":"3059:3:55","nodeType":"YulIdentifier","src":"3059:3:55"}],"functionName":{"name":"abi_decode_available_length_t_bytes_memory_ptr_fromMemory","nativeSrc":"2974:57:55","nodeType":"YulIdentifier","src":"2974:57:55"},"nativeSrc":"2974:89:55","nodeType":"YulFunctionCall","src":"2974:89:55"},"variableNames":[{"name":"array","nativeSrc":"2965:5:55","nodeType":"YulIdentifier","src":"2965:5:55"}]}]},"name":"abi_decode_t_bytes_memory_ptr_fromMemory","nativeSrc":"2716:353:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"2766:6:55","nodeType":"YulTypedName","src":"2766:6:55","type":""},{"name":"end","nativeSrc":"2774:3:55","nodeType":"YulTypedName","src":"2774:3:55","type":""}],"returnVariables":[{"name":"array","nativeSrc":"2782:5:55","nodeType":"YulTypedName","src":"2782:5:55","type":""}],"src":"2716:353:55"},{"body":{"nativeSrc":"3195:714:55","nodeType":"YulBlock","src":"3195:714:55","statements":[{"body":{"nativeSrc":"3241:83:55","nodeType":"YulBlock","src":"3241:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"3243:77:55","nodeType":"YulIdentifier","src":"3243:77:55"},"nativeSrc":"3243:79:55","nodeType":"YulFunctionCall","src":"3243:79:55"},"nativeSrc":"3243:79:55","nodeType":"YulExpressionStatement","src":"3243:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3216:7:55","nodeType":"YulIdentifier","src":"3216:7:55"},{"name":"headStart","nativeSrc":"3225:9:55","nodeType":"YulIdentifier","src":"3225:9:55"}],"functionName":{"name":"sub","nativeSrc":"3212:3:55","nodeType":"YulIdentifier","src":"3212:3:55"},"nativeSrc":"3212:23:55","nodeType":"YulFunctionCall","src":"3212:23:55"},{"kind":"number","nativeSrc":"3237:2:55","nodeType":"YulLiteral","src":"3237:2:55","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"3208:3:55","nodeType":"YulIdentifier","src":"3208:3:55"},"nativeSrc":"3208:32:55","nodeType":"YulFunctionCall","src":"3208:32:55"},"nativeSrc":"3205:119:55","nodeType":"YulIf","src":"3205:119:55"},{"nativeSrc":"3334:128:55","nodeType":"YulBlock","src":"3334:128:55","statements":[{"nativeSrc":"3349:15:55","nodeType":"YulVariableDeclaration","src":"3349:15:55","value":{"kind":"number","nativeSrc":"3363:1:55","nodeType":"YulLiteral","src":"3363:1:55","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"3353:6:55","nodeType":"YulTypedName","src":"3353:6:55","type":""}]},{"nativeSrc":"3378:74:55","nodeType":"YulAssignment","src":"3378:74:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3424:9:55","nodeType":"YulIdentifier","src":"3424:9:55"},{"name":"offset","nativeSrc":"3435:6:55","nodeType":"YulIdentifier","src":"3435:6:55"}],"functionName":{"name":"add","nativeSrc":"3420:3:55","nodeType":"YulIdentifier","src":"3420:3:55"},"nativeSrc":"3420:22:55","nodeType":"YulFunctionCall","src":"3420:22:55"},{"name":"dataEnd","nativeSrc":"3444:7:55","nodeType":"YulIdentifier","src":"3444:7:55"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nativeSrc":"3388:31:55","nodeType":"YulIdentifier","src":"3388:31:55"},"nativeSrc":"3388:64:55","nodeType":"YulFunctionCall","src":"3388:64:55"},"variableNames":[{"name":"value0","nativeSrc":"3378:6:55","nodeType":"YulIdentifier","src":"3378:6:55"}]}]},{"nativeSrc":"3472:129:55","nodeType":"YulBlock","src":"3472:129:55","statements":[{"nativeSrc":"3487:16:55","nodeType":"YulVariableDeclaration","src":"3487:16:55","value":{"kind":"number","nativeSrc":"3501:2:55","nodeType":"YulLiteral","src":"3501:2:55","type":"","value":"32"},"variables":[{"name":"offset","nativeSrc":"3491:6:55","nodeType":"YulTypedName","src":"3491:6:55","type":""}]},{"nativeSrc":"3517:74:55","nodeType":"YulAssignment","src":"3517:74:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3563:9:55","nodeType":"YulIdentifier","src":"3563:9:55"},{"name":"offset","nativeSrc":"3574:6:55","nodeType":"YulIdentifier","src":"3574:6:55"}],"functionName":{"name":"add","nativeSrc":"3559:3:55","nodeType":"YulIdentifier","src":"3559:3:55"},"nativeSrc":"3559:22:55","nodeType":"YulFunctionCall","src":"3559:22:55"},{"name":"dataEnd","nativeSrc":"3583:7:55","nodeType":"YulIdentifier","src":"3583:7:55"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nativeSrc":"3527:31:55","nodeType":"YulIdentifier","src":"3527:31:55"},"nativeSrc":"3527:64:55","nodeType":"YulFunctionCall","src":"3527:64:55"},"variableNames":[{"name":"value1","nativeSrc":"3517:6:55","nodeType":"YulIdentifier","src":"3517:6:55"}]}]},{"nativeSrc":"3611:291:55","nodeType":"YulBlock","src":"3611:291:55","statements":[{"nativeSrc":"3626:39:55","nodeType":"YulVariableDeclaration","src":"3626:39:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3650:9:55","nodeType":"YulIdentifier","src":"3650:9:55"},{"kind":"number","nativeSrc":"3661:2:55","nodeType":"YulLiteral","src":"3661:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"3646:3:55","nodeType":"YulIdentifier","src":"3646:3:55"},"nativeSrc":"3646:18:55","nodeType":"YulFunctionCall","src":"3646:18:55"}],"functionName":{"name":"mload","nativeSrc":"3640:5:55","nodeType":"YulIdentifier","src":"3640:5:55"},"nativeSrc":"3640:25:55","nodeType":"YulFunctionCall","src":"3640:25:55"},"variables":[{"name":"offset","nativeSrc":"3630:6:55","nodeType":"YulTypedName","src":"3630:6:55","type":""}]},{"body":{"nativeSrc":"3712:83:55","nodeType":"YulBlock","src":"3712:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"3714:77:55","nodeType":"YulIdentifier","src":"3714:77:55"},"nativeSrc":"3714:79:55","nodeType":"YulFunctionCall","src":"3714:79:55"},"nativeSrc":"3714:79:55","nodeType":"YulExpressionStatement","src":"3714:79:55"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"3684:6:55","nodeType":"YulIdentifier","src":"3684:6:55"},{"kind":"number","nativeSrc":"3692:18:55","nodeType":"YulLiteral","src":"3692:18:55","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3681:2:55","nodeType":"YulIdentifier","src":"3681:2:55"},"nativeSrc":"3681:30:55","nodeType":"YulFunctionCall","src":"3681:30:55"},"nativeSrc":"3678:117:55","nodeType":"YulIf","src":"3678:117:55"},{"nativeSrc":"3809:83:55","nodeType":"YulAssignment","src":"3809:83:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3864:9:55","nodeType":"YulIdentifier","src":"3864:9:55"},{"name":"offset","nativeSrc":"3875:6:55","nodeType":"YulIdentifier","src":"3875:6:55"}],"functionName":{"name":"add","nativeSrc":"3860:3:55","nodeType":"YulIdentifier","src":"3860:3:55"},"nativeSrc":"3860:22:55","nodeType":"YulFunctionCall","src":"3860:22:55"},{"name":"dataEnd","nativeSrc":"3884:7:55","nodeType":"YulIdentifier","src":"3884:7:55"}],"functionName":{"name":"abi_decode_t_bytes_memory_ptr_fromMemory","nativeSrc":"3819:40:55","nodeType":"YulIdentifier","src":"3819:40:55"},"nativeSrc":"3819:73:55","nodeType":"YulFunctionCall","src":"3819:73:55"},"variableNames":[{"name":"value2","nativeSrc":"3809:6:55","nodeType":"YulIdentifier","src":"3809:6:55"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_bytes_memory_ptr_fromMemory","nativeSrc":"3075:834:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3149:9:55","nodeType":"YulTypedName","src":"3149:9:55","type":""},{"name":"dataEnd","nativeSrc":"3160:7:55","nodeType":"YulTypedName","src":"3160:7:55","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3172:6:55","nodeType":"YulTypedName","src":"3172:6:55","type":""},{"name":"value1","nativeSrc":"3180:6:55","nodeType":"YulTypedName","src":"3180:6:55","type":""},{"name":"value2","nativeSrc":"3188:6:55","nodeType":"YulTypedName","src":"3188:6:55","type":""}],"src":"3075:834:55"},{"body":{"nativeSrc":"3960:32:55","nodeType":"YulBlock","src":"3960:32:55","statements":[{"nativeSrc":"3970:16:55","nodeType":"YulAssignment","src":"3970:16:55","value":{"name":"value","nativeSrc":"3981:5:55","nodeType":"YulIdentifier","src":"3981:5:55"},"variableNames":[{"name":"cleaned","nativeSrc":"3970:7:55","nodeType":"YulIdentifier","src":"3970:7:55"}]}]},"name":"cleanup_t_uint256","nativeSrc":"3915:77:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"3942:5:55","nodeType":"YulTypedName","src":"3942:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"3952:7:55","nodeType":"YulTypedName","src":"3952:7:55","type":""}],"src":"3915:77:55"},{"body":{"nativeSrc":"4026:152:55","nodeType":"YulBlock","src":"4026:152:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4043:1:55","nodeType":"YulLiteral","src":"4043:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"4046:77:55","nodeType":"YulLiteral","src":"4046:77:55","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"4036:6:55","nodeType":"YulIdentifier","src":"4036:6:55"},"nativeSrc":"4036:88:55","nodeType":"YulFunctionCall","src":"4036:88:55"},"nativeSrc":"4036:88:55","nodeType":"YulExpressionStatement","src":"4036:88:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4140:1:55","nodeType":"YulLiteral","src":"4140:1:55","type":"","value":"4"},{"kind":"number","nativeSrc":"4143:4:55","nodeType":"YulLiteral","src":"4143:4:55","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"4133:6:55","nodeType":"YulIdentifier","src":"4133:6:55"},"nativeSrc":"4133:15:55","nodeType":"YulFunctionCall","src":"4133:15:55"},"nativeSrc":"4133:15:55","nodeType":"YulExpressionStatement","src":"4133:15:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4164:1:55","nodeType":"YulLiteral","src":"4164:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"4167:4:55","nodeType":"YulLiteral","src":"4167:4:55","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"4157:6:55","nodeType":"YulIdentifier","src":"4157:6:55"},"nativeSrc":"4157:15:55","nodeType":"YulFunctionCall","src":"4157:15:55"},"nativeSrc":"4157:15:55","nodeType":"YulExpressionStatement","src":"4157:15:55"}]},"name":"panic_error_0x11","nativeSrc":"3998:180:55","nodeType":"YulFunctionDefinition","src":"3998:180:55"},{"body":{"nativeSrc":"4229:149:55","nodeType":"YulBlock","src":"4229:149:55","statements":[{"nativeSrc":"4239:25:55","nodeType":"YulAssignment","src":"4239:25:55","value":{"arguments":[{"name":"x","nativeSrc":"4262:1:55","nodeType":"YulIdentifier","src":"4262:1:55"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"4244:17:55","nodeType":"YulIdentifier","src":"4244:17:55"},"nativeSrc":"4244:20:55","nodeType":"YulFunctionCall","src":"4244:20:55"},"variableNames":[{"name":"x","nativeSrc":"4239:1:55","nodeType":"YulIdentifier","src":"4239:1:55"}]},{"nativeSrc":"4273:25:55","nodeType":"YulAssignment","src":"4273:25:55","value":{"arguments":[{"name":"y","nativeSrc":"4296:1:55","nodeType":"YulIdentifier","src":"4296:1:55"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"4278:17:55","nodeType":"YulIdentifier","src":"4278:17:55"},"nativeSrc":"4278:20:55","nodeType":"YulFunctionCall","src":"4278:20:55"},"variableNames":[{"name":"y","nativeSrc":"4273:1:55","nodeType":"YulIdentifier","src":"4273:1:55"}]},{"nativeSrc":"4307:17:55","nodeType":"YulAssignment","src":"4307:17:55","value":{"arguments":[{"name":"x","nativeSrc":"4319:1:55","nodeType":"YulIdentifier","src":"4319:1:55"},{"name":"y","nativeSrc":"4322:1:55","nodeType":"YulIdentifier","src":"4322:1:55"}],"functionName":{"name":"sub","nativeSrc":"4315:3:55","nodeType":"YulIdentifier","src":"4315:3:55"},"nativeSrc":"4315:9:55","nodeType":"YulFunctionCall","src":"4315:9:55"},"variableNames":[{"name":"diff","nativeSrc":"4307:4:55","nodeType":"YulIdentifier","src":"4307:4:55"}]},{"body":{"nativeSrc":"4349:22:55","nodeType":"YulBlock","src":"4349:22:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"4351:16:55","nodeType":"YulIdentifier","src":"4351:16:55"},"nativeSrc":"4351:18:55","nodeType":"YulFunctionCall","src":"4351:18:55"},"nativeSrc":"4351:18:55","nodeType":"YulExpressionStatement","src":"4351:18:55"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"4340:4:55","nodeType":"YulIdentifier","src":"4340:4:55"},{"name":"x","nativeSrc":"4346:1:55","nodeType":"YulIdentifier","src":"4346:1:55"}],"functionName":{"name":"gt","nativeSrc":"4337:2:55","nodeType":"YulIdentifier","src":"4337:2:55"},"nativeSrc":"4337:11:55","nodeType":"YulFunctionCall","src":"4337:11:55"},"nativeSrc":"4334:37:55","nodeType":"YulIf","src":"4334:37:55"}]},"name":"checked_sub_t_uint256","nativeSrc":"4184:194:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"4215:1:55","nodeType":"YulTypedName","src":"4215:1:55","type":""},{"name":"y","nativeSrc":"4218:1:55","nodeType":"YulTypedName","src":"4218:1:55","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"4224:4:55","nodeType":"YulTypedName","src":"4224:4:55","type":""}],"src":"4184:194:55"},{"body":{"nativeSrc":"4412:152:55","nodeType":"YulBlock","src":"4412:152:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4429:1:55","nodeType":"YulLiteral","src":"4429:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"4432:77:55","nodeType":"YulLiteral","src":"4432:77:55","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"4422:6:55","nodeType":"YulIdentifier","src":"4422:6:55"},"nativeSrc":"4422:88:55","nodeType":"YulFunctionCall","src":"4422:88:55"},"nativeSrc":"4422:88:55","nodeType":"YulExpressionStatement","src":"4422:88:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4526:1:55","nodeType":"YulLiteral","src":"4526:1:55","type":"","value":"4"},{"kind":"number","nativeSrc":"4529:4:55","nodeType":"YulLiteral","src":"4529:4:55","type":"","value":"0x01"}],"functionName":{"name":"mstore","nativeSrc":"4519:6:55","nodeType":"YulIdentifier","src":"4519:6:55"},"nativeSrc":"4519:15:55","nodeType":"YulFunctionCall","src":"4519:15:55"},"nativeSrc":"4519:15:55","nodeType":"YulExpressionStatement","src":"4519:15:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4550:1:55","nodeType":"YulLiteral","src":"4550:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"4553:4:55","nodeType":"YulLiteral","src":"4553:4:55","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"4543:6:55","nodeType":"YulIdentifier","src":"4543:6:55"},"nativeSrc":"4543:15:55","nodeType":"YulFunctionCall","src":"4543:15:55"},"nativeSrc":"4543:15:55","nodeType":"YulExpressionStatement","src":"4543:15:55"}]},"name":"panic_error_0x01","nativeSrc":"4384:180:55","nodeType":"YulFunctionDefinition","src":"4384:180:55"},{"body":{"nativeSrc":"4635:53:55","nodeType":"YulBlock","src":"4635:53:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"4652:3:55","nodeType":"YulIdentifier","src":"4652:3:55"},{"arguments":[{"name":"value","nativeSrc":"4675:5:55","nodeType":"YulIdentifier","src":"4675:5:55"}],"functionName":{"name":"cleanup_t_address","nativeSrc":"4657:17:55","nodeType":"YulIdentifier","src":"4657:17:55"},"nativeSrc":"4657:24:55","nodeType":"YulFunctionCall","src":"4657:24:55"}],"functionName":{"name":"mstore","nativeSrc":"4645:6:55","nodeType":"YulIdentifier","src":"4645:6:55"},"nativeSrc":"4645:37:55","nodeType":"YulFunctionCall","src":"4645:37:55"},"nativeSrc":"4645:37:55","nodeType":"YulExpressionStatement","src":"4645:37:55"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"4570:118:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"4623:5:55","nodeType":"YulTypedName","src":"4623:5:55","type":""},{"name":"pos","nativeSrc":"4630:3:55","nodeType":"YulTypedName","src":"4630:3:55","type":""}],"src":"4570:118:55"},{"body":{"nativeSrc":"4820:206:55","nodeType":"YulBlock","src":"4820:206:55","statements":[{"nativeSrc":"4830:26:55","nodeType":"YulAssignment","src":"4830:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"4842:9:55","nodeType":"YulIdentifier","src":"4842:9:55"},{"kind":"number","nativeSrc":"4853:2:55","nodeType":"YulLiteral","src":"4853:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"4838:3:55","nodeType":"YulIdentifier","src":"4838:3:55"},"nativeSrc":"4838:18:55","nodeType":"YulFunctionCall","src":"4838:18:55"},"variableNames":[{"name":"tail","nativeSrc":"4830:4:55","nodeType":"YulIdentifier","src":"4830:4:55"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"4910:6:55","nodeType":"YulIdentifier","src":"4910:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"4923:9:55","nodeType":"YulIdentifier","src":"4923:9:55"},{"kind":"number","nativeSrc":"4934:1:55","nodeType":"YulLiteral","src":"4934:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"4919:3:55","nodeType":"YulIdentifier","src":"4919:3:55"},"nativeSrc":"4919:17:55","nodeType":"YulFunctionCall","src":"4919:17:55"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"4866:43:55","nodeType":"YulIdentifier","src":"4866:43:55"},"nativeSrc":"4866:71:55","nodeType":"YulFunctionCall","src":"4866:71:55"},"nativeSrc":"4866:71:55","nodeType":"YulExpressionStatement","src":"4866:71:55"},{"expression":{"arguments":[{"name":"value1","nativeSrc":"4991:6:55","nodeType":"YulIdentifier","src":"4991:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"5004:9:55","nodeType":"YulIdentifier","src":"5004:9:55"},{"kind":"number","nativeSrc":"5015:2:55","nodeType":"YulLiteral","src":"5015:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5000:3:55","nodeType":"YulIdentifier","src":"5000:3:55"},"nativeSrc":"5000:18:55","nodeType":"YulFunctionCall","src":"5000:18:55"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"4947:43:55","nodeType":"YulIdentifier","src":"4947:43:55"},"nativeSrc":"4947:72:55","nodeType":"YulFunctionCall","src":"4947:72:55"},"nativeSrc":"4947:72:55","nodeType":"YulExpressionStatement","src":"4947:72:55"}]},"name":"abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed","nativeSrc":"4694:332:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4784:9:55","nodeType":"YulTypedName","src":"4784:9:55","type":""},{"name":"value1","nativeSrc":"4796:6:55","nodeType":"YulTypedName","src":"4796:6:55","type":""},{"name":"value0","nativeSrc":"4804:6:55","nodeType":"YulTypedName","src":"4804:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4815:4:55","nodeType":"YulTypedName","src":"4815:4:55","type":""}],"src":"4694:332:55"},{"body":{"nativeSrc":"5128:73:55","nodeType":"YulBlock","src":"5128:73:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"5145:3:55","nodeType":"YulIdentifier","src":"5145:3:55"},{"name":"length","nativeSrc":"5150:6:55","nodeType":"YulIdentifier","src":"5150:6:55"}],"functionName":{"name":"mstore","nativeSrc":"5138:6:55","nodeType":"YulIdentifier","src":"5138:6:55"},"nativeSrc":"5138:19:55","nodeType":"YulFunctionCall","src":"5138:19:55"},"nativeSrc":"5138:19:55","nodeType":"YulExpressionStatement","src":"5138:19:55"},{"nativeSrc":"5166:29:55","nodeType":"YulAssignment","src":"5166:29:55","value":{"arguments":[{"name":"pos","nativeSrc":"5185:3:55","nodeType":"YulIdentifier","src":"5185:3:55"},{"kind":"number","nativeSrc":"5190:4:55","nodeType":"YulLiteral","src":"5190:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5181:3:55","nodeType":"YulIdentifier","src":"5181:3:55"},"nativeSrc":"5181:14:55","nodeType":"YulFunctionCall","src":"5181:14:55"},"variableNames":[{"name":"updated_pos","nativeSrc":"5166:11:55","nodeType":"YulIdentifier","src":"5166:11:55"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"5032:169:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"5100:3:55","nodeType":"YulTypedName","src":"5100:3:55","type":""},{"name":"length","nativeSrc":"5105:6:55","nodeType":"YulTypedName","src":"5105:6:55","type":""}],"returnVariables":[{"name":"updated_pos","nativeSrc":"5116:11:55","nodeType":"YulTypedName","src":"5116:11:55","type":""}],"src":"5032:169:55"},{"body":{"nativeSrc":"5313:119:55","nodeType":"YulBlock","src":"5313:119:55","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"5335:6:55","nodeType":"YulIdentifier","src":"5335:6:55"},{"kind":"number","nativeSrc":"5343:1:55","nodeType":"YulLiteral","src":"5343:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"5331:3:55","nodeType":"YulIdentifier","src":"5331:3:55"},"nativeSrc":"5331:14:55","nodeType":"YulFunctionCall","src":"5331:14:55"},{"hexValue":"455243313936373a206e65772061646d696e20697320746865207a65726f2061","kind":"string","nativeSrc":"5347:34:55","nodeType":"YulLiteral","src":"5347:34:55","type":"","value":"ERC1967: new admin is the zero a"}],"functionName":{"name":"mstore","nativeSrc":"5324:6:55","nodeType":"YulIdentifier","src":"5324:6:55"},"nativeSrc":"5324:58:55","nodeType":"YulFunctionCall","src":"5324:58:55"},"nativeSrc":"5324:58:55","nodeType":"YulExpressionStatement","src":"5324:58:55"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"5403:6:55","nodeType":"YulIdentifier","src":"5403:6:55"},{"kind":"number","nativeSrc":"5411:2:55","nodeType":"YulLiteral","src":"5411:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5399:3:55","nodeType":"YulIdentifier","src":"5399:3:55"},"nativeSrc":"5399:15:55","nodeType":"YulFunctionCall","src":"5399:15:55"},{"hexValue":"646472657373","kind":"string","nativeSrc":"5416:8:55","nodeType":"YulLiteral","src":"5416:8:55","type":"","value":"ddress"}],"functionName":{"name":"mstore","nativeSrc":"5392:6:55","nodeType":"YulIdentifier","src":"5392:6:55"},"nativeSrc":"5392:33:55","nodeType":"YulFunctionCall","src":"5392:33:55"},"nativeSrc":"5392:33:55","nodeType":"YulExpressionStatement","src":"5392:33:55"}]},"name":"store_literal_in_memory_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5","nativeSrc":"5207:225:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"5305:6:55","nodeType":"YulTypedName","src":"5305:6:55","type":""}],"src":"5207:225:55"},{"body":{"nativeSrc":"5584:220:55","nodeType":"YulBlock","src":"5584:220:55","statements":[{"nativeSrc":"5594:74:55","nodeType":"YulAssignment","src":"5594:74:55","value":{"arguments":[{"name":"pos","nativeSrc":"5660:3:55","nodeType":"YulIdentifier","src":"5660:3:55"},{"kind":"number","nativeSrc":"5665:2:55","nodeType":"YulLiteral","src":"5665:2:55","type":"","value":"38"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"5601:58:55","nodeType":"YulIdentifier","src":"5601:58:55"},"nativeSrc":"5601:67:55","nodeType":"YulFunctionCall","src":"5601:67:55"},"variableNames":[{"name":"pos","nativeSrc":"5594:3:55","nodeType":"YulIdentifier","src":"5594:3:55"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"5766:3:55","nodeType":"YulIdentifier","src":"5766:3:55"}],"functionName":{"name":"store_literal_in_memory_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5","nativeSrc":"5677:88:55","nodeType":"YulIdentifier","src":"5677:88:55"},"nativeSrc":"5677:93:55","nodeType":"YulFunctionCall","src":"5677:93:55"},"nativeSrc":"5677:93:55","nodeType":"YulExpressionStatement","src":"5677:93:55"},{"nativeSrc":"5779:19:55","nodeType":"YulAssignment","src":"5779:19:55","value":{"arguments":[{"name":"pos","nativeSrc":"5790:3:55","nodeType":"YulIdentifier","src":"5790:3:55"},{"kind":"number","nativeSrc":"5795:2:55","nodeType":"YulLiteral","src":"5795:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5786:3:55","nodeType":"YulIdentifier","src":"5786:3:55"},"nativeSrc":"5786:12:55","nodeType":"YulFunctionCall","src":"5786:12:55"},"variableNames":[{"name":"end","nativeSrc":"5779:3:55","nodeType":"YulIdentifier","src":"5779:3:55"}]}]},"name":"abi_encode_t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5_to_t_string_memory_ptr_fromStack","nativeSrc":"5438:366:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"5572:3:55","nodeType":"YulTypedName","src":"5572:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"5580:3:55","nodeType":"YulTypedName","src":"5580:3:55","type":""}],"src":"5438:366:55"},{"body":{"nativeSrc":"5981:248:55","nodeType":"YulBlock","src":"5981:248:55","statements":[{"nativeSrc":"5991:26:55","nodeType":"YulAssignment","src":"5991:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"6003:9:55","nodeType":"YulIdentifier","src":"6003:9:55"},{"kind":"number","nativeSrc":"6014:2:55","nodeType":"YulLiteral","src":"6014:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5999:3:55","nodeType":"YulIdentifier","src":"5999:3:55"},"nativeSrc":"5999:18:55","nodeType":"YulFunctionCall","src":"5999:18:55"},"variableNames":[{"name":"tail","nativeSrc":"5991:4:55","nodeType":"YulIdentifier","src":"5991:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6038:9:55","nodeType":"YulIdentifier","src":"6038:9:55"},{"kind":"number","nativeSrc":"6049:1:55","nodeType":"YulLiteral","src":"6049:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"6034:3:55","nodeType":"YulIdentifier","src":"6034:3:55"},"nativeSrc":"6034:17:55","nodeType":"YulFunctionCall","src":"6034:17:55"},{"arguments":[{"name":"tail","nativeSrc":"6057:4:55","nodeType":"YulIdentifier","src":"6057:4:55"},{"name":"headStart","nativeSrc":"6063:9:55","nodeType":"YulIdentifier","src":"6063:9:55"}],"functionName":{"name":"sub","nativeSrc":"6053:3:55","nodeType":"YulIdentifier","src":"6053:3:55"},"nativeSrc":"6053:20:55","nodeType":"YulFunctionCall","src":"6053:20:55"}],"functionName":{"name":"mstore","nativeSrc":"6027:6:55","nodeType":"YulIdentifier","src":"6027:6:55"},"nativeSrc":"6027:47:55","nodeType":"YulFunctionCall","src":"6027:47:55"},"nativeSrc":"6027:47:55","nodeType":"YulExpressionStatement","src":"6027:47:55"},{"nativeSrc":"6083:139:55","nodeType":"YulAssignment","src":"6083:139:55","value":{"arguments":[{"name":"tail","nativeSrc":"6217:4:55","nodeType":"YulIdentifier","src":"6217:4:55"}],"functionName":{"name":"abi_encode_t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5_to_t_string_memory_ptr_fromStack","nativeSrc":"6091:124:55","nodeType":"YulIdentifier","src":"6091:124:55"},"nativeSrc":"6091:131:55","nodeType":"YulFunctionCall","src":"6091:131:55"},"variableNames":[{"name":"tail","nativeSrc":"6083:4:55","nodeType":"YulIdentifier","src":"6083:4:55"}]}]},"name":"abi_encode_tuple_t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"5810:419:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5961:9:55","nodeType":"YulTypedName","src":"5961:9:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5976:4:55","nodeType":"YulTypedName","src":"5976:4:55","type":""}],"src":"5810:419:55"},{"body":{"nativeSrc":"6341:126:55","nodeType":"YulBlock","src":"6341:126:55","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"6363:6:55","nodeType":"YulIdentifier","src":"6363:6:55"},{"kind":"number","nativeSrc":"6371:1:55","nodeType":"YulLiteral","src":"6371:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"6359:3:55","nodeType":"YulIdentifier","src":"6359:3:55"},"nativeSrc":"6359:14:55","nodeType":"YulFunctionCall","src":"6359:14:55"},{"hexValue":"455243313936373a206e657720696d706c656d656e746174696f6e206973206e","kind":"string","nativeSrc":"6375:34:55","nodeType":"YulLiteral","src":"6375:34:55","type":"","value":"ERC1967: new implementation is n"}],"functionName":{"name":"mstore","nativeSrc":"6352:6:55","nodeType":"YulIdentifier","src":"6352:6:55"},"nativeSrc":"6352:58:55","nodeType":"YulFunctionCall","src":"6352:58:55"},"nativeSrc":"6352:58:55","nodeType":"YulExpressionStatement","src":"6352:58:55"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"6431:6:55","nodeType":"YulIdentifier","src":"6431:6:55"},{"kind":"number","nativeSrc":"6439:2:55","nodeType":"YulLiteral","src":"6439:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6427:3:55","nodeType":"YulIdentifier","src":"6427:3:55"},"nativeSrc":"6427:15:55","nodeType":"YulFunctionCall","src":"6427:15:55"},{"hexValue":"6f74206120636f6e7472616374","kind":"string","nativeSrc":"6444:15:55","nodeType":"YulLiteral","src":"6444:15:55","type":"","value":"ot a contract"}],"functionName":{"name":"mstore","nativeSrc":"6420:6:55","nodeType":"YulIdentifier","src":"6420:6:55"},"nativeSrc":"6420:40:55","nodeType":"YulFunctionCall","src":"6420:40:55"},"nativeSrc":"6420:40:55","nodeType":"YulExpressionStatement","src":"6420:40:55"}]},"name":"store_literal_in_memory_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65","nativeSrc":"6235:232:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"6333:6:55","nodeType":"YulTypedName","src":"6333:6:55","type":""}],"src":"6235:232:55"},{"body":{"nativeSrc":"6619:220:55","nodeType":"YulBlock","src":"6619:220:55","statements":[{"nativeSrc":"6629:74:55","nodeType":"YulAssignment","src":"6629:74:55","value":{"arguments":[{"name":"pos","nativeSrc":"6695:3:55","nodeType":"YulIdentifier","src":"6695:3:55"},{"kind":"number","nativeSrc":"6700:2:55","nodeType":"YulLiteral","src":"6700:2:55","type":"","value":"45"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"6636:58:55","nodeType":"YulIdentifier","src":"6636:58:55"},"nativeSrc":"6636:67:55","nodeType":"YulFunctionCall","src":"6636:67:55"},"variableNames":[{"name":"pos","nativeSrc":"6629:3:55","nodeType":"YulIdentifier","src":"6629:3:55"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"6801:3:55","nodeType":"YulIdentifier","src":"6801:3:55"}],"functionName":{"name":"store_literal_in_memory_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65","nativeSrc":"6712:88:55","nodeType":"YulIdentifier","src":"6712:88:55"},"nativeSrc":"6712:93:55","nodeType":"YulFunctionCall","src":"6712:93:55"},"nativeSrc":"6712:93:55","nodeType":"YulExpressionStatement","src":"6712:93:55"},{"nativeSrc":"6814:19:55","nodeType":"YulAssignment","src":"6814:19:55","value":{"arguments":[{"name":"pos","nativeSrc":"6825:3:55","nodeType":"YulIdentifier","src":"6825:3:55"},{"kind":"number","nativeSrc":"6830:2:55","nodeType":"YulLiteral","src":"6830:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"6821:3:55","nodeType":"YulIdentifier","src":"6821:3:55"},"nativeSrc":"6821:12:55","nodeType":"YulFunctionCall","src":"6821:12:55"},"variableNames":[{"name":"end","nativeSrc":"6814:3:55","nodeType":"YulIdentifier","src":"6814:3:55"}]}]},"name":"abi_encode_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65_to_t_string_memory_ptr_fromStack","nativeSrc":"6473:366:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"6607:3:55","nodeType":"YulTypedName","src":"6607:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"6615:3:55","nodeType":"YulTypedName","src":"6615:3:55","type":""}],"src":"6473:366:55"},{"body":{"nativeSrc":"7016:248:55","nodeType":"YulBlock","src":"7016:248:55","statements":[{"nativeSrc":"7026:26:55","nodeType":"YulAssignment","src":"7026:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"7038:9:55","nodeType":"YulIdentifier","src":"7038:9:55"},{"kind":"number","nativeSrc":"7049:2:55","nodeType":"YulLiteral","src":"7049:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7034:3:55","nodeType":"YulIdentifier","src":"7034:3:55"},"nativeSrc":"7034:18:55","nodeType":"YulFunctionCall","src":"7034:18:55"},"variableNames":[{"name":"tail","nativeSrc":"7026:4:55","nodeType":"YulIdentifier","src":"7026:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7073:9:55","nodeType":"YulIdentifier","src":"7073:9:55"},{"kind":"number","nativeSrc":"7084:1:55","nodeType":"YulLiteral","src":"7084:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"7069:3:55","nodeType":"YulIdentifier","src":"7069:3:55"},"nativeSrc":"7069:17:55","nodeType":"YulFunctionCall","src":"7069:17:55"},{"arguments":[{"name":"tail","nativeSrc":"7092:4:55","nodeType":"YulIdentifier","src":"7092:4:55"},{"name":"headStart","nativeSrc":"7098:9:55","nodeType":"YulIdentifier","src":"7098:9:55"}],"functionName":{"name":"sub","nativeSrc":"7088:3:55","nodeType":"YulIdentifier","src":"7088:3:55"},"nativeSrc":"7088:20:55","nodeType":"YulFunctionCall","src":"7088:20:55"}],"functionName":{"name":"mstore","nativeSrc":"7062:6:55","nodeType":"YulIdentifier","src":"7062:6:55"},"nativeSrc":"7062:47:55","nodeType":"YulFunctionCall","src":"7062:47:55"},"nativeSrc":"7062:47:55","nodeType":"YulExpressionStatement","src":"7062:47:55"},{"nativeSrc":"7118:139:55","nodeType":"YulAssignment","src":"7118:139:55","value":{"arguments":[{"name":"tail","nativeSrc":"7252:4:55","nodeType":"YulIdentifier","src":"7252:4:55"}],"functionName":{"name":"abi_encode_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65_to_t_string_memory_ptr_fromStack","nativeSrc":"7126:124:55","nodeType":"YulIdentifier","src":"7126:124:55"},"nativeSrc":"7126:131:55","nodeType":"YulFunctionCall","src":"7126:131:55"},"variableNames":[{"name":"tail","nativeSrc":"7118:4:55","nodeType":"YulIdentifier","src":"7118:4:55"}]}]},"name":"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"6845:419:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6996:9:55","nodeType":"YulTypedName","src":"6996:9:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"7011:4:55","nodeType":"YulTypedName","src":"7011:4:55","type":""}],"src":"6845:419:55"},{"body":{"nativeSrc":"7376:119:55","nodeType":"YulBlock","src":"7376:119:55","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"7398:6:55","nodeType":"YulIdentifier","src":"7398:6:55"},{"kind":"number","nativeSrc":"7406:1:55","nodeType":"YulLiteral","src":"7406:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"7394:3:55","nodeType":"YulIdentifier","src":"7394:3:55"},"nativeSrc":"7394:14:55","nodeType":"YulFunctionCall","src":"7394:14:55"},{"hexValue":"416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f","kind":"string","nativeSrc":"7410:34:55","nodeType":"YulLiteral","src":"7410:34:55","type":"","value":"Address: delegate call to non-co"}],"functionName":{"name":"mstore","nativeSrc":"7387:6:55","nodeType":"YulIdentifier","src":"7387:6:55"},"nativeSrc":"7387:58:55","nodeType":"YulFunctionCall","src":"7387:58:55"},"nativeSrc":"7387:58:55","nodeType":"YulExpressionStatement","src":"7387:58:55"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"7466:6:55","nodeType":"YulIdentifier","src":"7466:6:55"},{"kind":"number","nativeSrc":"7474:2:55","nodeType":"YulLiteral","src":"7474:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7462:3:55","nodeType":"YulIdentifier","src":"7462:3:55"},"nativeSrc":"7462:15:55","nodeType":"YulFunctionCall","src":"7462:15:55"},{"hexValue":"6e7472616374","kind":"string","nativeSrc":"7479:8:55","nodeType":"YulLiteral","src":"7479:8:55","type":"","value":"ntract"}],"functionName":{"name":"mstore","nativeSrc":"7455:6:55","nodeType":"YulIdentifier","src":"7455:6:55"},"nativeSrc":"7455:33:55","nodeType":"YulFunctionCall","src":"7455:33:55"},"nativeSrc":"7455:33:55","nodeType":"YulExpressionStatement","src":"7455:33:55"}]},"name":"store_literal_in_memory_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520","nativeSrc":"7270:225:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"7368:6:55","nodeType":"YulTypedName","src":"7368:6:55","type":""}],"src":"7270:225:55"},{"body":{"nativeSrc":"7647:220:55","nodeType":"YulBlock","src":"7647:220:55","statements":[{"nativeSrc":"7657:74:55","nodeType":"YulAssignment","src":"7657:74:55","value":{"arguments":[{"name":"pos","nativeSrc":"7723:3:55","nodeType":"YulIdentifier","src":"7723:3:55"},{"kind":"number","nativeSrc":"7728:2:55","nodeType":"YulLiteral","src":"7728:2:55","type":"","value":"38"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"7664:58:55","nodeType":"YulIdentifier","src":"7664:58:55"},"nativeSrc":"7664:67:55","nodeType":"YulFunctionCall","src":"7664:67:55"},"variableNames":[{"name":"pos","nativeSrc":"7657:3:55","nodeType":"YulIdentifier","src":"7657:3:55"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"7829:3:55","nodeType":"YulIdentifier","src":"7829:3:55"}],"functionName":{"name":"store_literal_in_memory_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520","nativeSrc":"7740:88:55","nodeType":"YulIdentifier","src":"7740:88:55"},"nativeSrc":"7740:93:55","nodeType":"YulFunctionCall","src":"7740:93:55"},"nativeSrc":"7740:93:55","nodeType":"YulExpressionStatement","src":"7740:93:55"},{"nativeSrc":"7842:19:55","nodeType":"YulAssignment","src":"7842:19:55","value":{"arguments":[{"name":"pos","nativeSrc":"7853:3:55","nodeType":"YulIdentifier","src":"7853:3:55"},{"kind":"number","nativeSrc":"7858:2:55","nodeType":"YulLiteral","src":"7858:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"7849:3:55","nodeType":"YulIdentifier","src":"7849:3:55"},"nativeSrc":"7849:12:55","nodeType":"YulFunctionCall","src":"7849:12:55"},"variableNames":[{"name":"end","nativeSrc":"7842:3:55","nodeType":"YulIdentifier","src":"7842:3:55"}]}]},"name":"abi_encode_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520_to_t_string_memory_ptr_fromStack","nativeSrc":"7501:366:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"7635:3:55","nodeType":"YulTypedName","src":"7635:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"7643:3:55","nodeType":"YulTypedName","src":"7643:3:55","type":""}],"src":"7501:366:55"},{"body":{"nativeSrc":"8044:248:55","nodeType":"YulBlock","src":"8044:248:55","statements":[{"nativeSrc":"8054:26:55","nodeType":"YulAssignment","src":"8054:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"8066:9:55","nodeType":"YulIdentifier","src":"8066:9:55"},{"kind":"number","nativeSrc":"8077:2:55","nodeType":"YulLiteral","src":"8077:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8062:3:55","nodeType":"YulIdentifier","src":"8062:3:55"},"nativeSrc":"8062:18:55","nodeType":"YulFunctionCall","src":"8062:18:55"},"variableNames":[{"name":"tail","nativeSrc":"8054:4:55","nodeType":"YulIdentifier","src":"8054:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8101:9:55","nodeType":"YulIdentifier","src":"8101:9:55"},{"kind":"number","nativeSrc":"8112:1:55","nodeType":"YulLiteral","src":"8112:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"8097:3:55","nodeType":"YulIdentifier","src":"8097:3:55"},"nativeSrc":"8097:17:55","nodeType":"YulFunctionCall","src":"8097:17:55"},{"arguments":[{"name":"tail","nativeSrc":"8120:4:55","nodeType":"YulIdentifier","src":"8120:4:55"},{"name":"headStart","nativeSrc":"8126:9:55","nodeType":"YulIdentifier","src":"8126:9:55"}],"functionName":{"name":"sub","nativeSrc":"8116:3:55","nodeType":"YulIdentifier","src":"8116:3:55"},"nativeSrc":"8116:20:55","nodeType":"YulFunctionCall","src":"8116:20:55"}],"functionName":{"name":"mstore","nativeSrc":"8090:6:55","nodeType":"YulIdentifier","src":"8090:6:55"},"nativeSrc":"8090:47:55","nodeType":"YulFunctionCall","src":"8090:47:55"},"nativeSrc":"8090:47:55","nodeType":"YulExpressionStatement","src":"8090:47:55"},{"nativeSrc":"8146:139:55","nodeType":"YulAssignment","src":"8146:139:55","value":{"arguments":[{"name":"tail","nativeSrc":"8280:4:55","nodeType":"YulIdentifier","src":"8280:4:55"}],"functionName":{"name":"abi_encode_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520_to_t_string_memory_ptr_fromStack","nativeSrc":"8154:124:55","nodeType":"YulIdentifier","src":"8154:124:55"},"nativeSrc":"8154:131:55","nodeType":"YulFunctionCall","src":"8154:131:55"},"variableNames":[{"name":"tail","nativeSrc":"8146:4:55","nodeType":"YulIdentifier","src":"8146:4:55"}]}]},"name":"abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"7873:419:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8024:9:55","nodeType":"YulTypedName","src":"8024:9:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8039:4:55","nodeType":"YulTypedName","src":"8039:4:55","type":""}],"src":"7873:419:55"},{"body":{"nativeSrc":"8356:40:55","nodeType":"YulBlock","src":"8356:40:55","statements":[{"nativeSrc":"8367:22:55","nodeType":"YulAssignment","src":"8367:22:55","value":{"arguments":[{"name":"value","nativeSrc":"8383:5:55","nodeType":"YulIdentifier","src":"8383:5:55"}],"functionName":{"name":"mload","nativeSrc":"8377:5:55","nodeType":"YulIdentifier","src":"8377:5:55"},"nativeSrc":"8377:12:55","nodeType":"YulFunctionCall","src":"8377:12:55"},"variableNames":[{"name":"length","nativeSrc":"8367:6:55","nodeType":"YulIdentifier","src":"8367:6:55"}]}]},"name":"array_length_t_bytes_memory_ptr","nativeSrc":"8298:98:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"8339:5:55","nodeType":"YulTypedName","src":"8339:5:55","type":""}],"returnVariables":[{"name":"length","nativeSrc":"8349:6:55","nodeType":"YulTypedName","src":"8349:6:55","type":""}],"src":"8298:98:55"},{"body":{"nativeSrc":"8515:34:55","nodeType":"YulBlock","src":"8515:34:55","statements":[{"nativeSrc":"8525:18:55","nodeType":"YulAssignment","src":"8525:18:55","value":{"name":"pos","nativeSrc":"8540:3:55","nodeType":"YulIdentifier","src":"8540:3:55"},"variableNames":[{"name":"updated_pos","nativeSrc":"8525:11:55","nodeType":"YulIdentifier","src":"8525:11:55"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"8402:147:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"8487:3:55","nodeType":"YulTypedName","src":"8487:3:55","type":""},{"name":"length","nativeSrc":"8492:6:55","nodeType":"YulTypedName","src":"8492:6:55","type":""}],"returnVariables":[{"name":"updated_pos","nativeSrc":"8503:11:55","nodeType":"YulTypedName","src":"8503:11:55","type":""}],"src":"8402:147:55"},{"body":{"nativeSrc":"8663:278:55","nodeType":"YulBlock","src":"8663:278:55","statements":[{"nativeSrc":"8673:52:55","nodeType":"YulVariableDeclaration","src":"8673:52:55","value":{"arguments":[{"name":"value","nativeSrc":"8719:5:55","nodeType":"YulIdentifier","src":"8719:5:55"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nativeSrc":"8687:31:55","nodeType":"YulIdentifier","src":"8687:31:55"},"nativeSrc":"8687:38:55","nodeType":"YulFunctionCall","src":"8687:38:55"},"variables":[{"name":"length","nativeSrc":"8677:6:55","nodeType":"YulTypedName","src":"8677:6:55","type":""}]},{"nativeSrc":"8734:95:55","nodeType":"YulAssignment","src":"8734:95:55","value":{"arguments":[{"name":"pos","nativeSrc":"8817:3:55","nodeType":"YulIdentifier","src":"8817:3:55"},{"name":"length","nativeSrc":"8822:6:55","nodeType":"YulIdentifier","src":"8822:6:55"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"8741:75:55","nodeType":"YulIdentifier","src":"8741:75:55"},"nativeSrc":"8741:88:55","nodeType":"YulFunctionCall","src":"8741:88:55"},"variableNames":[{"name":"pos","nativeSrc":"8734:3:55","nodeType":"YulIdentifier","src":"8734:3:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"8877:5:55","nodeType":"YulIdentifier","src":"8877:5:55"},{"kind":"number","nativeSrc":"8884:4:55","nodeType":"YulLiteral","src":"8884:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8873:3:55","nodeType":"YulIdentifier","src":"8873:3:55"},"nativeSrc":"8873:16:55","nodeType":"YulFunctionCall","src":"8873:16:55"},{"name":"pos","nativeSrc":"8891:3:55","nodeType":"YulIdentifier","src":"8891:3:55"},{"name":"length","nativeSrc":"8896:6:55","nodeType":"YulIdentifier","src":"8896:6:55"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"8838:34:55","nodeType":"YulIdentifier","src":"8838:34:55"},"nativeSrc":"8838:65:55","nodeType":"YulFunctionCall","src":"8838:65:55"},"nativeSrc":"8838:65:55","nodeType":"YulExpressionStatement","src":"8838:65:55"},{"nativeSrc":"8912:23:55","nodeType":"YulAssignment","src":"8912:23:55","value":{"arguments":[{"name":"pos","nativeSrc":"8923:3:55","nodeType":"YulIdentifier","src":"8923:3:55"},{"name":"length","nativeSrc":"8928:6:55","nodeType":"YulIdentifier","src":"8928:6:55"}],"functionName":{"name":"add","nativeSrc":"8919:3:55","nodeType":"YulIdentifier","src":"8919:3:55"},"nativeSrc":"8919:16:55","nodeType":"YulFunctionCall","src":"8919:16:55"},"variableNames":[{"name":"end","nativeSrc":"8912:3:55","nodeType":"YulIdentifier","src":"8912:3:55"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"8555:386:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"8644:5:55","nodeType":"YulTypedName","src":"8644:5:55","type":""},{"name":"pos","nativeSrc":"8651:3:55","nodeType":"YulTypedName","src":"8651:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"8659:3:55","nodeType":"YulTypedName","src":"8659:3:55","type":""}],"src":"8555:386:55"},{"body":{"nativeSrc":"9081:137:55","nodeType":"YulBlock","src":"9081:137:55","statements":[{"nativeSrc":"9092:100:55","nodeType":"YulAssignment","src":"9092:100:55","value":{"arguments":[{"name":"value0","nativeSrc":"9179:6:55","nodeType":"YulIdentifier","src":"9179:6:55"},{"name":"pos","nativeSrc":"9188:3:55","nodeType":"YulIdentifier","src":"9188:3:55"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"9099:79:55","nodeType":"YulIdentifier","src":"9099:79:55"},"nativeSrc":"9099:93:55","nodeType":"YulFunctionCall","src":"9099:93:55"},"variableNames":[{"name":"pos","nativeSrc":"9092:3:55","nodeType":"YulIdentifier","src":"9092:3:55"}]},{"nativeSrc":"9202:10:55","nodeType":"YulAssignment","src":"9202:10:55","value":{"name":"pos","nativeSrc":"9209:3:55","nodeType":"YulIdentifier","src":"9209:3:55"},"variableNames":[{"name":"end","nativeSrc":"9202:3:55","nodeType":"YulIdentifier","src":"9202:3:55"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"8947:271:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"9060:3:55","nodeType":"YulTypedName","src":"9060:3:55","type":""},{"name":"value0","nativeSrc":"9066:6:55","nodeType":"YulTypedName","src":"9066:6:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"9077:3:55","nodeType":"YulTypedName","src":"9077:3:55","type":""}],"src":"8947:271:55"},{"body":{"nativeSrc":"9283:40:55","nodeType":"YulBlock","src":"9283:40:55","statements":[{"nativeSrc":"9294:22:55","nodeType":"YulAssignment","src":"9294:22:55","value":{"arguments":[{"name":"value","nativeSrc":"9310:5:55","nodeType":"YulIdentifier","src":"9310:5:55"}],"functionName":{"name":"mload","nativeSrc":"9304:5:55","nodeType":"YulIdentifier","src":"9304:5:55"},"nativeSrc":"9304:12:55","nodeType":"YulFunctionCall","src":"9304:12:55"},"variableNames":[{"name":"length","nativeSrc":"9294:6:55","nodeType":"YulIdentifier","src":"9294:6:55"}]}]},"name":"array_length_t_string_memory_ptr","nativeSrc":"9224:99:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"9266:5:55","nodeType":"YulTypedName","src":"9266:5:55","type":""}],"returnVariables":[{"name":"length","nativeSrc":"9276:6:55","nodeType":"YulTypedName","src":"9276:6:55","type":""}],"src":"9224:99:55"},{"body":{"nativeSrc":"9421:285:55","nodeType":"YulBlock","src":"9421:285:55","statements":[{"nativeSrc":"9431:53:55","nodeType":"YulVariableDeclaration","src":"9431:53:55","value":{"arguments":[{"name":"value","nativeSrc":"9478:5:55","nodeType":"YulIdentifier","src":"9478:5:55"}],"functionName":{"name":"array_length_t_string_memory_ptr","nativeSrc":"9445:32:55","nodeType":"YulIdentifier","src":"9445:32:55"},"nativeSrc":"9445:39:55","nodeType":"YulFunctionCall","src":"9445:39:55"},"variables":[{"name":"length","nativeSrc":"9435:6:55","nodeType":"YulTypedName","src":"9435:6:55","type":""}]},{"nativeSrc":"9493:78:55","nodeType":"YulAssignment","src":"9493:78:55","value":{"arguments":[{"name":"pos","nativeSrc":"9559:3:55","nodeType":"YulIdentifier","src":"9559:3:55"},{"name":"length","nativeSrc":"9564:6:55","nodeType":"YulIdentifier","src":"9564:6:55"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"9500:58:55","nodeType":"YulIdentifier","src":"9500:58:55"},"nativeSrc":"9500:71:55","nodeType":"YulFunctionCall","src":"9500:71:55"},"variableNames":[{"name":"pos","nativeSrc":"9493:3:55","nodeType":"YulIdentifier","src":"9493:3:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"9619:5:55","nodeType":"YulIdentifier","src":"9619:5:55"},{"kind":"number","nativeSrc":"9626:4:55","nodeType":"YulLiteral","src":"9626:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"9615:3:55","nodeType":"YulIdentifier","src":"9615:3:55"},"nativeSrc":"9615:16:55","nodeType":"YulFunctionCall","src":"9615:16:55"},{"name":"pos","nativeSrc":"9633:3:55","nodeType":"YulIdentifier","src":"9633:3:55"},{"name":"length","nativeSrc":"9638:6:55","nodeType":"YulIdentifier","src":"9638:6:55"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"9580:34:55","nodeType":"YulIdentifier","src":"9580:34:55"},"nativeSrc":"9580:65:55","nodeType":"YulFunctionCall","src":"9580:65:55"},"nativeSrc":"9580:65:55","nodeType":"YulExpressionStatement","src":"9580:65:55"},{"nativeSrc":"9654:46:55","nodeType":"YulAssignment","src":"9654:46:55","value":{"arguments":[{"name":"pos","nativeSrc":"9665:3:55","nodeType":"YulIdentifier","src":"9665:3:55"},{"arguments":[{"name":"length","nativeSrc":"9692:6:55","nodeType":"YulIdentifier","src":"9692:6:55"}],"functionName":{"name":"round_up_to_mul_of_32","nativeSrc":"9670:21:55","nodeType":"YulIdentifier","src":"9670:21:55"},"nativeSrc":"9670:29:55","nodeType":"YulFunctionCall","src":"9670:29:55"}],"functionName":{"name":"add","nativeSrc":"9661:3:55","nodeType":"YulIdentifier","src":"9661:3:55"},"nativeSrc":"9661:39:55","nodeType":"YulFunctionCall","src":"9661:39:55"},"variableNames":[{"name":"end","nativeSrc":"9654:3:55","nodeType":"YulIdentifier","src":"9654:3:55"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nativeSrc":"9329:377:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"9402:5:55","nodeType":"YulTypedName","src":"9402:5:55","type":""},{"name":"pos","nativeSrc":"9409:3:55","nodeType":"YulTypedName","src":"9409:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"9417:3:55","nodeType":"YulTypedName","src":"9417:3:55","type":""}],"src":"9329:377:55"},{"body":{"nativeSrc":"9830:195:55","nodeType":"YulBlock","src":"9830:195:55","statements":[{"nativeSrc":"9840:26:55","nodeType":"YulAssignment","src":"9840:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"9852:9:55","nodeType":"YulIdentifier","src":"9852:9:55"},{"kind":"number","nativeSrc":"9863:2:55","nodeType":"YulLiteral","src":"9863:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9848:3:55","nodeType":"YulIdentifier","src":"9848:3:55"},"nativeSrc":"9848:18:55","nodeType":"YulFunctionCall","src":"9848:18:55"},"variableNames":[{"name":"tail","nativeSrc":"9840:4:55","nodeType":"YulIdentifier","src":"9840:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9887:9:55","nodeType":"YulIdentifier","src":"9887:9:55"},{"kind":"number","nativeSrc":"9898:1:55","nodeType":"YulLiteral","src":"9898:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"9883:3:55","nodeType":"YulIdentifier","src":"9883:3:55"},"nativeSrc":"9883:17:55","nodeType":"YulFunctionCall","src":"9883:17:55"},{"arguments":[{"name":"tail","nativeSrc":"9906:4:55","nodeType":"YulIdentifier","src":"9906:4:55"},{"name":"headStart","nativeSrc":"9912:9:55","nodeType":"YulIdentifier","src":"9912:9:55"}],"functionName":{"name":"sub","nativeSrc":"9902:3:55","nodeType":"YulIdentifier","src":"9902:3:55"},"nativeSrc":"9902:20:55","nodeType":"YulFunctionCall","src":"9902:20:55"}],"functionName":{"name":"mstore","nativeSrc":"9876:6:55","nodeType":"YulIdentifier","src":"9876:6:55"},"nativeSrc":"9876:47:55","nodeType":"YulFunctionCall","src":"9876:47:55"},"nativeSrc":"9876:47:55","nodeType":"YulExpressionStatement","src":"9876:47:55"},{"nativeSrc":"9932:86:55","nodeType":"YulAssignment","src":"9932:86:55","value":{"arguments":[{"name":"value0","nativeSrc":"10004:6:55","nodeType":"YulIdentifier","src":"10004:6:55"},{"name":"tail","nativeSrc":"10013:4:55","nodeType":"YulIdentifier","src":"10013:4:55"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nativeSrc":"9940:63:55","nodeType":"YulIdentifier","src":"9940:63:55"},"nativeSrc":"9940:78:55","nodeType":"YulFunctionCall","src":"9940:78:55"},"variableNames":[{"name":"tail","nativeSrc":"9932:4:55","nodeType":"YulIdentifier","src":"9932:4:55"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"9712:313:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9802:9:55","nodeType":"YulTypedName","src":"9802:9:55","type":""},{"name":"value0","nativeSrc":"9814:6:55","nodeType":"YulTypedName","src":"9814:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9825:4:55","nodeType":"YulTypedName","src":"9825:4:55","type":""}],"src":"9712:313:55"}]},"contents":"{\n\n    function allocate_unbounded() -> memPtr {\n        memPtr := mload(64)\n    }\n\n    function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n        revert(0, 0)\n    }\n\n    function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n        revert(0, 0)\n    }\n\n    function cleanup_t_uint160(value) -> cleaned {\n        cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n    }\n\n    function cleanup_t_address(value) -> cleaned {\n        cleaned := cleanup_t_uint160(value)\n    }\n\n    function validator_revert_t_address(value) {\n        if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n    }\n\n    function abi_decode_t_address_fromMemory(offset, end) -> value {\n        value := mload(offset)\n        validator_revert_t_address(value)\n    }\n\n    function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n        revert(0, 0)\n    }\n\n    function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n        revert(0, 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 panic_error_0x41() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n\n    function finalize_allocation(memPtr, size) {\n        let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n        // protect against overflow\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n\n    function allocate_memory(size) -> memPtr {\n        memPtr := allocate_unbounded()\n        finalize_allocation(memPtr, size)\n    }\n\n    function array_allocation_size_t_bytes_memory_ptr(length) -> size {\n        // Make sure we can allocate memory without overflow\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n        size := round_up_to_mul_of_32(length)\n\n        // add length slot\n        size := add(size, 0x20)\n\n    }\n\n    function copy_memory_to_memory_with_cleanup(src, dst, length) {\n\n        mcopy(dst, src, length)\n        mstore(add(dst, length), 0)\n\n    }\n\n    function abi_decode_available_length_t_bytes_memory_ptr_fromMemory(src, length, end) -> array {\n        array := allocate_memory(array_allocation_size_t_bytes_memory_ptr(length))\n        mstore(array, length)\n        let dst := add(array, 0x20)\n        if gt(add(src, length), end) { revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n        copy_memory_to_memory_with_cleanup(src, dst, length)\n    }\n\n    // bytes\n    function abi_decode_t_bytes_memory_ptr_fromMemory(offset, end) -> array {\n        if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n        let length := mload(offset)\n        array := abi_decode_available_length_t_bytes_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n    }\n\n    function abi_decode_tuple_t_addresst_addresst_bytes_memory_ptr_fromMemory(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_fromMemory(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 32\n\n            value1 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := mload(add(headStart, 64))\n            if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n            value2 := abi_decode_t_bytes_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function cleanup_t_uint256(value) -> cleaned {\n        cleaned := value\n    }\n\n    function panic_error_0x11() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\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_0x01() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x01)\n        revert(0, 0x24)\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_t_address__to_t_address_t_address__fromStack_reversed(headStart , value1, value0) -> tail {\n        tail := add(headStart, 64)\n\n        abi_encode_t_address_to_t_address_fromStack(value0,  add(headStart, 0))\n\n        abi_encode_t_address_to_t_address_fromStack(value1,  add(headStart, 32))\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 store_literal_in_memory_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5(memPtr) {\n\n        mstore(add(memPtr, 0), \"ERC1967: new admin is the zero a\")\n\n        mstore(add(memPtr, 32), \"ddress\")\n\n    }\n\n    function abi_encode_t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 38)\n        store_literal_in_memory_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5__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_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65(memPtr) {\n\n        mstore(add(memPtr, 0), \"ERC1967: new implementation is n\")\n\n        mstore(add(memPtr, 32), \"ot a contract\")\n\n    }\n\n    function abi_encode_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 45)\n        store_literal_in_memory_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__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_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520(memPtr) {\n\n        mstore(add(memPtr, 0), \"Address: delegate call to non-co\")\n\n        mstore(add(memPtr, 32), \"ntract\")\n\n    }\n\n    function abi_encode_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 38)\n        store_literal_in_memory_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__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_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function array_length_t_bytes_memory_ptr(value) -> length {\n\n        length := mload(value)\n\n    }\n\n    function array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n        updated_pos := pos\n    }\n\n    function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n        let length := array_length_t_bytes_memory_ptr(value)\n        pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n        copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n        end := add(pos, length)\n    }\n\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value0) -> end {\n\n        pos := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value0,  pos)\n\n        end := pos\n    }\n\n    function array_length_t_string_memory_ptr(value) -> length {\n\n        length := mload(value)\n\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}\n","id":55,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"6080604052604051610fc2380380610fc283398101604081905261002291610460565b828161004f60017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd6104d9565b5f516020610f7b5f395f51905f521461006a5761006a6104ec565b61007582825f6100cf565b506100a3905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61046104d9565b5f516020610f5b5f395f51905f52146100be576100be6104ec565b6100c7826100fa565b505050610698565b6100d88361015c565b5f825111806100e45750805b156100f5576100f3838361019b565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6101395f516020610f5b5f395f51905f52546001600160a01b031690565b8260405161014892919061050f565b60405180910390a1610159816101c9565b50565b61016581610229565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606101c08383604051806060016040528060278152602001610f9b60279139610264565b90505b92915050565b6001600160a01b0381166101f85760405162461bcd60e51b81526004016101ef9061056f565b60405180910390fd5b805f516020610f5b5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6102505760405162461bcd60e51b81526004016101ef906105c8565b805f516020610f7b5f395f51905f52610208565b60606001600160a01b0384163b61028d5760405162461bcd60e51b81526004016101ef9061061a565b5f5f856001600160a01b0316856040516102a7919061064b565b5f60405180830381855af49150503d805f81146102df576040519150601f19603f3d011682016040523d82523d5f602084013e6102e4565b606091505b5090925090506102f5828286610301565b925050505b9392505050565b606083156103105750816102fa565b8251156103205782518084602001fd5b8160405162461bcd60e51b81526004016101ef9190610687565b5f6001600160a01b0382166101c3565b6103538161033a565b8114610159575f5ffd5b80516101c38161034a565b634e487b7160e01b5f52604160045260245ffd5b601f19601f83011681018181106001600160401b03821117156103a1576103a1610368565b6040525050565b5f6103b260405190565b90506103be828261037c565b919050565b5f6001600160401b038211156103db576103db610368565b601f19601f83011660200192915050565b8281835e505f910152565b5f610409610404846103c3565b6103a8565b905082815260208101848484011115610423576104235f5ffd5b61042e8482856103ec565b509392505050565b5f82601f830112610448576104485f5ffd5b81516104588482602086016103f7565b949350505050565b5f5f5f60608486031215610475576104755f5ffd5b5f610480868661035d565b93505060206104918682870161035d565b92505060408401516001600160401b038111156104af576104af5f5ffd5b6104bb86828701610436565b9150509250925092565b634e487b7160e01b5f52601160045260245ffd5b818103818111156101c3576101c36104c5565b634e487b7160e01b5f52600160045260245ffd5b6105098161033a565b82525050565b6040810161051d8285610500565b6102fa6020830184610500565b602681525f602082017f455243313936373a206e65772061646d696e20697320746865207a65726f206181526564647265737360d01b602082015291505b5060400190565b602080825281016101c38161052a565b602d81525f602082017f455243313936373a206e657720696d706c656d656e746174696f6e206973206e81526c1bdd08184818dbdb9d1c9858dd609a1b60208201529150610568565b602080825281016101c38161057f565b602681525f602082017f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f8152651b9d1c9858dd60d21b60208201529150610568565b602080825281016101c3816105d8565b5f610633825190565b6106418185602086016103ec565b9290920192915050565b5f6102fa828461062a565b5f61065f825190565b8084526020840193506106768185602086016103ec565b601f01601f19169290920192915050565b602080825281016101c08184610656565b6108b6806106a55f395ff3fe60806040526004361061004d575f3560e01c80633659cfe6146100645780634f1ef286146100835780635c60da1b146100965780638f283970146100c0578063f851a440146100df5761005c565b3661005c5761005a6100f3565b005b61005a6100f3565b34801561006f575f5ffd5b5061005a61007e366004610571565b61010d565b61005a6100913660046105e5565b610148565b3480156100a1575f5ffd5b506100aa6101ae565b6040516100b7919061064b565b60405180910390f35b3480156100cb575f5ffd5b5061005a6100da366004610571565b6101de565b3480156100ea575f5ffd5b506100aa6101fe565b6100fb61021e565b61010b610106610256565b61025f565b565b61011561027d565b6001600160a01b031633036101405761013d8160405180602001604052805f8152505f6102af565b50565b61013d6100f3565b61015061027d565b6001600160a01b031633036101a6576101a18383838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250600192506102af915050565b505050565b6101a16100f3565b5f6101b761027d565b6001600160a01b031633036101d3576101ce610256565b905090565b6101db6100f3565b90565b6101e661027d565b6001600160a01b031633036101405761013d816102d9565b5f61020761027d565b6001600160a01b031633036101d3576101ce61027d565b61022661027d565b6001600160a01b0316330361010b5760405162461bcd60e51b815260040161024d90610659565b60405180910390fd5b5f6101ce610322565b365f5f375f5f365f845af43d5f5f3e808015610279573d5ff35b3d5ffd5b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6102b883610349565b5f825111806102c45750805b156101a1576102d38383610388565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61030261027d565b826040516103119291906106c5565b60405180910390a161013d816103b6565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6102a0565b61035281610420565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103ad838360405180606001604052806027815260200161085a6027913961046e565b90505b92915050565b6001600160a01b0381166103dc5760405162461bcd60e51b815260040161024d90610725565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6104475760405162461bcd60e51b815260040161024d9061077e565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6103ff565b60606001600160a01b0384163b6104975760405162461bcd60e51b815260040161024d906107d0565b5f5f856001600160a01b0316856040516104b1919061080c565b5f60405180830381855af49150503d805f81146104e9576040519150601f19603f3d011682016040523d82523d5f602084013e6104ee565b606091505b50915091506104fe82828661050a565b925050505b9392505050565b60608315610519575081610503565b8251156105295782518084602001fd5b8160405162461bcd60e51b815260040161024d9190610848565b5f6001600160a01b0382166103b0565b61055c81610543565b811461013d575f5ffd5b80356103b081610553565b5f60208284031215610584576105845f5ffd5b5f61058f8484610566565b949350505050565b5f5f83601f8401126105aa576105aa5f5ffd5b50813567ffffffffffffffff8111156105c4576105c45f5ffd5b6020830191508360018202830111156105de576105de5f5ffd5b9250929050565b5f5f5f604084860312156105fa576105fa5f5ffd5b5f6106058686610566565b935050602084013567ffffffffffffffff811115610624576106245f5ffd5b61063086828701610597565b92509250509250925092565b61064581610543565b82525050565b602081016103b0828461063c565b602080825281016103b081604281527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60208201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267604082015261195d60f21b606082015260800190565b604081016106d3828561063c565b610503602083018461063c565b602681525f602082017f455243313936373a206e65772061646d696e20697320746865207a65726f206181526564647265737360d01b602082015291505b5060400190565b602080825281016103b0816106e0565b602d81525f602082017f455243313936373a206e657720696d706c656d656e746174696f6e206973206e81526c1bdd08184818dbdb9d1c9858dd609a1b6020820152915061071e565b602080825281016103b081610735565b602681525f602082017f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f8152651b9d1c9858dd60d21b6020820152915061071e565b602080825281016103b08161078e565b8281835e505f910152565b5f6107f4825190565b6108028185602086016107e0565b9290920192915050565b5f61050382846107eb565b5f610820825190565b8084526020840193506108378185602086016107e0565b601f01601f19169290920192915050565b602080825281016103ad818461081756fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122051cf53c867ae1ab3d3b4f9a276522d2ae072481e30341b711a9273f92dd1c81064736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0xFC2 CODESIZE SUB DUP1 PUSH2 0xFC2 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x460 JUMP JUMPDEST DUP3 DUP2 PUSH2 0x4F PUSH1 0x1 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBD PUSH2 0x4D9 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0xF7B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE EQ PUSH2 0x6A JUMPI PUSH2 0x6A PUSH2 0x4EC JUMP JUMPDEST PUSH2 0x75 DUP3 DUP3 PUSH0 PUSH2 0xCF JUMP JUMPDEST POP PUSH2 0xA3 SWAP1 POP PUSH1 0x1 PUSH32 0xB53127684A568B3173AE13B9F8A6016E243E63B6E8EE1178D6A717850B5D6104 PUSH2 0x4D9 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0xF5B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE EQ PUSH2 0xBE JUMPI PUSH2 0xBE PUSH2 0x4EC JUMP JUMPDEST PUSH2 0xC7 DUP3 PUSH2 0xFA JUMP JUMPDEST POP POP POP PUSH2 0x698 JUMP JUMPDEST PUSH2 0xD8 DUP4 PUSH2 0x15C JUMP JUMPDEST PUSH0 DUP3 MLOAD GT DUP1 PUSH2 0xE4 JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0xF5 JUMPI PUSH2 0xF3 DUP4 DUP4 PUSH2 0x19B JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH32 0x7E644D79422F17C01E4894B5F4F588D331EBFA28653D42AE832DC59E38C9798F PUSH2 0x139 PUSH0 MLOAD PUSH1 0x20 PUSH2 0xF5B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH2 0x148 SWAP3 SWAP2 SWAP1 PUSH2 0x50F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0x159 DUP2 PUSH2 0x1C9 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x165 DUP2 PUSH2 0x229 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1C0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xF9B PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x264 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1F8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EF SWAP1 PUSH2 0x56F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH0 MLOAD PUSH1 0x20 PUSH2 0xF5B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0x250 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EF SWAP1 PUSH2 0x5C8 JUMP JUMPDEST DUP1 PUSH0 MLOAD PUSH1 0x20 PUSH2 0xF7B PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH2 0x208 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x28D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EF SWAP1 PUSH2 0x61A JUMP JUMPDEST PUSH0 PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x2A7 SWAP2 SWAP1 PUSH2 0x64B JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x2DF JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2E4 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2F5 DUP3 DUP3 DUP7 PUSH2 0x301 JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x310 JUMPI POP DUP2 PUSH2 0x2FA JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x320 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EF SWAP2 SWAP1 PUSH2 0x687 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1C3 JUMP JUMPDEST PUSH2 0x353 DUP2 PUSH2 0x33A JUMP JUMPDEST DUP2 EQ PUSH2 0x159 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x1C3 DUP2 PUSH2 0x34A JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP2 ADD DUP2 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR ISZERO PUSH2 0x3A1 JUMPI PUSH2 0x3A1 PUSH2 0x368 JUMP JUMPDEST PUSH1 0x40 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH2 0x3B2 PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST SWAP1 POP PUSH2 0x3BE DUP3 DUP3 PUSH2 0x37C JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x3DB JUMPI PUSH2 0x3DB PUSH2 0x368 JUMP JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP2 DUP4 MCOPY POP PUSH0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH0 PUSH2 0x409 PUSH2 0x404 DUP5 PUSH2 0x3C3 JUMP JUMPDEST PUSH2 0x3A8 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x423 JUMPI PUSH2 0x423 PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x42E DUP5 DUP3 DUP6 PUSH2 0x3EC JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x448 JUMPI PUSH2 0x448 PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x458 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x3F7 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x475 JUMPI PUSH2 0x475 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x480 DUP7 DUP7 PUSH2 0x35D JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x491 DUP7 DUP3 DUP8 ADD PUSH2 0x35D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4AF JUMPI PUSH2 0x4AF PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4BB DUP7 DUP3 DUP8 ADD PUSH2 0x436 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x1C3 JUMPI PUSH2 0x1C3 PUSH2 0x4C5 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x509 DUP2 PUSH2 0x33A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x51D DUP3 DUP6 PUSH2 0x500 JUMP JUMPDEST PUSH2 0x2FA PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x500 JUMP JUMPDEST PUSH1 0x26 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x455243313936373A206E65772061646D696E20697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP2 POP JUMPDEST POP PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1C3 DUP2 PUSH2 0x52A JUMP JUMPDEST PUSH1 0x2D DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E DUP2 MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP2 POP PUSH2 0x568 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1C3 DUP2 PUSH2 0x57F JUMP JUMPDEST PUSH1 0x26 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F DUP2 MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP2 POP PUSH2 0x568 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1C3 DUP2 PUSH2 0x5D8 JUMP JUMPDEST PUSH0 PUSH2 0x633 DUP3 MLOAD SWAP1 JUMP JUMPDEST PUSH2 0x641 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x3EC JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x2FA DUP3 DUP5 PUSH2 0x62A JUMP JUMPDEST PUSH0 PUSH2 0x65F DUP3 MLOAD SWAP1 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH2 0x676 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x3EC JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1C0 DUP2 DUP5 PUSH2 0x656 JUMP JUMPDEST PUSH2 0x8B6 DUP1 PUSH2 0x6A5 PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4D JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x64 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x83 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x96 JUMPI DUP1 PUSH4 0x8F283970 EQ PUSH2 0xC0 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0xDF JUMPI PUSH2 0x5C JUMP JUMPDEST CALLDATASIZE PUSH2 0x5C JUMPI PUSH2 0x5A PUSH2 0xF3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x5A PUSH2 0xF3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6F JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x5A PUSH2 0x7E CALLDATASIZE PUSH1 0x4 PUSH2 0x571 JUMP JUMPDEST PUSH2 0x10D JUMP JUMPDEST PUSH2 0x5A PUSH2 0x91 CALLDATASIZE PUSH1 0x4 PUSH2 0x5E5 JUMP JUMPDEST PUSH2 0x148 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0xAA PUSH2 0x1AE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB7 SWAP2 SWAP1 PUSH2 0x64B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCB JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x5A PUSH2 0xDA CALLDATASIZE PUSH1 0x4 PUSH2 0x571 JUMP JUMPDEST PUSH2 0x1DE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEA JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0xAA PUSH2 0x1FE JUMP JUMPDEST PUSH2 0xFB PUSH2 0x21E JUMP JUMPDEST PUSH2 0x10B PUSH2 0x106 PUSH2 0x256 JUMP JUMPDEST PUSH2 0x25F JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x115 PUSH2 0x27D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER SUB PUSH2 0x140 JUMPI PUSH2 0x13D DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 DUP2 MSTORE POP PUSH0 PUSH2 0x2AF JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x13D PUSH2 0xF3 JUMP JUMPDEST PUSH2 0x150 PUSH2 0x27D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER SUB PUSH2 0x1A6 JUMPI PUSH2 0x1A1 DUP4 DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH1 0x1 SWAP3 POP PUSH2 0x2AF SWAP2 POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1A1 PUSH2 0xF3 JUMP JUMPDEST PUSH0 PUSH2 0x1B7 PUSH2 0x27D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER SUB PUSH2 0x1D3 JUMPI PUSH2 0x1CE PUSH2 0x256 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1DB PUSH2 0xF3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1E6 PUSH2 0x27D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER SUB PUSH2 0x140 JUMPI PUSH2 0x13D DUP2 PUSH2 0x2D9 JUMP JUMPDEST PUSH0 PUSH2 0x207 PUSH2 0x27D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER SUB PUSH2 0x1D3 JUMPI PUSH2 0x1CE PUSH2 0x27D JUMP JUMPDEST PUSH2 0x226 PUSH2 0x27D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER SUB PUSH2 0x10B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24D SWAP1 PUSH2 0x659 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x1CE PUSH2 0x322 JUMP JUMPDEST CALLDATASIZE PUSH0 PUSH0 CALLDATACOPY PUSH0 PUSH0 CALLDATASIZE PUSH0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x279 JUMPI RETURNDATASIZE PUSH0 RETURN JUMPDEST RETURNDATASIZE PUSH0 REVERT JUMPDEST PUSH0 PUSH32 0xB53127684A568B3173AE13B9F8A6016E243E63B6E8EE1178D6A717850B5D6103 JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2B8 DUP4 PUSH2 0x349 JUMP JUMPDEST PUSH0 DUP3 MLOAD GT DUP1 PUSH2 0x2C4 JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x1A1 JUMPI PUSH2 0x2D3 DUP4 DUP4 PUSH2 0x388 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x7E644D79422F17C01E4894B5F4F588D331EBFA28653D42AE832DC59E38C9798F PUSH2 0x302 PUSH2 0x27D JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH2 0x311 SWAP3 SWAP2 SWAP1 PUSH2 0x6C5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0x13D DUP2 PUSH2 0x3B6 JUMP JUMPDEST PUSH0 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH2 0x2A0 JUMP JUMPDEST PUSH2 0x352 DUP2 PUSH2 0x420 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x3AD DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x85A PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x46E JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x3DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24D SWAP1 PUSH2 0x725 JUMP JUMPDEST DUP1 PUSH32 0xB53127684A568B3173AE13B9F8A6016E243E63B6E8EE1178D6A717850B5D6103 JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0x447 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24D SWAP1 PUSH2 0x77E JUMP JUMPDEST DUP1 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH2 0x3FF JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x497 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24D SWAP1 PUSH2 0x7D0 JUMP JUMPDEST PUSH0 PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x4B1 SWAP2 SWAP1 PUSH2 0x80C JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x4E9 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x4EE JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x4FE DUP3 DUP3 DUP7 PUSH2 0x50A JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x519 JUMPI POP DUP2 PUSH2 0x503 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x529 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24D SWAP2 SWAP1 PUSH2 0x848 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3B0 JUMP JUMPDEST PUSH2 0x55C DUP2 PUSH2 0x543 JUMP JUMPDEST DUP2 EQ PUSH2 0x13D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3B0 DUP2 PUSH2 0x553 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x584 JUMPI PUSH2 0x584 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x58F DUP5 DUP5 PUSH2 0x566 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x5AA JUMPI PUSH2 0x5AA PUSH0 PUSH0 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5C4 JUMPI PUSH2 0x5C4 PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x5DE JUMPI PUSH2 0x5DE PUSH0 PUSH0 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5FA JUMPI PUSH2 0x5FA PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x605 DUP7 DUP7 PUSH2 0x566 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x624 JUMPI PUSH2 0x624 PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x630 DUP7 DUP3 DUP8 ADD PUSH2 0x597 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x645 DUP2 PUSH2 0x543 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x3B0 DUP3 DUP5 PUSH2 0x63C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x3B0 DUP2 PUSH1 0x42 DUP2 MSTORE PUSH32 0x5472616E73706172656E745570677261646561626C6550726F78793A2061646D PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x696E2063616E6E6F742066616C6C6261636B20746F2070726F78792074617267 PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x195D PUSH1 0xF2 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x6D3 DUP3 DUP6 PUSH2 0x63C JUMP JUMPDEST PUSH2 0x503 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x63C JUMP JUMPDEST PUSH1 0x26 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x455243313936373A206E65772061646D696E20697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP2 POP JUMPDEST POP PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x3B0 DUP2 PUSH2 0x6E0 JUMP JUMPDEST PUSH1 0x2D DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E DUP2 MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP2 POP PUSH2 0x71E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x3B0 DUP2 PUSH2 0x735 JUMP JUMPDEST PUSH1 0x26 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F DUP2 MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP2 POP PUSH2 0x71E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x3B0 DUP2 PUSH2 0x78E JUMP JUMPDEST DUP3 DUP2 DUP4 MCOPY POP PUSH0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH0 PUSH2 0x7F4 DUP3 MLOAD SWAP1 JUMP JUMPDEST PUSH2 0x802 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x7E0 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x503 DUP3 DUP5 PUSH2 0x7EB JUMP JUMPDEST PUSH0 PUSH2 0x820 DUP3 MLOAD SWAP1 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH2 0x837 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x7E0 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x3AD DUP2 DUP5 PUSH2 0x817 JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x7066735822122051CF53 0xC8 PUSH8 0xAE1AB3D3B4F9A276 MSTORE 0x2D 0x2A 0xE0 PUSH19 0x481E30341B711A9273F92DD1C81064736F6C63 NUMBER STOP ADDMOD SHR STOP CALLER 0xB5 BALANCE 0x27 PUSH9 0x4A568B3173AE13B9F8 0xA6 ADD PUSH15 0x243E63B6E8EE1178D6A717850B5D61 SUB CALLDATASIZE ADDMOD SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x65640000000000000000000000 ","sourceMap":"1634:3556:50:-:0;;;1908:254;;;;;;;;;;;;;;;;;;:::i;:::-;2023:6;2031:5;1050:54:45;1103:1;1058:41;1050:54;:::i;:::-;-1:-1:-1;;;;;;;;;;;1018:87:45;1011:95;;;;:::i;:::-;1116:39;1134:6;1142:5;1149;1116:17;:39::i;:::-;-1:-1:-1;2078:45:50::1;::::0;-1:-1:-1;2122:1:50::1;2086:32;2078:45;:::i;:::-;-1:-1:-1::0;;;;;;;;;;;2055:69:50::1;2048:77;;;;:::i;:::-;2135:20;2148:6:::0;2135:12:::1;:20::i;:::-;1908:254:::0;;;1634:3556;;2188:295:46;2326:29;2337:17;2326:10;:29::i;:::-;2383:1;2369:4;:11;:15;:28;;;;2388:9;2369:28;2365:112;;;2413:53;2442:17;2461:4;2413:28;:53::i;:::-;;2365:112;2188:295;;;:::o;4637:135::-;4701:35;4714:11;-1:-1:-1;;;;;;;;;;;4191:45:46;-1:-1:-1;;;;;4191:45:46;;4113:130;4714:11;4727:8;4701:35;;;;;;;:::i;:::-;;;;;;;;4746:19;4756:8;4746:9;:19::i;:::-;4637:135;:::o;1902:152::-;1968:37;1987:17;1968:18;:37::i;:::-;2020:27;;-1:-1:-1;;;;;2020:27:46;;;;;;;;1902:152;:::o;6575:198:51:-;6658:12;6689:77;6710:6;6718:4;6689:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6682:84;;6575:198;;;;;:::o;4325:201:46:-;-1:-1:-1;;;;;4388:22:46;;4380:73;;;;-1:-1:-1;;;4380:73:46;;;;;;;:::i;:::-;;;;;;;;;4511:8;-1:-1:-1;;;;;;;;;;;4463:39:46;:56;;-1:-1:-1;;;;;;4463:56:46;-1:-1:-1;;;;;4463:56:46;;;;;;;;;;-1:-1:-1;4325:201:46:o;1537:259::-;-1:-1:-1;;;;;1470:19:51;;;1610:95:46;;;;-1:-1:-1;;;1610:95:46;;;;;;;:::i;:::-;1772:17;-1:-1:-1;;;;;;;;;;;1715:48:46;1599:147:53;6959:387:51;7100:12;-1:-1:-1;;;;;1470:19:51;;;7124:69;;;;-1:-1:-1;;;7124:69:51;;;;;;;:::i;:::-;7205:12;7219:23;7246:6;-1:-1:-1;;;;;7246:19:51;7266:4;7246:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7204:67:51;;-1:-1:-1;7204:67:51;-1:-1:-1;7288:51:51;7204:67;;7326:12;7288:16;:51::i;:::-;7281:58;;;;6959:387;;;;;;:::o;7566:692::-;7712:12;7740:7;7736:516;;;-1:-1:-1;7770:10:51;7763:17;;7736:516;7881:17;;:21;7877:365;;8075:10;8069:17;8135:15;8122:10;8118:2;8114:19;8107:44;7877:365;8214:12;8207:20;;-1:-1:-1;;;8207:20:51;;;;;;;;:::i;466:96:55:-;503:7;-1:-1:-1;;;;;400:54:55;;532:24;334:126;568:122;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;696:143;778:13;;800:33;778:13;800:33;:::i;1199:180::-;-1:-1:-1;;;1244:1:55;1237:88;1344:4;1341:1;1334:15;1368:4;1365:1;1358:15;1385:281;-1:-1:-1;;1183:2:55;1163:14;;1159:28;1460:6;1456:40;1598:6;1586:10;1583:22;-1:-1:-1;;;;;1550:10:55;1547:34;1544:62;1541:88;;;1609:18;;:::i;:::-;1645:2;1638:22;-1:-1:-1;;1385:281:55:o;1672:129::-;1706:6;1733:20;73:2;67:9;;7:75;1733:20;1723:30;;1762:33;1790:4;1782:6;1762:33;:::i;:::-;1672:129;;;:::o;1807:307::-;1868:4;-1:-1:-1;;;;;1950:6:55;1947:30;1944:56;;;1980:18;;:::i;:::-;-1:-1:-1;;1183:2:55;1163:14;;1159:28;2102:4;2092:15;;1807:307;-1:-1:-1;;1807:307:55:o;2120:139::-;2209:6;2204:3;2199;2193:23;-1:-1:-1;2250:1:55;2232:16;;2225:27;2120:139::o;2265:432::-;2353:5;2378:65;2394:48;2435:6;2394:48;:::i;:::-;2378:65;:::i;:::-;2369:74;;2466:6;2459:5;2452:21;2504:4;2497:5;2493:16;2542:3;2533:6;2528:3;2524:16;2521:25;2518:112;;;2549:79;1077:1;1074;1067:12;2549:79;2639:52;2684:6;2679:3;2674;2639:52;:::i;:::-;2359:338;2265:432;;;;;:::o;2716:353::-;2782:5;2831:3;2824:4;2816:6;2812:17;2808:27;2798:122;;2839:79;954:1;951;944:12;2839:79;2949:6;2943:13;2974:89;3059:3;3051:6;3044:4;3036:6;3032:17;2974:89;:::i;:::-;2965:98;2716:353;-1:-1:-1;;;;2716:353:55:o;3075:834::-;3172:6;3180;3188;3237:2;3225:9;3216:7;3212:23;3208:32;3205:119;;;3243:79;197:1;194;187:12;3243:79;3363:1;3388:64;3444:7;3424:9;3388:64;:::i;:::-;3378:74;;3334:128;3501:2;3527:64;3583:7;3574:6;3563:9;3559:22;3527:64;:::i;:::-;3517:74;;3472:129;3661:2;3650:9;3646:18;3640:25;-1:-1:-1;;;;;3684:6:55;3681:30;3678:117;;;3714:79;320:1;317;310:12;3714:79;3819:73;3884:7;3875:6;3864:9;3860:22;3819:73;:::i;:::-;3809:83;;3611:291;3075:834;;;;;:::o;3998:180::-;-1:-1:-1;;;4043:1:55;4036:88;4143:4;4140:1;4133:15;4167:4;4164:1;4157:15;4184:194;4315:9;;;4337:11;;;4334:37;;;4351:18;;:::i;4384:180::-;-1:-1:-1;;;4429:1:55;4422:88;4529:4;4526:1;4519:15;4553:4;4550:1;4543:15;4570:118;4657:24;4675:5;4657:24;:::i;:::-;4652:3;4645:37;4570:118;;:::o;4694:332::-;4853:2;4838:18;;4866:71;4842:9;4910:6;4866:71;:::i;:::-;4947:72;5015:2;5004:9;5000:18;4991:6;4947:72;:::i;5438:366::-;5665:2;5138:19;;5580:3;5190:4;5181:14;;5347:34;5324:58;;-1:-1:-1;;;5411:2:55;5399:15;;5392:33;5594:74;-1:-1:-1;5677:93:55;-1:-1:-1;5795:2:55;5786:12;;5438:366::o;5810:419::-;6014:2;6027:47;;;5999:18;;6091:131;5999:18;6091:131;:::i;6473:366::-;6700:2;5138:19;;6615:3;5190:4;5181:14;;6375:34;6352:58;;-1:-1:-1;;;6439:2:55;6427:15;;6420:40;6629:74;-1:-1:-1;6712:93:55;6235:232;6845:419;7049:2;7062:47;;;7034:18;;7126:131;7034:18;7126:131;:::i;7501:366::-;7728:2;5138:19;;7643:3;5190:4;5181:14;;7410:34;7387:58;;-1:-1:-1;;;7474:2:55;7462:15;;7455:33;7657:74;-1:-1:-1;7740:93:55;7270:225;7873:419;8077:2;8090:47;;;8062:18;;8154:131;8062:18;8154:131;:::i;8555:386::-;8659:3;8687:38;8719:5;8377:12;;8298:98;8687:38;8838:65;8896:6;8891:3;8884:4;8877:5;8873:16;8838:65;:::i;:::-;8919:16;;;;;8555:386;-1:-1:-1;;8555:386:55:o;8947:271::-;9077:3;9099:93;9188:3;9179:6;9099:93;:::i;9329:377::-;9417:3;9445:39;9478:5;8377:12;;8298:98;9445:39;5138:19;;;5190:4;5181:14;;9493:78;;9580:65;9638:6;9633:3;9626:4;9619:5;9615:16;9580:65;:::i;:::-;1183:2;1163:14;-1:-1:-1;;1159:28:55;9661:39;;;;;;-1:-1:-1;;9329:377:55:o;9712:313::-;9863:2;9876:47;;;9848:18;;9940:78;9848:18;10004:6;9940:78;:::i;9712:313::-;1634:3556:50;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_8853":{"entryPoint":null,"id":8853,"parameterSlots":0,"returnSlots":0},"@_8861":{"entryPoint":null,"id":8861,"parameterSlots":0,"returnSlots":0},"@_beforeFallback_8866":{"entryPoint":null,"id":8866,"parameterSlots":0,"returnSlots":0},"@_beforeFallback_9185":{"entryPoint":542,"id":9185,"parameterSlots":0,"returnSlots":0},"@_changeAdmin_8718":{"entryPoint":729,"id":8718,"parameterSlots":1,"returnSlots":0},"@_delegate_8826":{"entryPoint":607,"id":8826,"parameterSlots":1,"returnSlots":0},"@_fallback_8845":{"entryPoint":243,"id":8845,"parameterSlots":0,"returnSlots":0},"@_getAdmin_8675":{"entryPoint":637,"id":8675,"parameterSlots":0,"returnSlots":1},"@_getImplementation_8529":{"entryPoint":802,"id":8529,"parameterSlots":0,"returnSlots":1},"@_implementation_8496":{"entryPoint":598,"id":8496,"parameterSlots":0,"returnSlots":1},"@_setAdmin_8701":{"entryPoint":950,"id":8701,"parameterSlots":1,"returnSlots":0},"@_setImplementation_8553":{"entryPoint":1056,"id":8553,"parameterSlots":1,"returnSlots":0},"@_upgradeToAndCall_8598":{"entryPoint":687,"id":8598,"parameterSlots":3,"returnSlots":0},"@_upgradeTo_8568":{"entryPoint":841,"id":8568,"parameterSlots":1,"returnSlots":0},"@admin_9093":{"entryPoint":510,"id":9093,"parameterSlots":0,"returnSlots":1},"@changeAdmin_9120":{"entryPoint":478,"id":9120,"parameterSlots":1,"returnSlots":0},"@functionDelegateCall_9414":{"entryPoint":904,"id":9414,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_9449":{"entryPoint":1134,"id":9449,"parameterSlots":3,"returnSlots":1},"@getAddressSlot_9529":{"entryPoint":null,"id":9529,"parameterSlots":1,"returnSlots":1},"@implementation_9107":{"entryPoint":430,"id":9107,"parameterSlots":0,"returnSlots":1},"@isContract_9204":{"entryPoint":null,"id":9204,"parameterSlots":1,"returnSlots":1},"@upgradeToAndCall_9155":{"entryPoint":328,"id":9155,"parameterSlots":3,"returnSlots":0},"@upgradeTo_9138":{"entryPoint":269,"id":9138,"parameterSlots":1,"returnSlots":0},"@verifyCallResult_9480":{"entryPoint":1290,"id":9480,"parameterSlots":3,"returnSlots":1},"abi_decode_t_address":{"entryPoint":1382,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes_calldata_ptr":{"entryPoint":1431,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_address":{"entryPoint":1393,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_calldata_ptr":{"entryPoint":1509,"id":null,"parameterSlots":2,"returnSlots":3},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":1596,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":2027,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack":{"entryPoint":2071,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5_to_t_string_memory_ptr_fromStack":{"entryPoint":1760,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65_to_t_string_memory_ptr_fromStack":{"entryPoint":1845,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520_to_t_string_memory_ptr_fromStack":{"entryPoint":1934,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_f5d2ea39d7e6c7d19dc32ccc2bd7ca26b7aa4a603ef4aa6f2b205c93c3ffe43d_to_t_string_memory_ptr_fromStack":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":2060,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":1611,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed":{"entryPoint":1733,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":2120,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":1829,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":1918,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":2000,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_f5d2ea39d7e6c7d19dc32ccc2bd7ca26b7aa4a603ef4aa6f2b205c93c3ffe43d__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":1625,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"array_length_t_bytes_memory_ptr":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_string_memory_ptr":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_address":{"entryPoint":1347,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":2016,"id":null,"parameterSlots":3,"returnSlots":0},"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"store_literal_in_memory_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_f5d2ea39d7e6c7d19dc32ccc2bd7ca26b7aa4a603ef4aa6f2b205c93c3ffe43d":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_address":{"entryPoint":1363,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:9826:55","nodeType":"YulBlock","src":"0:9826:55","statements":[{"body":{"nativeSrc":"47:35:55","nodeType":"YulBlock","src":"47:35:55","statements":[{"nativeSrc":"57:19:55","nodeType":"YulAssignment","src":"57:19:55","value":{"arguments":[{"kind":"number","nativeSrc":"73:2:55","nodeType":"YulLiteral","src":"73:2:55","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"67:5:55","nodeType":"YulIdentifier","src":"67:5:55"},"nativeSrc":"67:9:55","nodeType":"YulFunctionCall","src":"67:9:55"},"variableNames":[{"name":"memPtr","nativeSrc":"57:6:55","nodeType":"YulIdentifier","src":"57:6:55"}]}]},"name":"allocate_unbounded","nativeSrc":"7:75:55","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"40:6:55","nodeType":"YulTypedName","src":"40:6:55","type":""}],"src":"7:75:55"},{"body":{"nativeSrc":"177:28:55","nodeType":"YulBlock","src":"177:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"194:1:55","nodeType":"YulLiteral","src":"194:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"197:1:55","nodeType":"YulLiteral","src":"197:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"187:6:55","nodeType":"YulIdentifier","src":"187:6:55"},"nativeSrc":"187:12:55","nodeType":"YulFunctionCall","src":"187:12:55"},"nativeSrc":"187:12:55","nodeType":"YulExpressionStatement","src":"187:12:55"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"88:117:55","nodeType":"YulFunctionDefinition","src":"88:117:55"},{"body":{"nativeSrc":"300:28:55","nodeType":"YulBlock","src":"300:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"317:1:55","nodeType":"YulLiteral","src":"317:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"320:1:55","nodeType":"YulLiteral","src":"320:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"310:6:55","nodeType":"YulIdentifier","src":"310:6:55"},"nativeSrc":"310:12:55","nodeType":"YulFunctionCall","src":"310:12:55"},"nativeSrc":"310:12:55","nodeType":"YulExpressionStatement","src":"310:12:55"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"211:117:55","nodeType":"YulFunctionDefinition","src":"211:117:55"},{"body":{"nativeSrc":"379:81:55","nodeType":"YulBlock","src":"379:81:55","statements":[{"nativeSrc":"389:65:55","nodeType":"YulAssignment","src":"389:65:55","value":{"arguments":[{"name":"value","nativeSrc":"404:5:55","nodeType":"YulIdentifier","src":"404:5:55"},{"kind":"number","nativeSrc":"411:42:55","nodeType":"YulLiteral","src":"411:42:55","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"400:3:55","nodeType":"YulIdentifier","src":"400:3:55"},"nativeSrc":"400:54:55","nodeType":"YulFunctionCall","src":"400:54:55"},"variableNames":[{"name":"cleaned","nativeSrc":"389:7:55","nodeType":"YulIdentifier","src":"389:7:55"}]}]},"name":"cleanup_t_uint160","nativeSrc":"334:126:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"361:5:55","nodeType":"YulTypedName","src":"361:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"371:7:55","nodeType":"YulTypedName","src":"371:7:55","type":""}],"src":"334:126:55"},{"body":{"nativeSrc":"511:51:55","nodeType":"YulBlock","src":"511:51:55","statements":[{"nativeSrc":"521:35:55","nodeType":"YulAssignment","src":"521:35:55","value":{"arguments":[{"name":"value","nativeSrc":"550:5:55","nodeType":"YulIdentifier","src":"550:5:55"}],"functionName":{"name":"cleanup_t_uint160","nativeSrc":"532:17:55","nodeType":"YulIdentifier","src":"532:17:55"},"nativeSrc":"532:24:55","nodeType":"YulFunctionCall","src":"532:24:55"},"variableNames":[{"name":"cleaned","nativeSrc":"521:7:55","nodeType":"YulIdentifier","src":"521:7:55"}]}]},"name":"cleanup_t_address","nativeSrc":"466:96:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"493:5:55","nodeType":"YulTypedName","src":"493:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"503:7:55","nodeType":"YulTypedName","src":"503:7:55","type":""}],"src":"466:96:55"},{"body":{"nativeSrc":"611:79:55","nodeType":"YulBlock","src":"611:79:55","statements":[{"body":{"nativeSrc":"668:16:55","nodeType":"YulBlock","src":"668:16:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"677:1:55","nodeType":"YulLiteral","src":"677:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"680:1:55","nodeType":"YulLiteral","src":"680:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"670:6:55","nodeType":"YulIdentifier","src":"670:6:55"},"nativeSrc":"670:12:55","nodeType":"YulFunctionCall","src":"670:12:55"},"nativeSrc":"670:12:55","nodeType":"YulExpressionStatement","src":"670:12:55"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"634:5:55","nodeType":"YulIdentifier","src":"634:5:55"},{"arguments":[{"name":"value","nativeSrc":"659:5:55","nodeType":"YulIdentifier","src":"659:5:55"}],"functionName":{"name":"cleanup_t_address","nativeSrc":"641:17:55","nodeType":"YulIdentifier","src":"641:17:55"},"nativeSrc":"641:24:55","nodeType":"YulFunctionCall","src":"641:24:55"}],"functionName":{"name":"eq","nativeSrc":"631:2:55","nodeType":"YulIdentifier","src":"631:2:55"},"nativeSrc":"631:35:55","nodeType":"YulFunctionCall","src":"631:35:55"}],"functionName":{"name":"iszero","nativeSrc":"624:6:55","nodeType":"YulIdentifier","src":"624:6:55"},"nativeSrc":"624:43:55","nodeType":"YulFunctionCall","src":"624:43:55"},"nativeSrc":"621:63:55","nodeType":"YulIf","src":"621:63:55"}]},"name":"validator_revert_t_address","nativeSrc":"568:122:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"604:5:55","nodeType":"YulTypedName","src":"604:5:55","type":""}],"src":"568:122:55"},{"body":{"nativeSrc":"748:87:55","nodeType":"YulBlock","src":"748:87:55","statements":[{"nativeSrc":"758:29:55","nodeType":"YulAssignment","src":"758:29:55","value":{"arguments":[{"name":"offset","nativeSrc":"780:6:55","nodeType":"YulIdentifier","src":"780:6:55"}],"functionName":{"name":"calldataload","nativeSrc":"767:12:55","nodeType":"YulIdentifier","src":"767:12:55"},"nativeSrc":"767:20:55","nodeType":"YulFunctionCall","src":"767:20:55"},"variableNames":[{"name":"value","nativeSrc":"758:5:55","nodeType":"YulIdentifier","src":"758:5:55"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"823:5:55","nodeType":"YulIdentifier","src":"823:5:55"}],"functionName":{"name":"validator_revert_t_address","nativeSrc":"796:26:55","nodeType":"YulIdentifier","src":"796:26:55"},"nativeSrc":"796:33:55","nodeType":"YulFunctionCall","src":"796:33:55"},"nativeSrc":"796:33:55","nodeType":"YulExpressionStatement","src":"796:33:55"}]},"name":"abi_decode_t_address","nativeSrc":"696:139:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"726:6:55","nodeType":"YulTypedName","src":"726:6:55","type":""},{"name":"end","nativeSrc":"734:3:55","nodeType":"YulTypedName","src":"734:3:55","type":""}],"returnVariables":[{"name":"value","nativeSrc":"742:5:55","nodeType":"YulTypedName","src":"742:5:55","type":""}],"src":"696:139:55"},{"body":{"nativeSrc":"907:263:55","nodeType":"YulBlock","src":"907:263:55","statements":[{"body":{"nativeSrc":"953:83:55","nodeType":"YulBlock","src":"953:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"955:77:55","nodeType":"YulIdentifier","src":"955:77:55"},"nativeSrc":"955:79:55","nodeType":"YulFunctionCall","src":"955:79:55"},"nativeSrc":"955:79:55","nodeType":"YulExpressionStatement","src":"955:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"928:7:55","nodeType":"YulIdentifier","src":"928:7:55"},{"name":"headStart","nativeSrc":"937:9:55","nodeType":"YulIdentifier","src":"937:9:55"}],"functionName":{"name":"sub","nativeSrc":"924:3:55","nodeType":"YulIdentifier","src":"924:3:55"},"nativeSrc":"924:23:55","nodeType":"YulFunctionCall","src":"924:23:55"},{"kind":"number","nativeSrc":"949:2:55","nodeType":"YulLiteral","src":"949:2:55","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"920:3:55","nodeType":"YulIdentifier","src":"920:3:55"},"nativeSrc":"920:32:55","nodeType":"YulFunctionCall","src":"920:32:55"},"nativeSrc":"917:119:55","nodeType":"YulIf","src":"917:119:55"},{"nativeSrc":"1046:117:55","nodeType":"YulBlock","src":"1046:117:55","statements":[{"nativeSrc":"1061:15:55","nodeType":"YulVariableDeclaration","src":"1061:15:55","value":{"kind":"number","nativeSrc":"1075:1:55","nodeType":"YulLiteral","src":"1075:1:55","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"1065:6:55","nodeType":"YulTypedName","src":"1065:6:55","type":""}]},{"nativeSrc":"1090:63:55","nodeType":"YulAssignment","src":"1090:63:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1125:9:55","nodeType":"YulIdentifier","src":"1125:9:55"},{"name":"offset","nativeSrc":"1136:6:55","nodeType":"YulIdentifier","src":"1136:6:55"}],"functionName":{"name":"add","nativeSrc":"1121:3:55","nodeType":"YulIdentifier","src":"1121:3:55"},"nativeSrc":"1121:22:55","nodeType":"YulFunctionCall","src":"1121:22:55"},{"name":"dataEnd","nativeSrc":"1145:7:55","nodeType":"YulIdentifier","src":"1145:7:55"}],"functionName":{"name":"abi_decode_t_address","nativeSrc":"1100:20:55","nodeType":"YulIdentifier","src":"1100:20:55"},"nativeSrc":"1100:53:55","nodeType":"YulFunctionCall","src":"1100:53:55"},"variableNames":[{"name":"value0","nativeSrc":"1090:6:55","nodeType":"YulIdentifier","src":"1090:6:55"}]}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"841:329:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"877:9:55","nodeType":"YulTypedName","src":"877:9:55","type":""},{"name":"dataEnd","nativeSrc":"888:7:55","nodeType":"YulTypedName","src":"888:7:55","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"900:6:55","nodeType":"YulTypedName","src":"900:6:55","type":""}],"src":"841:329:55"},{"body":{"nativeSrc":"1265:28:55","nodeType":"YulBlock","src":"1265:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1282:1:55","nodeType":"YulLiteral","src":"1282:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"1285:1:55","nodeType":"YulLiteral","src":"1285:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1275:6:55","nodeType":"YulIdentifier","src":"1275:6:55"},"nativeSrc":"1275:12:55","nodeType":"YulFunctionCall","src":"1275:12:55"},"nativeSrc":"1275:12:55","nodeType":"YulExpressionStatement","src":"1275:12:55"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nativeSrc":"1176:117:55","nodeType":"YulFunctionDefinition","src":"1176:117:55"},{"body":{"nativeSrc":"1388:28:55","nodeType":"YulBlock","src":"1388:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1405:1:55","nodeType":"YulLiteral","src":"1405:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"1408:1:55","nodeType":"YulLiteral","src":"1408:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1398:6:55","nodeType":"YulIdentifier","src":"1398:6:55"},"nativeSrc":"1398:12:55","nodeType":"YulFunctionCall","src":"1398:12:55"},"nativeSrc":"1398:12:55","nodeType":"YulExpressionStatement","src":"1398:12:55"}]},"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nativeSrc":"1299:117:55","nodeType":"YulFunctionDefinition","src":"1299:117:55"},{"body":{"nativeSrc":"1511:28:55","nodeType":"YulBlock","src":"1511:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1528:1:55","nodeType":"YulLiteral","src":"1528:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"1531:1:55","nodeType":"YulLiteral","src":"1531:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1521:6:55","nodeType":"YulIdentifier","src":"1521:6:55"},"nativeSrc":"1521:12:55","nodeType":"YulFunctionCall","src":"1521:12:55"},"nativeSrc":"1521:12:55","nodeType":"YulExpressionStatement","src":"1521:12:55"}]},"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nativeSrc":"1422:117:55","nodeType":"YulFunctionDefinition","src":"1422:117:55"},{"body":{"nativeSrc":"1632:478:55","nodeType":"YulBlock","src":"1632:478:55","statements":[{"body":{"nativeSrc":"1681:83:55","nodeType":"YulBlock","src":"1681:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nativeSrc":"1683:77:55","nodeType":"YulIdentifier","src":"1683:77:55"},"nativeSrc":"1683:79:55","nodeType":"YulFunctionCall","src":"1683:79:55"},"nativeSrc":"1683:79:55","nodeType":"YulExpressionStatement","src":"1683:79:55"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"1660:6:55","nodeType":"YulIdentifier","src":"1660:6:55"},{"kind":"number","nativeSrc":"1668:4:55","nodeType":"YulLiteral","src":"1668:4:55","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"1656:3:55","nodeType":"YulIdentifier","src":"1656:3:55"},"nativeSrc":"1656:17:55","nodeType":"YulFunctionCall","src":"1656:17:55"},{"name":"end","nativeSrc":"1675:3:55","nodeType":"YulIdentifier","src":"1675:3:55"}],"functionName":{"name":"slt","nativeSrc":"1652:3:55","nodeType":"YulIdentifier","src":"1652:3:55"},"nativeSrc":"1652:27:55","nodeType":"YulFunctionCall","src":"1652:27:55"}],"functionName":{"name":"iszero","nativeSrc":"1645:6:55","nodeType":"YulIdentifier","src":"1645:6:55"},"nativeSrc":"1645:35:55","nodeType":"YulFunctionCall","src":"1645:35:55"},"nativeSrc":"1642:122:55","nodeType":"YulIf","src":"1642:122:55"},{"nativeSrc":"1773:30:55","nodeType":"YulAssignment","src":"1773:30:55","value":{"arguments":[{"name":"offset","nativeSrc":"1796:6:55","nodeType":"YulIdentifier","src":"1796:6:55"}],"functionName":{"name":"calldataload","nativeSrc":"1783:12:55","nodeType":"YulIdentifier","src":"1783:12:55"},"nativeSrc":"1783:20:55","nodeType":"YulFunctionCall","src":"1783:20:55"},"variableNames":[{"name":"length","nativeSrc":"1773:6:55","nodeType":"YulIdentifier","src":"1773:6:55"}]},{"body":{"nativeSrc":"1846:83:55","nodeType":"YulBlock","src":"1846:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nativeSrc":"1848:77:55","nodeType":"YulIdentifier","src":"1848:77:55"},"nativeSrc":"1848:79:55","nodeType":"YulFunctionCall","src":"1848:79:55"},"nativeSrc":"1848:79:55","nodeType":"YulExpressionStatement","src":"1848:79:55"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"1818:6:55","nodeType":"YulIdentifier","src":"1818:6:55"},{"kind":"number","nativeSrc":"1826:18:55","nodeType":"YulLiteral","src":"1826:18:55","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1815:2:55","nodeType":"YulIdentifier","src":"1815:2:55"},"nativeSrc":"1815:30:55","nodeType":"YulFunctionCall","src":"1815:30:55"},"nativeSrc":"1812:117:55","nodeType":"YulIf","src":"1812:117:55"},{"nativeSrc":"1938:29:55","nodeType":"YulAssignment","src":"1938:29:55","value":{"arguments":[{"name":"offset","nativeSrc":"1954:6:55","nodeType":"YulIdentifier","src":"1954:6:55"},{"kind":"number","nativeSrc":"1962:4:55","nodeType":"YulLiteral","src":"1962:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1950:3:55","nodeType":"YulIdentifier","src":"1950:3:55"},"nativeSrc":"1950:17:55","nodeType":"YulFunctionCall","src":"1950:17:55"},"variableNames":[{"name":"arrayPos","nativeSrc":"1938:8:55","nodeType":"YulIdentifier","src":"1938:8:55"}]},{"body":{"nativeSrc":"2021:83:55","nodeType":"YulBlock","src":"2021:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nativeSrc":"2023:77:55","nodeType":"YulIdentifier","src":"2023:77:55"},"nativeSrc":"2023:79:55","nodeType":"YulFunctionCall","src":"2023:79:55"},"nativeSrc":"2023:79:55","nodeType":"YulExpressionStatement","src":"2023:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"arrayPos","nativeSrc":"1986:8:55","nodeType":"YulIdentifier","src":"1986:8:55"},{"arguments":[{"name":"length","nativeSrc":"2000:6:55","nodeType":"YulIdentifier","src":"2000:6:55"},{"kind":"number","nativeSrc":"2008:4:55","nodeType":"YulLiteral","src":"2008:4:55","type":"","value":"0x01"}],"functionName":{"name":"mul","nativeSrc":"1996:3:55","nodeType":"YulIdentifier","src":"1996:3:55"},"nativeSrc":"1996:17:55","nodeType":"YulFunctionCall","src":"1996:17:55"}],"functionName":{"name":"add","nativeSrc":"1982:3:55","nodeType":"YulIdentifier","src":"1982:3:55"},"nativeSrc":"1982:32:55","nodeType":"YulFunctionCall","src":"1982:32:55"},{"name":"end","nativeSrc":"2016:3:55","nodeType":"YulIdentifier","src":"2016:3:55"}],"functionName":{"name":"gt","nativeSrc":"1979:2:55","nodeType":"YulIdentifier","src":"1979:2:55"},"nativeSrc":"1979:41:55","nodeType":"YulFunctionCall","src":"1979:41:55"},"nativeSrc":"1976:128:55","nodeType":"YulIf","src":"1976:128:55"}]},"name":"abi_decode_t_bytes_calldata_ptr","nativeSrc":"1558:552:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1599:6:55","nodeType":"YulTypedName","src":"1599:6:55","type":""},{"name":"end","nativeSrc":"1607:3:55","nodeType":"YulTypedName","src":"1607:3:55","type":""}],"returnVariables":[{"name":"arrayPos","nativeSrc":"1615:8:55","nodeType":"YulTypedName","src":"1615:8:55","type":""},{"name":"length","nativeSrc":"1625:6:55","nodeType":"YulTypedName","src":"1625:6:55","type":""}],"src":"1558:552:55"},{"body":{"nativeSrc":"2218:570:55","nodeType":"YulBlock","src":"2218:570:55","statements":[{"body":{"nativeSrc":"2264:83:55","nodeType":"YulBlock","src":"2264:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"2266:77:55","nodeType":"YulIdentifier","src":"2266:77:55"},"nativeSrc":"2266:79:55","nodeType":"YulFunctionCall","src":"2266:79:55"},"nativeSrc":"2266:79:55","nodeType":"YulExpressionStatement","src":"2266:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2239:7:55","nodeType":"YulIdentifier","src":"2239:7:55"},{"name":"headStart","nativeSrc":"2248:9:55","nodeType":"YulIdentifier","src":"2248:9:55"}],"functionName":{"name":"sub","nativeSrc":"2235:3:55","nodeType":"YulIdentifier","src":"2235:3:55"},"nativeSrc":"2235:23:55","nodeType":"YulFunctionCall","src":"2235:23:55"},{"kind":"number","nativeSrc":"2260:2:55","nodeType":"YulLiteral","src":"2260:2:55","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"2231:3:55","nodeType":"YulIdentifier","src":"2231:3:55"},"nativeSrc":"2231:32:55","nodeType":"YulFunctionCall","src":"2231:32:55"},"nativeSrc":"2228:119:55","nodeType":"YulIf","src":"2228:119:55"},{"nativeSrc":"2357:117:55","nodeType":"YulBlock","src":"2357:117:55","statements":[{"nativeSrc":"2372:15:55","nodeType":"YulVariableDeclaration","src":"2372:15:55","value":{"kind":"number","nativeSrc":"2386:1:55","nodeType":"YulLiteral","src":"2386:1:55","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"2376:6:55","nodeType":"YulTypedName","src":"2376:6:55","type":""}]},{"nativeSrc":"2401:63:55","nodeType":"YulAssignment","src":"2401:63:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2436:9:55","nodeType":"YulIdentifier","src":"2436:9:55"},{"name":"offset","nativeSrc":"2447:6:55","nodeType":"YulIdentifier","src":"2447:6:55"}],"functionName":{"name":"add","nativeSrc":"2432:3:55","nodeType":"YulIdentifier","src":"2432:3:55"},"nativeSrc":"2432:22:55","nodeType":"YulFunctionCall","src":"2432:22:55"},{"name":"dataEnd","nativeSrc":"2456:7:55","nodeType":"YulIdentifier","src":"2456:7:55"}],"functionName":{"name":"abi_decode_t_address","nativeSrc":"2411:20:55","nodeType":"YulIdentifier","src":"2411:20:55"},"nativeSrc":"2411:53:55","nodeType":"YulFunctionCall","src":"2411:53:55"},"variableNames":[{"name":"value0","nativeSrc":"2401:6:55","nodeType":"YulIdentifier","src":"2401:6:55"}]}]},{"nativeSrc":"2484:297:55","nodeType":"YulBlock","src":"2484:297:55","statements":[{"nativeSrc":"2499:46:55","nodeType":"YulVariableDeclaration","src":"2499:46:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2530:9:55","nodeType":"YulIdentifier","src":"2530:9:55"},{"kind":"number","nativeSrc":"2541:2:55","nodeType":"YulLiteral","src":"2541:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2526:3:55","nodeType":"YulIdentifier","src":"2526:3:55"},"nativeSrc":"2526:18:55","nodeType":"YulFunctionCall","src":"2526:18:55"}],"functionName":{"name":"calldataload","nativeSrc":"2513:12:55","nodeType":"YulIdentifier","src":"2513:12:55"},"nativeSrc":"2513:32:55","nodeType":"YulFunctionCall","src":"2513:32:55"},"variables":[{"name":"offset","nativeSrc":"2503:6:55","nodeType":"YulTypedName","src":"2503:6:55","type":""}]},{"body":{"nativeSrc":"2592:83:55","nodeType":"YulBlock","src":"2592:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"2594:77:55","nodeType":"YulIdentifier","src":"2594:77:55"},"nativeSrc":"2594:79:55","nodeType":"YulFunctionCall","src":"2594:79:55"},"nativeSrc":"2594:79:55","nodeType":"YulExpressionStatement","src":"2594:79:55"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"2564:6:55","nodeType":"YulIdentifier","src":"2564:6:55"},{"kind":"number","nativeSrc":"2572:18:55","nodeType":"YulLiteral","src":"2572:18:55","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"2561:2:55","nodeType":"YulIdentifier","src":"2561:2:55"},"nativeSrc":"2561:30:55","nodeType":"YulFunctionCall","src":"2561:30:55"},"nativeSrc":"2558:117:55","nodeType":"YulIf","src":"2558:117:55"},{"nativeSrc":"2689:82:55","nodeType":"YulAssignment","src":"2689:82:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2743:9:55","nodeType":"YulIdentifier","src":"2743:9:55"},{"name":"offset","nativeSrc":"2754:6:55","nodeType":"YulIdentifier","src":"2754:6:55"}],"functionName":{"name":"add","nativeSrc":"2739:3:55","nodeType":"YulIdentifier","src":"2739:3:55"},"nativeSrc":"2739:22:55","nodeType":"YulFunctionCall","src":"2739:22:55"},{"name":"dataEnd","nativeSrc":"2763:7:55","nodeType":"YulIdentifier","src":"2763:7:55"}],"functionName":{"name":"abi_decode_t_bytes_calldata_ptr","nativeSrc":"2707:31:55","nodeType":"YulIdentifier","src":"2707:31:55"},"nativeSrc":"2707:64:55","nodeType":"YulFunctionCall","src":"2707:64:55"},"variableNames":[{"name":"value1","nativeSrc":"2689:6:55","nodeType":"YulIdentifier","src":"2689:6:55"},{"name":"value2","nativeSrc":"2697:6:55","nodeType":"YulIdentifier","src":"2697:6:55"}]}]}]},"name":"abi_decode_tuple_t_addresst_bytes_calldata_ptr","nativeSrc":"2116:672:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2172:9:55","nodeType":"YulTypedName","src":"2172:9:55","type":""},{"name":"dataEnd","nativeSrc":"2183:7:55","nodeType":"YulTypedName","src":"2183:7:55","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2195:6:55","nodeType":"YulTypedName","src":"2195:6:55","type":""},{"name":"value1","nativeSrc":"2203:6:55","nodeType":"YulTypedName","src":"2203:6:55","type":""},{"name":"value2","nativeSrc":"2211:6:55","nodeType":"YulTypedName","src":"2211:6:55","type":""}],"src":"2116:672:55"},{"body":{"nativeSrc":"2859:53:55","nodeType":"YulBlock","src":"2859:53:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"2876:3:55","nodeType":"YulIdentifier","src":"2876:3:55"},{"arguments":[{"name":"value","nativeSrc":"2899:5:55","nodeType":"YulIdentifier","src":"2899:5:55"}],"functionName":{"name":"cleanup_t_address","nativeSrc":"2881:17:55","nodeType":"YulIdentifier","src":"2881:17:55"},"nativeSrc":"2881:24:55","nodeType":"YulFunctionCall","src":"2881:24:55"}],"functionName":{"name":"mstore","nativeSrc":"2869:6:55","nodeType":"YulIdentifier","src":"2869:6:55"},"nativeSrc":"2869:37:55","nodeType":"YulFunctionCall","src":"2869:37:55"},"nativeSrc":"2869:37:55","nodeType":"YulExpressionStatement","src":"2869:37:55"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"2794:118:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2847:5:55","nodeType":"YulTypedName","src":"2847:5:55","type":""},{"name":"pos","nativeSrc":"2854:3:55","nodeType":"YulTypedName","src":"2854:3:55","type":""}],"src":"2794:118:55"},{"body":{"nativeSrc":"3016:124:55","nodeType":"YulBlock","src":"3016:124:55","statements":[{"nativeSrc":"3026:26:55","nodeType":"YulAssignment","src":"3026:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"3038:9:55","nodeType":"YulIdentifier","src":"3038:9:55"},{"kind":"number","nativeSrc":"3049:2:55","nodeType":"YulLiteral","src":"3049:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3034:3:55","nodeType":"YulIdentifier","src":"3034:3:55"},"nativeSrc":"3034:18:55","nodeType":"YulFunctionCall","src":"3034:18:55"},"variableNames":[{"name":"tail","nativeSrc":"3026:4:55","nodeType":"YulIdentifier","src":"3026:4:55"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"3106:6:55","nodeType":"YulIdentifier","src":"3106:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"3119:9:55","nodeType":"YulIdentifier","src":"3119:9:55"},{"kind":"number","nativeSrc":"3130:1:55","nodeType":"YulLiteral","src":"3130:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"3115:3:55","nodeType":"YulIdentifier","src":"3115:3:55"},"nativeSrc":"3115:17:55","nodeType":"YulFunctionCall","src":"3115:17:55"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"3062:43:55","nodeType":"YulIdentifier","src":"3062:43:55"},"nativeSrc":"3062:71:55","nodeType":"YulFunctionCall","src":"3062:71:55"},"nativeSrc":"3062:71:55","nodeType":"YulExpressionStatement","src":"3062:71:55"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"2918:222:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2988:9:55","nodeType":"YulTypedName","src":"2988:9:55","type":""},{"name":"value0","nativeSrc":"3000:6:55","nodeType":"YulTypedName","src":"3000:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3011:4:55","nodeType":"YulTypedName","src":"3011:4:55","type":""}],"src":"2918:222:55"},{"body":{"nativeSrc":"3242:73:55","nodeType":"YulBlock","src":"3242:73:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"3259:3:55","nodeType":"YulIdentifier","src":"3259:3:55"},{"name":"length","nativeSrc":"3264:6:55","nodeType":"YulIdentifier","src":"3264:6:55"}],"functionName":{"name":"mstore","nativeSrc":"3252:6:55","nodeType":"YulIdentifier","src":"3252:6:55"},"nativeSrc":"3252:19:55","nodeType":"YulFunctionCall","src":"3252:19:55"},"nativeSrc":"3252:19:55","nodeType":"YulExpressionStatement","src":"3252:19:55"},{"nativeSrc":"3280:29:55","nodeType":"YulAssignment","src":"3280:29:55","value":{"arguments":[{"name":"pos","nativeSrc":"3299:3:55","nodeType":"YulIdentifier","src":"3299:3:55"},{"kind":"number","nativeSrc":"3304:4:55","nodeType":"YulLiteral","src":"3304:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3295:3:55","nodeType":"YulIdentifier","src":"3295:3:55"},"nativeSrc":"3295:14:55","nodeType":"YulFunctionCall","src":"3295:14:55"},"variableNames":[{"name":"updated_pos","nativeSrc":"3280:11:55","nodeType":"YulIdentifier","src":"3280:11:55"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"3146:169:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"3214:3:55","nodeType":"YulTypedName","src":"3214:3:55","type":""},{"name":"length","nativeSrc":"3219:6:55","nodeType":"YulTypedName","src":"3219:6:55","type":""}],"returnVariables":[{"name":"updated_pos","nativeSrc":"3230:11:55","nodeType":"YulTypedName","src":"3230:11:55","type":""}],"src":"3146:169:55"},{"body":{"nativeSrc":"3427:184:55","nodeType":"YulBlock","src":"3427:184:55","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"3449:6:55","nodeType":"YulIdentifier","src":"3449:6:55"},{"kind":"number","nativeSrc":"3457:1:55","nodeType":"YulLiteral","src":"3457:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"3445:3:55","nodeType":"YulIdentifier","src":"3445:3:55"},"nativeSrc":"3445:14:55","nodeType":"YulFunctionCall","src":"3445:14:55"},{"hexValue":"5472616e73706172656e745570677261646561626c6550726f78793a2061646d","kind":"string","nativeSrc":"3461:34:55","nodeType":"YulLiteral","src":"3461:34:55","type":"","value":"TransparentUpgradeableProxy: adm"}],"functionName":{"name":"mstore","nativeSrc":"3438:6:55","nodeType":"YulIdentifier","src":"3438:6:55"},"nativeSrc":"3438:58:55","nodeType":"YulFunctionCall","src":"3438:58:55"},"nativeSrc":"3438:58:55","nodeType":"YulExpressionStatement","src":"3438:58:55"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"3517:6:55","nodeType":"YulIdentifier","src":"3517:6:55"},{"kind":"number","nativeSrc":"3525:2:55","nodeType":"YulLiteral","src":"3525:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3513:3:55","nodeType":"YulIdentifier","src":"3513:3:55"},"nativeSrc":"3513:15:55","nodeType":"YulFunctionCall","src":"3513:15:55"},{"hexValue":"696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267","kind":"string","nativeSrc":"3530:34:55","nodeType":"YulLiteral","src":"3530:34:55","type":"","value":"in cannot fallback to proxy targ"}],"functionName":{"name":"mstore","nativeSrc":"3506:6:55","nodeType":"YulIdentifier","src":"3506:6:55"},"nativeSrc":"3506:59:55","nodeType":"YulFunctionCall","src":"3506:59:55"},"nativeSrc":"3506:59:55","nodeType":"YulExpressionStatement","src":"3506:59:55"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"3586:6:55","nodeType":"YulIdentifier","src":"3586:6:55"},{"kind":"number","nativeSrc":"3594:2:55","nodeType":"YulLiteral","src":"3594:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"3582:3:55","nodeType":"YulIdentifier","src":"3582:3:55"},"nativeSrc":"3582:15:55","nodeType":"YulFunctionCall","src":"3582:15:55"},{"hexValue":"6574","kind":"string","nativeSrc":"3599:4:55","nodeType":"YulLiteral","src":"3599:4:55","type":"","value":"et"}],"functionName":{"name":"mstore","nativeSrc":"3575:6:55","nodeType":"YulIdentifier","src":"3575:6:55"},"nativeSrc":"3575:29:55","nodeType":"YulFunctionCall","src":"3575:29:55"},"nativeSrc":"3575:29:55","nodeType":"YulExpressionStatement","src":"3575:29:55"}]},"name":"store_literal_in_memory_f5d2ea39d7e6c7d19dc32ccc2bd7ca26b7aa4a603ef4aa6f2b205c93c3ffe43d","nativeSrc":"3321:290:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"3419:6:55","nodeType":"YulTypedName","src":"3419:6:55","type":""}],"src":"3321:290:55"},{"body":{"nativeSrc":"3763:220:55","nodeType":"YulBlock","src":"3763:220:55","statements":[{"nativeSrc":"3773:74:55","nodeType":"YulAssignment","src":"3773:74:55","value":{"arguments":[{"name":"pos","nativeSrc":"3839:3:55","nodeType":"YulIdentifier","src":"3839:3:55"},{"kind":"number","nativeSrc":"3844:2:55","nodeType":"YulLiteral","src":"3844:2:55","type":"","value":"66"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"3780:58:55","nodeType":"YulIdentifier","src":"3780:58:55"},"nativeSrc":"3780:67:55","nodeType":"YulFunctionCall","src":"3780:67:55"},"variableNames":[{"name":"pos","nativeSrc":"3773:3:55","nodeType":"YulIdentifier","src":"3773:3:55"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"3945:3:55","nodeType":"YulIdentifier","src":"3945:3:55"}],"functionName":{"name":"store_literal_in_memory_f5d2ea39d7e6c7d19dc32ccc2bd7ca26b7aa4a603ef4aa6f2b205c93c3ffe43d","nativeSrc":"3856:88:55","nodeType":"YulIdentifier","src":"3856:88:55"},"nativeSrc":"3856:93:55","nodeType":"YulFunctionCall","src":"3856:93:55"},"nativeSrc":"3856:93:55","nodeType":"YulExpressionStatement","src":"3856:93:55"},{"nativeSrc":"3958:19:55","nodeType":"YulAssignment","src":"3958:19:55","value":{"arguments":[{"name":"pos","nativeSrc":"3969:3:55","nodeType":"YulIdentifier","src":"3969:3:55"},{"kind":"number","nativeSrc":"3974:2:55","nodeType":"YulLiteral","src":"3974:2:55","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"3965:3:55","nodeType":"YulIdentifier","src":"3965:3:55"},"nativeSrc":"3965:12:55","nodeType":"YulFunctionCall","src":"3965:12:55"},"variableNames":[{"name":"end","nativeSrc":"3958:3:55","nodeType":"YulIdentifier","src":"3958:3:55"}]}]},"name":"abi_encode_t_stringliteral_f5d2ea39d7e6c7d19dc32ccc2bd7ca26b7aa4a603ef4aa6f2b205c93c3ffe43d_to_t_string_memory_ptr_fromStack","nativeSrc":"3617:366:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"3751:3:55","nodeType":"YulTypedName","src":"3751:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"3759:3:55","nodeType":"YulTypedName","src":"3759:3:55","type":""}],"src":"3617:366:55"},{"body":{"nativeSrc":"4160:248:55","nodeType":"YulBlock","src":"4160:248:55","statements":[{"nativeSrc":"4170:26:55","nodeType":"YulAssignment","src":"4170:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"4182:9:55","nodeType":"YulIdentifier","src":"4182:9:55"},{"kind":"number","nativeSrc":"4193:2:55","nodeType":"YulLiteral","src":"4193:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4178:3:55","nodeType":"YulIdentifier","src":"4178:3:55"},"nativeSrc":"4178:18:55","nodeType":"YulFunctionCall","src":"4178:18:55"},"variableNames":[{"name":"tail","nativeSrc":"4170:4:55","nodeType":"YulIdentifier","src":"4170:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4217:9:55","nodeType":"YulIdentifier","src":"4217:9:55"},{"kind":"number","nativeSrc":"4228:1:55","nodeType":"YulLiteral","src":"4228:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"4213:3:55","nodeType":"YulIdentifier","src":"4213:3:55"},"nativeSrc":"4213:17:55","nodeType":"YulFunctionCall","src":"4213:17:55"},{"arguments":[{"name":"tail","nativeSrc":"4236:4:55","nodeType":"YulIdentifier","src":"4236:4:55"},{"name":"headStart","nativeSrc":"4242:9:55","nodeType":"YulIdentifier","src":"4242:9:55"}],"functionName":{"name":"sub","nativeSrc":"4232:3:55","nodeType":"YulIdentifier","src":"4232:3:55"},"nativeSrc":"4232:20:55","nodeType":"YulFunctionCall","src":"4232:20:55"}],"functionName":{"name":"mstore","nativeSrc":"4206:6:55","nodeType":"YulIdentifier","src":"4206:6:55"},"nativeSrc":"4206:47:55","nodeType":"YulFunctionCall","src":"4206:47:55"},"nativeSrc":"4206:47:55","nodeType":"YulExpressionStatement","src":"4206:47:55"},{"nativeSrc":"4262:139:55","nodeType":"YulAssignment","src":"4262:139:55","value":{"arguments":[{"name":"tail","nativeSrc":"4396:4:55","nodeType":"YulIdentifier","src":"4396:4:55"}],"functionName":{"name":"abi_encode_t_stringliteral_f5d2ea39d7e6c7d19dc32ccc2bd7ca26b7aa4a603ef4aa6f2b205c93c3ffe43d_to_t_string_memory_ptr_fromStack","nativeSrc":"4270:124:55","nodeType":"YulIdentifier","src":"4270:124:55"},"nativeSrc":"4270:131:55","nodeType":"YulFunctionCall","src":"4270:131:55"},"variableNames":[{"name":"tail","nativeSrc":"4262:4:55","nodeType":"YulIdentifier","src":"4262:4:55"}]}]},"name":"abi_encode_tuple_t_stringliteral_f5d2ea39d7e6c7d19dc32ccc2bd7ca26b7aa4a603ef4aa6f2b205c93c3ffe43d__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"3989:419:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4140:9:55","nodeType":"YulTypedName","src":"4140:9:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4155:4:55","nodeType":"YulTypedName","src":"4155:4:55","type":""}],"src":"3989:419:55"},{"body":{"nativeSrc":"4540:206:55","nodeType":"YulBlock","src":"4540:206:55","statements":[{"nativeSrc":"4550:26:55","nodeType":"YulAssignment","src":"4550:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"4562:9:55","nodeType":"YulIdentifier","src":"4562:9:55"},{"kind":"number","nativeSrc":"4573:2:55","nodeType":"YulLiteral","src":"4573:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"4558:3:55","nodeType":"YulIdentifier","src":"4558:3:55"},"nativeSrc":"4558:18:55","nodeType":"YulFunctionCall","src":"4558:18:55"},"variableNames":[{"name":"tail","nativeSrc":"4550:4:55","nodeType":"YulIdentifier","src":"4550:4:55"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"4630:6:55","nodeType":"YulIdentifier","src":"4630:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"4643:9:55","nodeType":"YulIdentifier","src":"4643:9:55"},{"kind":"number","nativeSrc":"4654:1:55","nodeType":"YulLiteral","src":"4654:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"4639:3:55","nodeType":"YulIdentifier","src":"4639:3:55"},"nativeSrc":"4639:17:55","nodeType":"YulFunctionCall","src":"4639:17:55"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"4586:43:55","nodeType":"YulIdentifier","src":"4586:43:55"},"nativeSrc":"4586:71:55","nodeType":"YulFunctionCall","src":"4586:71:55"},"nativeSrc":"4586:71:55","nodeType":"YulExpressionStatement","src":"4586:71:55"},{"expression":{"arguments":[{"name":"value1","nativeSrc":"4711:6:55","nodeType":"YulIdentifier","src":"4711:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"4724:9:55","nodeType":"YulIdentifier","src":"4724:9:55"},{"kind":"number","nativeSrc":"4735:2:55","nodeType":"YulLiteral","src":"4735:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4720:3:55","nodeType":"YulIdentifier","src":"4720:3:55"},"nativeSrc":"4720:18:55","nodeType":"YulFunctionCall","src":"4720:18:55"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"4667:43:55","nodeType":"YulIdentifier","src":"4667:43:55"},"nativeSrc":"4667:72:55","nodeType":"YulFunctionCall","src":"4667:72:55"},"nativeSrc":"4667:72:55","nodeType":"YulExpressionStatement","src":"4667:72:55"}]},"name":"abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed","nativeSrc":"4414:332:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4504:9:55","nodeType":"YulTypedName","src":"4504:9:55","type":""},{"name":"value1","nativeSrc":"4516:6:55","nodeType":"YulTypedName","src":"4516:6:55","type":""},{"name":"value0","nativeSrc":"4524:6:55","nodeType":"YulTypedName","src":"4524:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4535:4:55","nodeType":"YulTypedName","src":"4535:4:55","type":""}],"src":"4414:332:55"},{"body":{"nativeSrc":"4858:119:55","nodeType":"YulBlock","src":"4858:119:55","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"4880:6:55","nodeType":"YulIdentifier","src":"4880:6:55"},{"kind":"number","nativeSrc":"4888:1:55","nodeType":"YulLiteral","src":"4888:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"4876:3:55","nodeType":"YulIdentifier","src":"4876:3:55"},"nativeSrc":"4876:14:55","nodeType":"YulFunctionCall","src":"4876:14:55"},{"hexValue":"455243313936373a206e65772061646d696e20697320746865207a65726f2061","kind":"string","nativeSrc":"4892:34:55","nodeType":"YulLiteral","src":"4892:34:55","type":"","value":"ERC1967: new admin is the zero a"}],"functionName":{"name":"mstore","nativeSrc":"4869:6:55","nodeType":"YulIdentifier","src":"4869:6:55"},"nativeSrc":"4869:58:55","nodeType":"YulFunctionCall","src":"4869:58:55"},"nativeSrc":"4869:58:55","nodeType":"YulExpressionStatement","src":"4869:58:55"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"4948:6:55","nodeType":"YulIdentifier","src":"4948:6:55"},{"kind":"number","nativeSrc":"4956:2:55","nodeType":"YulLiteral","src":"4956:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4944:3:55","nodeType":"YulIdentifier","src":"4944:3:55"},"nativeSrc":"4944:15:55","nodeType":"YulFunctionCall","src":"4944:15:55"},{"hexValue":"646472657373","kind":"string","nativeSrc":"4961:8:55","nodeType":"YulLiteral","src":"4961:8:55","type":"","value":"ddress"}],"functionName":{"name":"mstore","nativeSrc":"4937:6:55","nodeType":"YulIdentifier","src":"4937:6:55"},"nativeSrc":"4937:33:55","nodeType":"YulFunctionCall","src":"4937:33:55"},"nativeSrc":"4937:33:55","nodeType":"YulExpressionStatement","src":"4937:33:55"}]},"name":"store_literal_in_memory_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5","nativeSrc":"4752:225:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"4850:6:55","nodeType":"YulTypedName","src":"4850:6:55","type":""}],"src":"4752:225:55"},{"body":{"nativeSrc":"5129:220:55","nodeType":"YulBlock","src":"5129:220:55","statements":[{"nativeSrc":"5139:74:55","nodeType":"YulAssignment","src":"5139:74:55","value":{"arguments":[{"name":"pos","nativeSrc":"5205:3:55","nodeType":"YulIdentifier","src":"5205:3:55"},{"kind":"number","nativeSrc":"5210:2:55","nodeType":"YulLiteral","src":"5210:2:55","type":"","value":"38"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"5146:58:55","nodeType":"YulIdentifier","src":"5146:58:55"},"nativeSrc":"5146:67:55","nodeType":"YulFunctionCall","src":"5146:67:55"},"variableNames":[{"name":"pos","nativeSrc":"5139:3:55","nodeType":"YulIdentifier","src":"5139:3:55"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"5311:3:55","nodeType":"YulIdentifier","src":"5311:3:55"}],"functionName":{"name":"store_literal_in_memory_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5","nativeSrc":"5222:88:55","nodeType":"YulIdentifier","src":"5222:88:55"},"nativeSrc":"5222:93:55","nodeType":"YulFunctionCall","src":"5222:93:55"},"nativeSrc":"5222:93:55","nodeType":"YulExpressionStatement","src":"5222:93:55"},{"nativeSrc":"5324:19:55","nodeType":"YulAssignment","src":"5324:19:55","value":{"arguments":[{"name":"pos","nativeSrc":"5335:3:55","nodeType":"YulIdentifier","src":"5335:3:55"},{"kind":"number","nativeSrc":"5340:2:55","nodeType":"YulLiteral","src":"5340:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5331:3:55","nodeType":"YulIdentifier","src":"5331:3:55"},"nativeSrc":"5331:12:55","nodeType":"YulFunctionCall","src":"5331:12:55"},"variableNames":[{"name":"end","nativeSrc":"5324:3:55","nodeType":"YulIdentifier","src":"5324:3:55"}]}]},"name":"abi_encode_t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5_to_t_string_memory_ptr_fromStack","nativeSrc":"4983:366:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"5117:3:55","nodeType":"YulTypedName","src":"5117:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"5125:3:55","nodeType":"YulTypedName","src":"5125:3:55","type":""}],"src":"4983:366:55"},{"body":{"nativeSrc":"5526:248:55","nodeType":"YulBlock","src":"5526:248:55","statements":[{"nativeSrc":"5536:26:55","nodeType":"YulAssignment","src":"5536:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"5548:9:55","nodeType":"YulIdentifier","src":"5548:9:55"},{"kind":"number","nativeSrc":"5559:2:55","nodeType":"YulLiteral","src":"5559:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5544:3:55","nodeType":"YulIdentifier","src":"5544:3:55"},"nativeSrc":"5544:18:55","nodeType":"YulFunctionCall","src":"5544:18:55"},"variableNames":[{"name":"tail","nativeSrc":"5536:4:55","nodeType":"YulIdentifier","src":"5536:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5583:9:55","nodeType":"YulIdentifier","src":"5583:9:55"},{"kind":"number","nativeSrc":"5594:1:55","nodeType":"YulLiteral","src":"5594:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"5579:3:55","nodeType":"YulIdentifier","src":"5579:3:55"},"nativeSrc":"5579:17:55","nodeType":"YulFunctionCall","src":"5579:17:55"},{"arguments":[{"name":"tail","nativeSrc":"5602:4:55","nodeType":"YulIdentifier","src":"5602:4:55"},{"name":"headStart","nativeSrc":"5608:9:55","nodeType":"YulIdentifier","src":"5608:9:55"}],"functionName":{"name":"sub","nativeSrc":"5598:3:55","nodeType":"YulIdentifier","src":"5598:3:55"},"nativeSrc":"5598:20:55","nodeType":"YulFunctionCall","src":"5598:20:55"}],"functionName":{"name":"mstore","nativeSrc":"5572:6:55","nodeType":"YulIdentifier","src":"5572:6:55"},"nativeSrc":"5572:47:55","nodeType":"YulFunctionCall","src":"5572:47:55"},"nativeSrc":"5572:47:55","nodeType":"YulExpressionStatement","src":"5572:47:55"},{"nativeSrc":"5628:139:55","nodeType":"YulAssignment","src":"5628:139:55","value":{"arguments":[{"name":"tail","nativeSrc":"5762:4:55","nodeType":"YulIdentifier","src":"5762:4:55"}],"functionName":{"name":"abi_encode_t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5_to_t_string_memory_ptr_fromStack","nativeSrc":"5636:124:55","nodeType":"YulIdentifier","src":"5636:124:55"},"nativeSrc":"5636:131:55","nodeType":"YulFunctionCall","src":"5636:131:55"},"variableNames":[{"name":"tail","nativeSrc":"5628:4:55","nodeType":"YulIdentifier","src":"5628:4:55"}]}]},"name":"abi_encode_tuple_t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"5355:419:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5506:9:55","nodeType":"YulTypedName","src":"5506:9:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5521:4:55","nodeType":"YulTypedName","src":"5521:4:55","type":""}],"src":"5355:419:55"},{"body":{"nativeSrc":"5886:126:55","nodeType":"YulBlock","src":"5886:126:55","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"5908:6:55","nodeType":"YulIdentifier","src":"5908:6:55"},{"kind":"number","nativeSrc":"5916:1:55","nodeType":"YulLiteral","src":"5916:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"5904:3:55","nodeType":"YulIdentifier","src":"5904:3:55"},"nativeSrc":"5904:14:55","nodeType":"YulFunctionCall","src":"5904:14:55"},{"hexValue":"455243313936373a206e657720696d706c656d656e746174696f6e206973206e","kind":"string","nativeSrc":"5920:34:55","nodeType":"YulLiteral","src":"5920:34:55","type":"","value":"ERC1967: new implementation is n"}],"functionName":{"name":"mstore","nativeSrc":"5897:6:55","nodeType":"YulIdentifier","src":"5897:6:55"},"nativeSrc":"5897:58:55","nodeType":"YulFunctionCall","src":"5897:58:55"},"nativeSrc":"5897:58:55","nodeType":"YulExpressionStatement","src":"5897:58:55"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"5976:6:55","nodeType":"YulIdentifier","src":"5976:6:55"},{"kind":"number","nativeSrc":"5984:2:55","nodeType":"YulLiteral","src":"5984:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5972:3:55","nodeType":"YulIdentifier","src":"5972:3:55"},"nativeSrc":"5972:15:55","nodeType":"YulFunctionCall","src":"5972:15:55"},{"hexValue":"6f74206120636f6e7472616374","kind":"string","nativeSrc":"5989:15:55","nodeType":"YulLiteral","src":"5989:15:55","type":"","value":"ot a contract"}],"functionName":{"name":"mstore","nativeSrc":"5965:6:55","nodeType":"YulIdentifier","src":"5965:6:55"},"nativeSrc":"5965:40:55","nodeType":"YulFunctionCall","src":"5965:40:55"},"nativeSrc":"5965:40:55","nodeType":"YulExpressionStatement","src":"5965:40:55"}]},"name":"store_literal_in_memory_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65","nativeSrc":"5780:232:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"5878:6:55","nodeType":"YulTypedName","src":"5878:6:55","type":""}],"src":"5780:232:55"},{"body":{"nativeSrc":"6164:220:55","nodeType":"YulBlock","src":"6164:220:55","statements":[{"nativeSrc":"6174:74:55","nodeType":"YulAssignment","src":"6174:74:55","value":{"arguments":[{"name":"pos","nativeSrc":"6240:3:55","nodeType":"YulIdentifier","src":"6240:3:55"},{"kind":"number","nativeSrc":"6245:2:55","nodeType":"YulLiteral","src":"6245:2:55","type":"","value":"45"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"6181:58:55","nodeType":"YulIdentifier","src":"6181:58:55"},"nativeSrc":"6181:67:55","nodeType":"YulFunctionCall","src":"6181:67:55"},"variableNames":[{"name":"pos","nativeSrc":"6174:3:55","nodeType":"YulIdentifier","src":"6174:3:55"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"6346:3:55","nodeType":"YulIdentifier","src":"6346:3:55"}],"functionName":{"name":"store_literal_in_memory_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65","nativeSrc":"6257:88:55","nodeType":"YulIdentifier","src":"6257:88:55"},"nativeSrc":"6257:93:55","nodeType":"YulFunctionCall","src":"6257:93:55"},"nativeSrc":"6257:93:55","nodeType":"YulExpressionStatement","src":"6257:93:55"},{"nativeSrc":"6359:19:55","nodeType":"YulAssignment","src":"6359:19:55","value":{"arguments":[{"name":"pos","nativeSrc":"6370:3:55","nodeType":"YulIdentifier","src":"6370:3:55"},{"kind":"number","nativeSrc":"6375:2:55","nodeType":"YulLiteral","src":"6375:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"6366:3:55","nodeType":"YulIdentifier","src":"6366:3:55"},"nativeSrc":"6366:12:55","nodeType":"YulFunctionCall","src":"6366:12:55"},"variableNames":[{"name":"end","nativeSrc":"6359:3:55","nodeType":"YulIdentifier","src":"6359:3:55"}]}]},"name":"abi_encode_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65_to_t_string_memory_ptr_fromStack","nativeSrc":"6018:366:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"6152:3:55","nodeType":"YulTypedName","src":"6152:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"6160:3:55","nodeType":"YulTypedName","src":"6160:3:55","type":""}],"src":"6018:366:55"},{"body":{"nativeSrc":"6561:248:55","nodeType":"YulBlock","src":"6561:248:55","statements":[{"nativeSrc":"6571:26:55","nodeType":"YulAssignment","src":"6571:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"6583:9:55","nodeType":"YulIdentifier","src":"6583:9:55"},{"kind":"number","nativeSrc":"6594:2:55","nodeType":"YulLiteral","src":"6594:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6579:3:55","nodeType":"YulIdentifier","src":"6579:3:55"},"nativeSrc":"6579:18:55","nodeType":"YulFunctionCall","src":"6579:18:55"},"variableNames":[{"name":"tail","nativeSrc":"6571:4:55","nodeType":"YulIdentifier","src":"6571:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6618:9:55","nodeType":"YulIdentifier","src":"6618:9:55"},{"kind":"number","nativeSrc":"6629:1:55","nodeType":"YulLiteral","src":"6629:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"6614:3:55","nodeType":"YulIdentifier","src":"6614:3:55"},"nativeSrc":"6614:17:55","nodeType":"YulFunctionCall","src":"6614:17:55"},{"arguments":[{"name":"tail","nativeSrc":"6637:4:55","nodeType":"YulIdentifier","src":"6637:4:55"},{"name":"headStart","nativeSrc":"6643:9:55","nodeType":"YulIdentifier","src":"6643:9:55"}],"functionName":{"name":"sub","nativeSrc":"6633:3:55","nodeType":"YulIdentifier","src":"6633:3:55"},"nativeSrc":"6633:20:55","nodeType":"YulFunctionCall","src":"6633:20:55"}],"functionName":{"name":"mstore","nativeSrc":"6607:6:55","nodeType":"YulIdentifier","src":"6607:6:55"},"nativeSrc":"6607:47:55","nodeType":"YulFunctionCall","src":"6607:47:55"},"nativeSrc":"6607:47:55","nodeType":"YulExpressionStatement","src":"6607:47:55"},{"nativeSrc":"6663:139:55","nodeType":"YulAssignment","src":"6663:139:55","value":{"arguments":[{"name":"tail","nativeSrc":"6797:4:55","nodeType":"YulIdentifier","src":"6797:4:55"}],"functionName":{"name":"abi_encode_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65_to_t_string_memory_ptr_fromStack","nativeSrc":"6671:124:55","nodeType":"YulIdentifier","src":"6671:124:55"},"nativeSrc":"6671:131:55","nodeType":"YulFunctionCall","src":"6671:131:55"},"variableNames":[{"name":"tail","nativeSrc":"6663:4:55","nodeType":"YulIdentifier","src":"6663:4:55"}]}]},"name":"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"6390:419:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6541:9:55","nodeType":"YulTypedName","src":"6541:9:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"6556:4:55","nodeType":"YulTypedName","src":"6556:4:55","type":""}],"src":"6390:419:55"},{"body":{"nativeSrc":"6921:119:55","nodeType":"YulBlock","src":"6921:119:55","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"6943:6:55","nodeType":"YulIdentifier","src":"6943:6:55"},{"kind":"number","nativeSrc":"6951:1:55","nodeType":"YulLiteral","src":"6951:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"6939:3:55","nodeType":"YulIdentifier","src":"6939:3:55"},"nativeSrc":"6939:14:55","nodeType":"YulFunctionCall","src":"6939:14:55"},{"hexValue":"416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f","kind":"string","nativeSrc":"6955:34:55","nodeType":"YulLiteral","src":"6955:34:55","type":"","value":"Address: delegate call to non-co"}],"functionName":{"name":"mstore","nativeSrc":"6932:6:55","nodeType":"YulIdentifier","src":"6932:6:55"},"nativeSrc":"6932:58:55","nodeType":"YulFunctionCall","src":"6932:58:55"},"nativeSrc":"6932:58:55","nodeType":"YulExpressionStatement","src":"6932:58:55"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"7011:6:55","nodeType":"YulIdentifier","src":"7011:6:55"},{"kind":"number","nativeSrc":"7019:2:55","nodeType":"YulLiteral","src":"7019:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7007:3:55","nodeType":"YulIdentifier","src":"7007:3:55"},"nativeSrc":"7007:15:55","nodeType":"YulFunctionCall","src":"7007:15:55"},{"hexValue":"6e7472616374","kind":"string","nativeSrc":"7024:8:55","nodeType":"YulLiteral","src":"7024:8:55","type":"","value":"ntract"}],"functionName":{"name":"mstore","nativeSrc":"7000:6:55","nodeType":"YulIdentifier","src":"7000:6:55"},"nativeSrc":"7000:33:55","nodeType":"YulFunctionCall","src":"7000:33:55"},"nativeSrc":"7000:33:55","nodeType":"YulExpressionStatement","src":"7000:33:55"}]},"name":"store_literal_in_memory_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520","nativeSrc":"6815:225:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"6913:6:55","nodeType":"YulTypedName","src":"6913:6:55","type":""}],"src":"6815:225:55"},{"body":{"nativeSrc":"7192:220:55","nodeType":"YulBlock","src":"7192:220:55","statements":[{"nativeSrc":"7202:74:55","nodeType":"YulAssignment","src":"7202:74:55","value":{"arguments":[{"name":"pos","nativeSrc":"7268:3:55","nodeType":"YulIdentifier","src":"7268:3:55"},{"kind":"number","nativeSrc":"7273:2:55","nodeType":"YulLiteral","src":"7273:2:55","type":"","value":"38"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"7209:58:55","nodeType":"YulIdentifier","src":"7209:58:55"},"nativeSrc":"7209:67:55","nodeType":"YulFunctionCall","src":"7209:67:55"},"variableNames":[{"name":"pos","nativeSrc":"7202:3:55","nodeType":"YulIdentifier","src":"7202:3:55"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"7374:3:55","nodeType":"YulIdentifier","src":"7374:3:55"}],"functionName":{"name":"store_literal_in_memory_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520","nativeSrc":"7285:88:55","nodeType":"YulIdentifier","src":"7285:88:55"},"nativeSrc":"7285:93:55","nodeType":"YulFunctionCall","src":"7285:93:55"},"nativeSrc":"7285:93:55","nodeType":"YulExpressionStatement","src":"7285:93:55"},{"nativeSrc":"7387:19:55","nodeType":"YulAssignment","src":"7387:19:55","value":{"arguments":[{"name":"pos","nativeSrc":"7398:3:55","nodeType":"YulIdentifier","src":"7398:3:55"},{"kind":"number","nativeSrc":"7403:2:55","nodeType":"YulLiteral","src":"7403:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"7394:3:55","nodeType":"YulIdentifier","src":"7394:3:55"},"nativeSrc":"7394:12:55","nodeType":"YulFunctionCall","src":"7394:12:55"},"variableNames":[{"name":"end","nativeSrc":"7387:3:55","nodeType":"YulIdentifier","src":"7387:3:55"}]}]},"name":"abi_encode_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520_to_t_string_memory_ptr_fromStack","nativeSrc":"7046:366:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"7180:3:55","nodeType":"YulTypedName","src":"7180:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"7188:3:55","nodeType":"YulTypedName","src":"7188:3:55","type":""}],"src":"7046:366:55"},{"body":{"nativeSrc":"7589:248:55","nodeType":"YulBlock","src":"7589:248:55","statements":[{"nativeSrc":"7599:26:55","nodeType":"YulAssignment","src":"7599:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"7611:9:55","nodeType":"YulIdentifier","src":"7611:9:55"},{"kind":"number","nativeSrc":"7622:2:55","nodeType":"YulLiteral","src":"7622:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7607:3:55","nodeType":"YulIdentifier","src":"7607:3:55"},"nativeSrc":"7607:18:55","nodeType":"YulFunctionCall","src":"7607:18:55"},"variableNames":[{"name":"tail","nativeSrc":"7599:4:55","nodeType":"YulIdentifier","src":"7599:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7646:9:55","nodeType":"YulIdentifier","src":"7646:9:55"},{"kind":"number","nativeSrc":"7657:1:55","nodeType":"YulLiteral","src":"7657:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"7642:3:55","nodeType":"YulIdentifier","src":"7642:3:55"},"nativeSrc":"7642:17:55","nodeType":"YulFunctionCall","src":"7642:17:55"},{"arguments":[{"name":"tail","nativeSrc":"7665:4:55","nodeType":"YulIdentifier","src":"7665:4:55"},{"name":"headStart","nativeSrc":"7671:9:55","nodeType":"YulIdentifier","src":"7671:9:55"}],"functionName":{"name":"sub","nativeSrc":"7661:3:55","nodeType":"YulIdentifier","src":"7661:3:55"},"nativeSrc":"7661:20:55","nodeType":"YulFunctionCall","src":"7661:20:55"}],"functionName":{"name":"mstore","nativeSrc":"7635:6:55","nodeType":"YulIdentifier","src":"7635:6:55"},"nativeSrc":"7635:47:55","nodeType":"YulFunctionCall","src":"7635:47:55"},"nativeSrc":"7635:47:55","nodeType":"YulExpressionStatement","src":"7635:47:55"},{"nativeSrc":"7691:139:55","nodeType":"YulAssignment","src":"7691:139:55","value":{"arguments":[{"name":"tail","nativeSrc":"7825:4:55","nodeType":"YulIdentifier","src":"7825:4:55"}],"functionName":{"name":"abi_encode_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520_to_t_string_memory_ptr_fromStack","nativeSrc":"7699:124:55","nodeType":"YulIdentifier","src":"7699:124:55"},"nativeSrc":"7699:131:55","nodeType":"YulFunctionCall","src":"7699:131:55"},"variableNames":[{"name":"tail","nativeSrc":"7691:4:55","nodeType":"YulIdentifier","src":"7691:4:55"}]}]},"name":"abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"7418:419:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7569:9:55","nodeType":"YulTypedName","src":"7569:9:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"7584:4:55","nodeType":"YulTypedName","src":"7584:4:55","type":""}],"src":"7418:419:55"},{"body":{"nativeSrc":"7901:40:55","nodeType":"YulBlock","src":"7901:40:55","statements":[{"nativeSrc":"7912:22:55","nodeType":"YulAssignment","src":"7912:22:55","value":{"arguments":[{"name":"value","nativeSrc":"7928:5:55","nodeType":"YulIdentifier","src":"7928:5:55"}],"functionName":{"name":"mload","nativeSrc":"7922:5:55","nodeType":"YulIdentifier","src":"7922:5:55"},"nativeSrc":"7922:12:55","nodeType":"YulFunctionCall","src":"7922:12:55"},"variableNames":[{"name":"length","nativeSrc":"7912:6:55","nodeType":"YulIdentifier","src":"7912:6:55"}]}]},"name":"array_length_t_bytes_memory_ptr","nativeSrc":"7843:98:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"7884:5:55","nodeType":"YulTypedName","src":"7884:5:55","type":""}],"returnVariables":[{"name":"length","nativeSrc":"7894:6:55","nodeType":"YulTypedName","src":"7894:6:55","type":""}],"src":"7843:98:55"},{"body":{"nativeSrc":"8060:34:55","nodeType":"YulBlock","src":"8060:34:55","statements":[{"nativeSrc":"8070:18:55","nodeType":"YulAssignment","src":"8070:18:55","value":{"name":"pos","nativeSrc":"8085:3:55","nodeType":"YulIdentifier","src":"8085:3:55"},"variableNames":[{"name":"updated_pos","nativeSrc":"8070:11:55","nodeType":"YulIdentifier","src":"8070:11:55"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"7947:147:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"8032:3:55","nodeType":"YulTypedName","src":"8032:3:55","type":""},{"name":"length","nativeSrc":"8037:6:55","nodeType":"YulTypedName","src":"8037:6:55","type":""}],"returnVariables":[{"name":"updated_pos","nativeSrc":"8048:11:55","nodeType":"YulTypedName","src":"8048:11:55","type":""}],"src":"7947:147:55"},{"body":{"nativeSrc":"8162:77:55","nodeType":"YulBlock","src":"8162:77:55","statements":[{"expression":{"arguments":[{"name":"dst","nativeSrc":"8179:3:55","nodeType":"YulIdentifier","src":"8179:3:55"},{"name":"src","nativeSrc":"8184:3:55","nodeType":"YulIdentifier","src":"8184:3:55"},{"name":"length","nativeSrc":"8189:6:55","nodeType":"YulIdentifier","src":"8189:6:55"}],"functionName":{"name":"mcopy","nativeSrc":"8173:5:55","nodeType":"YulIdentifier","src":"8173:5:55"},"nativeSrc":"8173:23:55","nodeType":"YulFunctionCall","src":"8173:23:55"},"nativeSrc":"8173:23:55","nodeType":"YulExpressionStatement","src":"8173:23:55"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"8216:3:55","nodeType":"YulIdentifier","src":"8216:3:55"},{"name":"length","nativeSrc":"8221:6:55","nodeType":"YulIdentifier","src":"8221:6:55"}],"functionName":{"name":"add","nativeSrc":"8212:3:55","nodeType":"YulIdentifier","src":"8212:3:55"},"nativeSrc":"8212:16:55","nodeType":"YulFunctionCall","src":"8212:16:55"},{"kind":"number","nativeSrc":"8230:1:55","nodeType":"YulLiteral","src":"8230:1:55","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"8205:6:55","nodeType":"YulIdentifier","src":"8205:6:55"},"nativeSrc":"8205:27:55","nodeType":"YulFunctionCall","src":"8205:27:55"},"nativeSrc":"8205:27:55","nodeType":"YulExpressionStatement","src":"8205:27:55"}]},"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"8100:139:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nativeSrc":"8144:3:55","nodeType":"YulTypedName","src":"8144:3:55","type":""},{"name":"dst","nativeSrc":"8149:3:55","nodeType":"YulTypedName","src":"8149:3:55","type":""},{"name":"length","nativeSrc":"8154:6:55","nodeType":"YulTypedName","src":"8154:6:55","type":""}],"src":"8100:139:55"},{"body":{"nativeSrc":"8353:278:55","nodeType":"YulBlock","src":"8353:278:55","statements":[{"nativeSrc":"8363:52:55","nodeType":"YulVariableDeclaration","src":"8363:52:55","value":{"arguments":[{"name":"value","nativeSrc":"8409:5:55","nodeType":"YulIdentifier","src":"8409:5:55"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nativeSrc":"8377:31:55","nodeType":"YulIdentifier","src":"8377:31:55"},"nativeSrc":"8377:38:55","nodeType":"YulFunctionCall","src":"8377:38:55"},"variables":[{"name":"length","nativeSrc":"8367:6:55","nodeType":"YulTypedName","src":"8367:6:55","type":""}]},{"nativeSrc":"8424:95:55","nodeType":"YulAssignment","src":"8424:95:55","value":{"arguments":[{"name":"pos","nativeSrc":"8507:3:55","nodeType":"YulIdentifier","src":"8507:3:55"},{"name":"length","nativeSrc":"8512:6:55","nodeType":"YulIdentifier","src":"8512:6:55"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"8431:75:55","nodeType":"YulIdentifier","src":"8431:75:55"},"nativeSrc":"8431:88:55","nodeType":"YulFunctionCall","src":"8431:88:55"},"variableNames":[{"name":"pos","nativeSrc":"8424:3:55","nodeType":"YulIdentifier","src":"8424:3:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"8567:5:55","nodeType":"YulIdentifier","src":"8567:5:55"},{"kind":"number","nativeSrc":"8574:4:55","nodeType":"YulLiteral","src":"8574:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8563:3:55","nodeType":"YulIdentifier","src":"8563:3:55"},"nativeSrc":"8563:16:55","nodeType":"YulFunctionCall","src":"8563:16:55"},{"name":"pos","nativeSrc":"8581:3:55","nodeType":"YulIdentifier","src":"8581:3:55"},{"name":"length","nativeSrc":"8586:6:55","nodeType":"YulIdentifier","src":"8586:6:55"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"8528:34:55","nodeType":"YulIdentifier","src":"8528:34:55"},"nativeSrc":"8528:65:55","nodeType":"YulFunctionCall","src":"8528:65:55"},"nativeSrc":"8528:65:55","nodeType":"YulExpressionStatement","src":"8528:65:55"},{"nativeSrc":"8602:23:55","nodeType":"YulAssignment","src":"8602:23:55","value":{"arguments":[{"name":"pos","nativeSrc":"8613:3:55","nodeType":"YulIdentifier","src":"8613:3:55"},{"name":"length","nativeSrc":"8618:6:55","nodeType":"YulIdentifier","src":"8618:6:55"}],"functionName":{"name":"add","nativeSrc":"8609:3:55","nodeType":"YulIdentifier","src":"8609:3:55"},"nativeSrc":"8609:16:55","nodeType":"YulFunctionCall","src":"8609:16:55"},"variableNames":[{"name":"end","nativeSrc":"8602:3:55","nodeType":"YulIdentifier","src":"8602:3:55"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"8245:386:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"8334:5:55","nodeType":"YulTypedName","src":"8334:5:55","type":""},{"name":"pos","nativeSrc":"8341:3:55","nodeType":"YulTypedName","src":"8341:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"8349:3:55","nodeType":"YulTypedName","src":"8349:3:55","type":""}],"src":"8245:386:55"},{"body":{"nativeSrc":"8771:137:55","nodeType":"YulBlock","src":"8771:137:55","statements":[{"nativeSrc":"8782:100:55","nodeType":"YulAssignment","src":"8782:100:55","value":{"arguments":[{"name":"value0","nativeSrc":"8869:6:55","nodeType":"YulIdentifier","src":"8869:6:55"},{"name":"pos","nativeSrc":"8878:3:55","nodeType":"YulIdentifier","src":"8878:3:55"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"8789:79:55","nodeType":"YulIdentifier","src":"8789:79:55"},"nativeSrc":"8789:93:55","nodeType":"YulFunctionCall","src":"8789:93:55"},"variableNames":[{"name":"pos","nativeSrc":"8782:3:55","nodeType":"YulIdentifier","src":"8782:3:55"}]},{"nativeSrc":"8892:10:55","nodeType":"YulAssignment","src":"8892:10:55","value":{"name":"pos","nativeSrc":"8899:3:55","nodeType":"YulIdentifier","src":"8899:3:55"},"variableNames":[{"name":"end","nativeSrc":"8892:3:55","nodeType":"YulIdentifier","src":"8892:3:55"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"8637:271:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"8750:3:55","nodeType":"YulTypedName","src":"8750:3:55","type":""},{"name":"value0","nativeSrc":"8756:6:55","nodeType":"YulTypedName","src":"8756:6:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"8767:3:55","nodeType":"YulTypedName","src":"8767:3:55","type":""}],"src":"8637:271:55"},{"body":{"nativeSrc":"8973:40:55","nodeType":"YulBlock","src":"8973:40:55","statements":[{"nativeSrc":"8984:22:55","nodeType":"YulAssignment","src":"8984:22:55","value":{"arguments":[{"name":"value","nativeSrc":"9000:5:55","nodeType":"YulIdentifier","src":"9000:5:55"}],"functionName":{"name":"mload","nativeSrc":"8994:5:55","nodeType":"YulIdentifier","src":"8994:5:55"},"nativeSrc":"8994:12:55","nodeType":"YulFunctionCall","src":"8994:12:55"},"variableNames":[{"name":"length","nativeSrc":"8984:6:55","nodeType":"YulIdentifier","src":"8984:6:55"}]}]},"name":"array_length_t_string_memory_ptr","nativeSrc":"8914:99:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"8956:5:55","nodeType":"YulTypedName","src":"8956:5:55","type":""}],"returnVariables":[{"name":"length","nativeSrc":"8966:6:55","nodeType":"YulTypedName","src":"8966:6:55","type":""}],"src":"8914:99:55"},{"body":{"nativeSrc":"9067:54:55","nodeType":"YulBlock","src":"9067:54:55","statements":[{"nativeSrc":"9077:38:55","nodeType":"YulAssignment","src":"9077:38:55","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"9095:5:55","nodeType":"YulIdentifier","src":"9095:5:55"},{"kind":"number","nativeSrc":"9102:2:55","nodeType":"YulLiteral","src":"9102:2:55","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"9091:3:55","nodeType":"YulIdentifier","src":"9091:3:55"},"nativeSrc":"9091:14:55","nodeType":"YulFunctionCall","src":"9091:14:55"},{"arguments":[{"kind":"number","nativeSrc":"9111:2:55","nodeType":"YulLiteral","src":"9111:2:55","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"9107:3:55","nodeType":"YulIdentifier","src":"9107:3:55"},"nativeSrc":"9107:7:55","nodeType":"YulFunctionCall","src":"9107:7:55"}],"functionName":{"name":"and","nativeSrc":"9087:3:55","nodeType":"YulIdentifier","src":"9087:3:55"},"nativeSrc":"9087:28:55","nodeType":"YulFunctionCall","src":"9087:28:55"},"variableNames":[{"name":"result","nativeSrc":"9077:6:55","nodeType":"YulIdentifier","src":"9077:6:55"}]}]},"name":"round_up_to_mul_of_32","nativeSrc":"9019:102:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"9050:5:55","nodeType":"YulTypedName","src":"9050:5:55","type":""}],"returnVariables":[{"name":"result","nativeSrc":"9060:6:55","nodeType":"YulTypedName","src":"9060:6:55","type":""}],"src":"9019:102:55"},{"body":{"nativeSrc":"9219:285:55","nodeType":"YulBlock","src":"9219:285:55","statements":[{"nativeSrc":"9229:53:55","nodeType":"YulVariableDeclaration","src":"9229:53:55","value":{"arguments":[{"name":"value","nativeSrc":"9276:5:55","nodeType":"YulIdentifier","src":"9276:5:55"}],"functionName":{"name":"array_length_t_string_memory_ptr","nativeSrc":"9243:32:55","nodeType":"YulIdentifier","src":"9243:32:55"},"nativeSrc":"9243:39:55","nodeType":"YulFunctionCall","src":"9243:39:55"},"variables":[{"name":"length","nativeSrc":"9233:6:55","nodeType":"YulTypedName","src":"9233:6:55","type":""}]},{"nativeSrc":"9291:78:55","nodeType":"YulAssignment","src":"9291:78:55","value":{"arguments":[{"name":"pos","nativeSrc":"9357:3:55","nodeType":"YulIdentifier","src":"9357:3:55"},{"name":"length","nativeSrc":"9362:6:55","nodeType":"YulIdentifier","src":"9362:6:55"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"9298:58:55","nodeType":"YulIdentifier","src":"9298:58:55"},"nativeSrc":"9298:71:55","nodeType":"YulFunctionCall","src":"9298:71:55"},"variableNames":[{"name":"pos","nativeSrc":"9291:3:55","nodeType":"YulIdentifier","src":"9291:3:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"9417:5:55","nodeType":"YulIdentifier","src":"9417:5:55"},{"kind":"number","nativeSrc":"9424:4:55","nodeType":"YulLiteral","src":"9424:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"9413:3:55","nodeType":"YulIdentifier","src":"9413:3:55"},"nativeSrc":"9413:16:55","nodeType":"YulFunctionCall","src":"9413:16:55"},{"name":"pos","nativeSrc":"9431:3:55","nodeType":"YulIdentifier","src":"9431:3:55"},{"name":"length","nativeSrc":"9436:6:55","nodeType":"YulIdentifier","src":"9436:6:55"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"9378:34:55","nodeType":"YulIdentifier","src":"9378:34:55"},"nativeSrc":"9378:65:55","nodeType":"YulFunctionCall","src":"9378:65:55"},"nativeSrc":"9378:65:55","nodeType":"YulExpressionStatement","src":"9378:65:55"},{"nativeSrc":"9452:46:55","nodeType":"YulAssignment","src":"9452:46:55","value":{"arguments":[{"name":"pos","nativeSrc":"9463:3:55","nodeType":"YulIdentifier","src":"9463:3:55"},{"arguments":[{"name":"length","nativeSrc":"9490:6:55","nodeType":"YulIdentifier","src":"9490:6:55"}],"functionName":{"name":"round_up_to_mul_of_32","nativeSrc":"9468:21:55","nodeType":"YulIdentifier","src":"9468:21:55"},"nativeSrc":"9468:29:55","nodeType":"YulFunctionCall","src":"9468:29:55"}],"functionName":{"name":"add","nativeSrc":"9459:3:55","nodeType":"YulIdentifier","src":"9459:3:55"},"nativeSrc":"9459:39:55","nodeType":"YulFunctionCall","src":"9459:39:55"},"variableNames":[{"name":"end","nativeSrc":"9452:3:55","nodeType":"YulIdentifier","src":"9452:3:55"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nativeSrc":"9127:377:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"9200:5:55","nodeType":"YulTypedName","src":"9200:5:55","type":""},{"name":"pos","nativeSrc":"9207:3:55","nodeType":"YulTypedName","src":"9207:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"9215:3:55","nodeType":"YulTypedName","src":"9215:3:55","type":""}],"src":"9127:377:55"},{"body":{"nativeSrc":"9628:195:55","nodeType":"YulBlock","src":"9628:195:55","statements":[{"nativeSrc":"9638:26:55","nodeType":"YulAssignment","src":"9638:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"9650:9:55","nodeType":"YulIdentifier","src":"9650:9:55"},{"kind":"number","nativeSrc":"9661:2:55","nodeType":"YulLiteral","src":"9661:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9646:3:55","nodeType":"YulIdentifier","src":"9646:3:55"},"nativeSrc":"9646:18:55","nodeType":"YulFunctionCall","src":"9646:18:55"},"variableNames":[{"name":"tail","nativeSrc":"9638:4:55","nodeType":"YulIdentifier","src":"9638:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9685:9:55","nodeType":"YulIdentifier","src":"9685:9:55"},{"kind":"number","nativeSrc":"9696:1:55","nodeType":"YulLiteral","src":"9696:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"9681:3:55","nodeType":"YulIdentifier","src":"9681:3:55"},"nativeSrc":"9681:17:55","nodeType":"YulFunctionCall","src":"9681:17:55"},{"arguments":[{"name":"tail","nativeSrc":"9704:4:55","nodeType":"YulIdentifier","src":"9704:4:55"},{"name":"headStart","nativeSrc":"9710:9:55","nodeType":"YulIdentifier","src":"9710:9:55"}],"functionName":{"name":"sub","nativeSrc":"9700:3:55","nodeType":"YulIdentifier","src":"9700:3:55"},"nativeSrc":"9700:20:55","nodeType":"YulFunctionCall","src":"9700:20:55"}],"functionName":{"name":"mstore","nativeSrc":"9674:6:55","nodeType":"YulIdentifier","src":"9674:6:55"},"nativeSrc":"9674:47:55","nodeType":"YulFunctionCall","src":"9674:47:55"},"nativeSrc":"9674:47:55","nodeType":"YulExpressionStatement","src":"9674:47:55"},{"nativeSrc":"9730:86:55","nodeType":"YulAssignment","src":"9730:86:55","value":{"arguments":[{"name":"value0","nativeSrc":"9802:6:55","nodeType":"YulIdentifier","src":"9802:6:55"},{"name":"tail","nativeSrc":"9811:4:55","nodeType":"YulIdentifier","src":"9811:4:55"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nativeSrc":"9738:63:55","nodeType":"YulIdentifier","src":"9738:63:55"},"nativeSrc":"9738:78:55","nodeType":"YulFunctionCall","src":"9738:78:55"},"variableNames":[{"name":"tail","nativeSrc":"9730:4:55","nodeType":"YulIdentifier","src":"9730:4:55"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"9510:313:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9600:9:55","nodeType":"YulTypedName","src":"9600:9:55","type":""},{"name":"value0","nativeSrc":"9612:6:55","nodeType":"YulTypedName","src":"9612:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9623:4:55","nodeType":"YulTypedName","src":"9623:4:55","type":""}],"src":"9510:313:55"}]},"contents":"{\n\n    function allocate_unbounded() -> memPtr {\n        memPtr := mload(64)\n    }\n\n    function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n        revert(0, 0)\n    }\n\n    function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n        revert(0, 0)\n    }\n\n    function cleanup_t_uint160(value) -> cleaned {\n        cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n    }\n\n    function cleanup_t_address(value) -> cleaned {\n        cleaned := cleanup_t_uint160(value)\n    }\n\n    function validator_revert_t_address(value) {\n        if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n    }\n\n    function abi_decode_t_address(offset, end) -> value {\n        value := calldataload(offset)\n        validator_revert_t_address(value)\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 revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n        revert(0, 0)\n    }\n\n    function revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() {\n        revert(0, 0)\n    }\n\n    function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n        revert(0, 0)\n    }\n\n    // bytes\n    function abi_decode_t_bytes_calldata_ptr(offset, end) -> arrayPos, length {\n        if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n        arrayPos := add(offset, 0x20)\n        if gt(add(arrayPos, mul(length, 0x01)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n    }\n\n    function abi_decode_tuple_t_addresst_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2 {\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 := calldataload(add(headStart, 32))\n            if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n            value1, value2 := abi_decode_t_bytes_calldata_ptr(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 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 store_literal_in_memory_f5d2ea39d7e6c7d19dc32ccc2bd7ca26b7aa4a603ef4aa6f2b205c93c3ffe43d(memPtr) {\n\n        mstore(add(memPtr, 0), \"TransparentUpgradeableProxy: adm\")\n\n        mstore(add(memPtr, 32), \"in cannot fallback to proxy targ\")\n\n        mstore(add(memPtr, 64), \"et\")\n\n    }\n\n    function abi_encode_t_stringliteral_f5d2ea39d7e6c7d19dc32ccc2bd7ca26b7aa4a603ef4aa6f2b205c93c3ffe43d_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 66)\n        store_literal_in_memory_f5d2ea39d7e6c7d19dc32ccc2bd7ca26b7aa4a603ef4aa6f2b205c93c3ffe43d(pos)\n        end := add(pos, 96)\n    }\n\n    function abi_encode_tuple_t_stringliteral_f5d2ea39d7e6c7d19dc32ccc2bd7ca26b7aa4a603ef4aa6f2b205c93c3ffe43d__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_f5d2ea39d7e6c7d19dc32ccc2bd7ca26b7aa4a603ef4aa6f2b205c93c3ffe43d_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart , value1, value0) -> tail {\n        tail := add(headStart, 64)\n\n        abi_encode_t_address_to_t_address_fromStack(value0,  add(headStart, 0))\n\n        abi_encode_t_address_to_t_address_fromStack(value1,  add(headStart, 32))\n\n    }\n\n    function store_literal_in_memory_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5(memPtr) {\n\n        mstore(add(memPtr, 0), \"ERC1967: new admin is the zero a\")\n\n        mstore(add(memPtr, 32), \"ddress\")\n\n    }\n\n    function abi_encode_t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 38)\n        store_literal_in_memory_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5__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_3820e16891102c1360a787e6e648431097d92537f969d458f5c94b56f8318be5_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65(memPtr) {\n\n        mstore(add(memPtr, 0), \"ERC1967: new implementation is n\")\n\n        mstore(add(memPtr, 32), \"ot a contract\")\n\n    }\n\n    function abi_encode_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 45)\n        store_literal_in_memory_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__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_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520(memPtr) {\n\n        mstore(add(memPtr, 0), \"Address: delegate call to non-co\")\n\n        mstore(add(memPtr, 32), \"ntract\")\n\n    }\n\n    function abi_encode_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 38)\n        store_literal_in_memory_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__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_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function array_length_t_bytes_memory_ptr(value) -> length {\n\n        length := mload(value)\n\n    }\n\n    function array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n        updated_pos := pos\n    }\n\n    function copy_memory_to_memory_with_cleanup(src, dst, length) {\n\n        mcopy(dst, src, length)\n        mstore(add(dst, length), 0)\n\n    }\n\n    function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n        let length := array_length_t_bytes_memory_ptr(value)\n        pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n        copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n        end := add(pos, length)\n    }\n\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value0) -> end {\n\n        pos := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value0,  pos)\n\n        end := pos\n    }\n\n    function array_length_t_string_memory_ptr(value) -> length {\n\n        length := mload(value)\n\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}\n","id":55,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"60806040526004361061004d575f3560e01c80633659cfe6146100645780634f1ef286146100835780635c60da1b146100965780638f283970146100c0578063f851a440146100df5761005c565b3661005c5761005a6100f3565b005b61005a6100f3565b34801561006f575f5ffd5b5061005a61007e366004610571565b61010d565b61005a6100913660046105e5565b610148565b3480156100a1575f5ffd5b506100aa6101ae565b6040516100b7919061064b565b60405180910390f35b3480156100cb575f5ffd5b5061005a6100da366004610571565b6101de565b3480156100ea575f5ffd5b506100aa6101fe565b6100fb61021e565b61010b610106610256565b61025f565b565b61011561027d565b6001600160a01b031633036101405761013d8160405180602001604052805f8152505f6102af565b50565b61013d6100f3565b61015061027d565b6001600160a01b031633036101a6576101a18383838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250600192506102af915050565b505050565b6101a16100f3565b5f6101b761027d565b6001600160a01b031633036101d3576101ce610256565b905090565b6101db6100f3565b90565b6101e661027d565b6001600160a01b031633036101405761013d816102d9565b5f61020761027d565b6001600160a01b031633036101d3576101ce61027d565b61022661027d565b6001600160a01b0316330361010b5760405162461bcd60e51b815260040161024d90610659565b60405180910390fd5b5f6101ce610322565b365f5f375f5f365f845af43d5f5f3e808015610279573d5ff35b3d5ffd5b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6102b883610349565b5f825111806102c45750805b156101a1576102d38383610388565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61030261027d565b826040516103119291906106c5565b60405180910390a161013d816103b6565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6102a0565b61035281610420565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103ad838360405180606001604052806027815260200161085a6027913961046e565b90505b92915050565b6001600160a01b0381166103dc5760405162461bcd60e51b815260040161024d90610725565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6104475760405162461bcd60e51b815260040161024d9061077e565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6103ff565b60606001600160a01b0384163b6104975760405162461bcd60e51b815260040161024d906107d0565b5f5f856001600160a01b0316856040516104b1919061080c565b5f60405180830381855af49150503d805f81146104e9576040519150601f19603f3d011682016040523d82523d5f602084013e6104ee565b606091505b50915091506104fe82828661050a565b925050505b9392505050565b60608315610519575081610503565b8251156105295782518084602001fd5b8160405162461bcd60e51b815260040161024d9190610848565b5f6001600160a01b0382166103b0565b61055c81610543565b811461013d575f5ffd5b80356103b081610553565b5f60208284031215610584576105845f5ffd5b5f61058f8484610566565b949350505050565b5f5f83601f8401126105aa576105aa5f5ffd5b50813567ffffffffffffffff8111156105c4576105c45f5ffd5b6020830191508360018202830111156105de576105de5f5ffd5b9250929050565b5f5f5f604084860312156105fa576105fa5f5ffd5b5f6106058686610566565b935050602084013567ffffffffffffffff811115610624576106245f5ffd5b61063086828701610597565b92509250509250925092565b61064581610543565b82525050565b602081016103b0828461063c565b602080825281016103b081604281527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60208201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267604082015261195d60f21b606082015260800190565b604081016106d3828561063c565b610503602083018461063c565b602681525f602082017f455243313936373a206e65772061646d696e20697320746865207a65726f206181526564647265737360d01b602082015291505b5060400190565b602080825281016103b0816106e0565b602d81525f602082017f455243313936373a206e657720696d706c656d656e746174696f6e206973206e81526c1bdd08184818dbdb9d1c9858dd609a1b6020820152915061071e565b602080825281016103b081610735565b602681525f602082017f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f8152651b9d1c9858dd60d21b6020820152915061071e565b602080825281016103b08161078e565b8281835e505f910152565b5f6107f4825190565b6108028185602086016107e0565b9290920192915050565b5f61050382846107eb565b5f610820825190565b8084526020840193506108378185602086016107e0565b601f01601f19169290920192915050565b602080825281016103ad818461081756fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122051cf53c867ae1ab3d3b4f9a276522d2ae072481e30341b711a9273f92dd1c81064736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4D JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x64 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x83 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x96 JUMPI DUP1 PUSH4 0x8F283970 EQ PUSH2 0xC0 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0xDF JUMPI PUSH2 0x5C JUMP JUMPDEST CALLDATASIZE PUSH2 0x5C JUMPI PUSH2 0x5A PUSH2 0xF3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x5A PUSH2 0xF3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6F JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x5A PUSH2 0x7E CALLDATASIZE PUSH1 0x4 PUSH2 0x571 JUMP JUMPDEST PUSH2 0x10D JUMP JUMPDEST PUSH2 0x5A PUSH2 0x91 CALLDATASIZE PUSH1 0x4 PUSH2 0x5E5 JUMP JUMPDEST PUSH2 0x148 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0xAA PUSH2 0x1AE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB7 SWAP2 SWAP1 PUSH2 0x64B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCB JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x5A PUSH2 0xDA CALLDATASIZE PUSH1 0x4 PUSH2 0x571 JUMP JUMPDEST PUSH2 0x1DE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEA JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0xAA PUSH2 0x1FE JUMP JUMPDEST PUSH2 0xFB PUSH2 0x21E JUMP JUMPDEST PUSH2 0x10B PUSH2 0x106 PUSH2 0x256 JUMP JUMPDEST PUSH2 0x25F JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x115 PUSH2 0x27D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER SUB PUSH2 0x140 JUMPI PUSH2 0x13D DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 DUP2 MSTORE POP PUSH0 PUSH2 0x2AF JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x13D PUSH2 0xF3 JUMP JUMPDEST PUSH2 0x150 PUSH2 0x27D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER SUB PUSH2 0x1A6 JUMPI PUSH2 0x1A1 DUP4 DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH1 0x1 SWAP3 POP PUSH2 0x2AF SWAP2 POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1A1 PUSH2 0xF3 JUMP JUMPDEST PUSH0 PUSH2 0x1B7 PUSH2 0x27D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER SUB PUSH2 0x1D3 JUMPI PUSH2 0x1CE PUSH2 0x256 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1DB PUSH2 0xF3 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1E6 PUSH2 0x27D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER SUB PUSH2 0x140 JUMPI PUSH2 0x13D DUP2 PUSH2 0x2D9 JUMP JUMPDEST PUSH0 PUSH2 0x207 PUSH2 0x27D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER SUB PUSH2 0x1D3 JUMPI PUSH2 0x1CE PUSH2 0x27D JUMP JUMPDEST PUSH2 0x226 PUSH2 0x27D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER SUB PUSH2 0x10B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24D SWAP1 PUSH2 0x659 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x1CE PUSH2 0x322 JUMP JUMPDEST CALLDATASIZE PUSH0 PUSH0 CALLDATACOPY PUSH0 PUSH0 CALLDATASIZE PUSH0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x279 JUMPI RETURNDATASIZE PUSH0 RETURN JUMPDEST RETURNDATASIZE PUSH0 REVERT JUMPDEST PUSH0 PUSH32 0xB53127684A568B3173AE13B9F8A6016E243E63B6E8EE1178D6A717850B5D6103 JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2B8 DUP4 PUSH2 0x349 JUMP JUMPDEST PUSH0 DUP3 MLOAD GT DUP1 PUSH2 0x2C4 JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x1A1 JUMPI PUSH2 0x2D3 DUP4 DUP4 PUSH2 0x388 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x7E644D79422F17C01E4894B5F4F588D331EBFA28653D42AE832DC59E38C9798F PUSH2 0x302 PUSH2 0x27D JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH2 0x311 SWAP3 SWAP2 SWAP1 PUSH2 0x6C5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0x13D DUP2 PUSH2 0x3B6 JUMP JUMPDEST PUSH0 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH2 0x2A0 JUMP JUMPDEST PUSH2 0x352 DUP2 PUSH2 0x420 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x3AD DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x85A PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x46E JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x3DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24D SWAP1 PUSH2 0x725 JUMP JUMPDEST DUP1 PUSH32 0xB53127684A568B3173AE13B9F8A6016E243E63B6E8EE1178D6A717850B5D6103 JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0x447 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24D SWAP1 PUSH2 0x77E JUMP JUMPDEST DUP1 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH2 0x3FF JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x497 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24D SWAP1 PUSH2 0x7D0 JUMP JUMPDEST PUSH0 PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x4B1 SWAP2 SWAP1 PUSH2 0x80C JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x4E9 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x4EE JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x4FE DUP3 DUP3 DUP7 PUSH2 0x50A JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x519 JUMPI POP DUP2 PUSH2 0x503 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x529 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24D SWAP2 SWAP1 PUSH2 0x848 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3B0 JUMP JUMPDEST PUSH2 0x55C DUP2 PUSH2 0x543 JUMP JUMPDEST DUP2 EQ PUSH2 0x13D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3B0 DUP2 PUSH2 0x553 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x584 JUMPI PUSH2 0x584 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x58F DUP5 DUP5 PUSH2 0x566 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x5AA JUMPI PUSH2 0x5AA PUSH0 PUSH0 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5C4 JUMPI PUSH2 0x5C4 PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x5DE JUMPI PUSH2 0x5DE PUSH0 PUSH0 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5FA JUMPI PUSH2 0x5FA PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x605 DUP7 DUP7 PUSH2 0x566 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x624 JUMPI PUSH2 0x624 PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x630 DUP7 DUP3 DUP8 ADD PUSH2 0x597 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x645 DUP2 PUSH2 0x543 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x3B0 DUP3 DUP5 PUSH2 0x63C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x3B0 DUP2 PUSH1 0x42 DUP2 MSTORE PUSH32 0x5472616E73706172656E745570677261646561626C6550726F78793A2061646D PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x696E2063616E6E6F742066616C6C6261636B20746F2070726F78792074617267 PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x195D PUSH1 0xF2 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x6D3 DUP3 DUP6 PUSH2 0x63C JUMP JUMPDEST PUSH2 0x503 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x63C JUMP JUMPDEST PUSH1 0x26 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x455243313936373A206E65772061646D696E20697320746865207A65726F2061 DUP2 MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP2 POP JUMPDEST POP PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x3B0 DUP2 PUSH2 0x6E0 JUMP JUMPDEST PUSH1 0x2D DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E DUP2 MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP2 POP PUSH2 0x71E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x3B0 DUP2 PUSH2 0x735 JUMP JUMPDEST PUSH1 0x26 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F DUP2 MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP2 POP PUSH2 0x71E JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x3B0 DUP2 PUSH2 0x78E JUMP JUMPDEST DUP3 DUP2 DUP4 MCOPY POP PUSH0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH0 PUSH2 0x7F4 DUP3 MLOAD SWAP1 JUMP JUMPDEST PUSH2 0x802 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x7E0 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x503 DUP3 DUP5 PUSH2 0x7EB JUMP JUMPDEST PUSH0 PUSH2 0x820 DUP3 MLOAD SWAP1 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH2 0x837 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x7E0 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x3AD DUP2 DUP5 PUSH2 0x817 JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x7066735822122051CF53 0xC8 PUSH8 0xAE1AB3D3B4F9A276 MSTORE 0x2D 0x2A 0xE0 PUSH19 0x481E30341B711A9273F92DD1C81064736F6C63 NUMBER STOP ADDMOD SHR STOP CALLER ","sourceMap":"1634:3556:50:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2903:11:47;:9;:11::i;:::-;1634:3556:50;;2680:11:47;:9;:11::i;4032:134:50:-;;;;;;;;;;-1:-1:-1;4032:134:50;;;;;:::i;:::-;;:::i;4542:164::-;;;;;;:::i;:::-;;:::i;3435:129::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3769:103;;;;;;;;;;-1:-1:-1;3769:103:50;;;;;:::i;:::-;;:::i;2879:96::-;;;;;;;;;;;;;:::i;2327:110:47:-;2375:17;:15;:17::i;:::-;2402:28;2412:17;:15;:17::i;:::-;2402:9;:28::i;:::-;2327:110::o;4032:134:50:-;2350:11;:9;:11::i;:::-;-1:-1:-1;;;;;2336:25:50;:10;:25;2332:99;;4105:54:::1;4123:17;4142:9;;;;;;;;;;;::::0;4153:5:::1;4105:17;:54::i;:::-;4032:134:::0;:::o;2332:99::-;2409:11;:9;:11::i;4542:164::-;2350:11;:9;:11::i;:::-;-1:-1:-1;;;;;2336:25:50;:10;:25;2332:99;;4651:48:::1;4669:17;4688:4;;4651:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;4694:4:50::1;::::0;-1:-1:-1;4651:17:50::1;::::0;-1:-1:-1;;4651:48:50:i:1;:::-;4542:164:::0;;;:::o;2332:99::-;2409:11;:9;:11::i;3435:129::-;3487:23;2350:11;:9;:11::i;:::-;-1:-1:-1;;;;;2336:25:50;:10;:25;2332:99;;3540:17:::1;:15;:17::i;:::-;3522:35;;3435:129:::0;:::o;2332:99::-;2409:11;:9;:11::i;:::-;3435:129;:::o;3769:103::-;2350:11;:9;:11::i;:::-;-1:-1:-1;;;;;2336:25:50;:10;:25;2332:99;;3843:22:::1;3856:8;3843:12;:22::i;2879:96::-:0;2922:14;2350:11;:9;:11::i;:::-;-1:-1:-1;;;;;2336:25:50;:10;:25;2332:99;;2957:11:::1;:9;:11::i;4981:207::-:0;5066:11;:9;:11::i;:::-;-1:-1:-1;;;;;5052:25:50;:10;:25;5044:104;;;;-1:-1:-1;;;5044:104:50;;;;;;;:::i;:::-;;;;;;;;1240:140:45;1307:12;1338:35;:33;:35::i;953:895:47:-;1291:14;1288:1;1285;1272:34;1505:1;1502;1486:14;1483:1;1467:14;1460:5;1447:60;1581:16;1578:1;1575;1560:38;1619:6;1686:66;;;;1801:16;1798:1;1791:27;1686:66;1721:16;1718:1;1711:27;4113:130:46;4165:7;3847:66;4191:39;:45;-1:-1:-1;;;;;4191:45:46;;4113:130;-1:-1:-1;4113:130:46:o;2188:295::-;2326:29;2337:17;2326:10;:29::i;:::-;2383:1;2369:4;:11;:15;:28;;;;2388:9;2369:28;2365:112;;;2413:53;2442:17;2461:4;2413:28;:53::i;:::-;;2188:295;;;:::o;4637:135::-;4701:35;4714:11;:9;:11::i;:::-;4727:8;4701:35;;;;;;;:::i;:::-;;;;;;;;4746:19;4756:8;4746:9;:19::i;1306:140::-;1359:7;1035:66;1385:48;1599:147:53;1902:152:46;1968:37;1987:17;1968:18;:37::i;:::-;2020:27;;-1:-1:-1;;;;;2020:27:46;;;;;;;;1902:152;:::o;6575:198:51:-;6658:12;6689:77;6710:6;6718:4;6689:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6682:84;;6575:198;;;;;:::o;4325:201:46:-;-1:-1:-1;;;;;4388:22:46;;4380:73;;;;-1:-1:-1;;;4380:73:46;;;;;;;:::i;:::-;4511:8;3847:66;4463:39;:56;;-1:-1:-1;;;;;;4463:56:46;-1:-1:-1;;;;;4463:56:46;;;;;;;;;;-1:-1:-1;4325:201:46:o;1537:259::-;-1:-1:-1;;;;;1470:19:51;;;1610:95:46;;;;-1:-1:-1;;;1610:95:46;;;;;;;:::i;:::-;1772:17;1035:66;1715:48;1599:147:53;6959:387:51;7100:12;-1:-1:-1;;;;;1470:19:51;;;7124:69;;;;-1:-1:-1;;;7124:69:51;;;;;;;:::i;:::-;7205:12;7219:23;7246:6;-1:-1:-1;;;;;7246:19:51;7266:4;7246:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7204:67;;;;7288:51;7305:7;7314:10;7326:12;7288:16;:51::i;:::-;7281:58;;;;6959:387;;;;;;:::o;7566:692::-;7712:12;7740:7;7736:516;;;-1:-1:-1;7770:10:51;7763:17;;7736:516;7881:17;;:21;7877:365;;8075:10;8069:17;8135:15;8122:10;8118:2;8114:19;8107:44;7877:365;8214:12;8207:20;;-1:-1:-1;;;8207:20:51;;;;;;;;:::i;466:96:55:-;503:7;-1:-1:-1;;;;;400:54:55;;532:24;334:126;568:122;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;696:139;767:20;;796:33;767:20;796:33;:::i;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;197:1;194;187:12;955:79;1075:1;1100:53;1145:7;1125:9;1100:53;:::i;:::-;1090:63;841:329;-1:-1:-1;;;;841:329:55:o;1558:552::-;1615:8;1625:6;1675:3;1668:4;1660:6;1656:17;1652:27;1642:122;;1683:79;1285:1;1282;1275:12;1683:79;-1:-1:-1;1783:20:55;;1826:18;1815:30;;1812:117;;;1848:79;1408:1;1405;1398:12;1848:79;1962:4;1954:6;1950:17;1938:29;;2016:3;2008:4;2000:6;1996:17;1986:8;1982:32;1979:41;1976:128;;;2023:79;1531:1;1528;1521:12;2023:79;1558:552;;;;;:::o;2116:672::-;2195:6;2203;2211;2260:2;2248:9;2239:7;2235:23;2231:32;2228:119;;;2266:79;197:1;194;187:12;2266:79;2386:1;2411:53;2456:7;2436:9;2411:53;:::i;:::-;2401:63;;2357:117;2541:2;2530:9;2526:18;2513:32;2572:18;2564:6;2561:30;2558:117;;;2594:79;320:1;317;310:12;2594:79;2707:64;2763:7;2754:6;2743:9;2739:22;2707:64;:::i;:::-;2689:82;;;;2484:297;2116:672;;;;;:::o;2794:118::-;2881:24;2899:5;2881:24;:::i;:::-;2876:3;2869:37;2794:118;;:::o;2918:222::-;3049:2;3034:18;;3062:71;3038:9;3106:6;3062:71;:::i;3989:419::-;4193:2;4206:47;;;4178:18;;4270:131;4178:18;3844:2;3252:19;;3461:34;3304:4;3295:14;;3438:58;3530:34;3513:15;;;3506:59;-1:-1:-1;;;3582:15:55;;;3575:29;3965:12;;;3617:366;4414:332;4573:2;4558:18;;4586:71;4562:9;4630:6;4586:71;:::i;:::-;4667:72;4735:2;4724:9;4720:18;4711:6;4667:72;:::i;4983:366::-;5210:2;3252:19;;5125:3;3304:4;3295:14;;4892:34;4869:58;;-1:-1:-1;;;4956:2:55;4944:15;;4937:33;5139:74;-1:-1:-1;5222:93:55;-1:-1:-1;5340:2:55;5331:12;;4983:366::o;5355:419::-;5559:2;5572:47;;;5544:18;;5636:131;5544:18;5636:131;:::i;6018:366::-;6245:2;3252:19;;6160:3;3304:4;3295:14;;5920:34;5897:58;;-1:-1:-1;;;5984:2:55;5972:15;;5965:40;6174:74;-1:-1:-1;6257:93:55;5780:232;6390:419;6594:2;6607:47;;;6579:18;;6671:131;6579:18;6671:131;:::i;7046:366::-;7273:2;3252:19;;7188:3;3304:4;3295:14;;6955:34;6932:58;;-1:-1:-1;;;7019:2:55;7007:15;;7000:33;7202:74;-1:-1:-1;7285:93:55;6815:225;7418:419;7622:2;7635:47;;;7607:18;;7699:131;7607:18;7699:131;:::i;8100:139::-;8189:6;8184:3;8179;8173:23;-1:-1:-1;8230:1:55;8212:16;;8205:27;8100:139::o;8245:386::-;8349:3;8377:38;8409:5;7922:12;;7843:98;8377:38;8528:65;8586:6;8581:3;8574:4;8567:5;8563:16;8528:65;:::i;:::-;8609:16;;;;;8245:386;-1:-1:-1;;8245:386:55:o;8637:271::-;8767:3;8789:93;8878:3;8869:6;8789:93;:::i;9127:377::-;9215:3;9243:39;9276:5;7922:12;;7843:98;9243:39;3252:19;;;3304:4;3295:14;;9291:78;;9378:65;9436:6;9431:3;9424:4;9417:5;9413:16;9378:65;:::i;:::-;9111:2;9091:14;-1:-1:-1;;9087:28:55;9459:39;;;;;;-1:-1:-1;;9127:377:55:o;9510:313::-;9661:2;9674:47;;;9646:18;;9738:78;9646:18;9802:6;9738:78;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"446000","executionCost":"infinite","totalCost":"infinite"},"external":{"":"infinite","admin()":"infinite","changeAdmin(address)":"infinite","implementation()":"infinite","upgradeTo(address)":"infinite","upgradeToAndCall(address,bytes)":"infinite"},"internal":{"_admin()":"infinite","_beforeFallback()":"infinite"}},"methodIdentifiers":{"admin()":"f851a440","changeAdmin(address)":"8f283970","implementation()":"5c60da1b","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"changeAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \\\"admin cannot fallback to proxy target\\\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is upgraded.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"admin()\":{\"details\":\"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\"},\"changeAdmin(address)\":{\"details\":\"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.\"},\"constructor\":{\"details\":\"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\"},\"implementation()\":{\"details\":\"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\"},\"upgradeTo(address)\":{\"details\":\"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\"},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol\":\"TransparentUpgradeableProxy\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"hardhat-deploy/solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n    /**\\n     * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n     *\\n     * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n     * function call, and allows initializating the storage of the proxy like a Solidity constructor.\\n     */\\n    constructor(address _logic, bytes memory _data) payable {\\n        assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\\\"eip1967.proxy.implementation\\\")) - 1));\\n        _upgradeToAndCall(_logic, _data, false);\\n    }\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function _implementation() internal view virtual override returns (address impl) {\\n        return ERC1967Upgrade._getImplementation();\\n    }\\n}\\n\",\"keccak256\":\"0x6309f9f39dc6f4f45a24f296543867aa358e32946cd6b2874627a996d606b3a0\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n    // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n    bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function _getImplementation() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n        StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeTo(address newImplementation) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCall(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _upgradeTo(newImplementation);\\n        if (data.length > 0 || forceCall) {\\n            Address.functionDelegateCall(newImplementation, data);\\n        }\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        // Upgrades from old implementations will perform a rollback test. This test requires the new\\n        // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n        // this special case will break upgrade paths from old UUPS implementation to new ones.\\n        if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n            _setImplementation(newImplementation);\\n        } else {\\n            try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n                require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n            } catch {\\n                revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n            }\\n            _upgradeToAndCall(newImplementation, data, forceCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Returns the current admin.\\n     */\\n    function _getAdmin() internal view virtual returns (address) {\\n        return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n        StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {AdminChanged} event.\\n     */\\n    function _changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(_getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n     */\\n    bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Emitted when the beacon is upgraded.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function _getBeacon() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n        require(Address.isContract(IBeacon(newBeacon).implementation()), \\\"ERC1967: beacon implementation is not a contract\\\");\\n        StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n    }\\n\\n    /**\\n     * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n     * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n     *\\n     * Emits a {BeaconUpgraded} event.\\n     */\\n    function _upgradeBeaconToAndCall(\\n        address newBeacon,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n        if (data.length > 0 || forceCall) {\\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x17668652127feebed0ce8d9431ef95ccc8c4292f03e3b8cf06c6ca16af396633\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n    /**\\n     * @dev Delegates the current call to `implementation`.\\n     *\\n     * This function does not return to its internal call site, it will return directly to the external caller.\\n     */\\n    function _delegate(address implementation) internal virtual {\\n        assembly {\\n            // Copy msg.data. We take full control of memory in this inline assembly\\n            // block because it will not return to Solidity code. We overwrite the\\n            // Solidity scratch pad at memory position 0.\\n            calldatacopy(0, 0, calldatasize())\\n\\n            // Call the implementation.\\n            // out and outsize are 0 because we don't know the size yet.\\n            let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n            // Copy the returned data.\\n            returndatacopy(0, 0, returndatasize())\\n\\n            switch result\\n            // delegatecall returns 0 on error.\\n            case 0 {\\n                revert(0, returndatasize())\\n            }\\n            default {\\n                return(0, returndatasize())\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\\n     * and {_fallback} should delegate.\\n     */\\n    function _implementation() internal view virtual returns (address);\\n\\n    /**\\n     * @dev Delegates the current call to the address returned by `_implementation()`.\\n     *\\n     * This function does not return to its internall call site, it will return directly to the external caller.\\n     */\\n    function _fallback() internal virtual {\\n        _beforeFallback();\\n        _delegate(_implementation());\\n    }\\n\\n    /**\\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n     * function in the contract matches the call data.\\n     */\\n    fallback() external payable virtual {\\n        _fallback();\\n    }\\n\\n    /**\\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n     * is empty.\\n     */\\n    receive() external payable virtual {\\n        _fallback();\\n    }\\n\\n    /**\\n     * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n     * call, or as part of the Solidity `fallback` or `receive` functions.\\n     *\\n     * If overriden should call `super._beforeFallback()`.\\n     */\\n    function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xd5d1fd16e9faff7fcb3a52e02a8d49156f42a38a03f07b5f1810c21c2149a8ab\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {BeaconProxy} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../ERC1967/ERC1967Proxy.sol\\\";\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable by an admin.\\n *\\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n *\\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches one of the admin functions exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\\n * \\\"admin cannot fallback to proxy target\\\".\\n *\\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\\n * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\\n * to sudden errors when trying to call a function from the proxy implementation.\\n *\\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\\n */\\ncontract TransparentUpgradeableProxy is ERC1967Proxy {\\n    /**\\n     * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\\n     * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\\n     */\\n    constructor(\\n        address _logic,\\n        address admin_,\\n        bytes memory _data\\n    ) payable ERC1967Proxy(_logic, _data) {\\n        assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\\\"eip1967.proxy.admin\\\")) - 1));\\n        _changeAdmin(admin_);\\n    }\\n\\n    /**\\n     * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\\n     */\\n    modifier ifAdmin() {\\n        if (msg.sender == _getAdmin()) {\\n            _;\\n        } else {\\n            _fallback();\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the current admin.\\n     *\\n     * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\\n     *\\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n     * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n     */\\n    function admin() external ifAdmin returns (address admin_) {\\n        admin_ = _getAdmin();\\n    }\\n\\n    /**\\n     * @dev Returns the current implementation.\\n     *\\n     * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\\n     *\\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n     * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n     * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n     */\\n    function implementation() external ifAdmin returns (address implementation_) {\\n        implementation_ = _implementation();\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {AdminChanged} event.\\n     *\\n     * NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.\\n     */\\n    function changeAdmin(address newAdmin) external virtual ifAdmin {\\n        _changeAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy.\\n     *\\n     * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\\n     */\\n    function upgradeTo(address newImplementation) external ifAdmin {\\n        _upgradeToAndCall(newImplementation, bytes(\\\"\\\"), false);\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\\n     * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\\n     * proxied contract.\\n     *\\n     * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\\n        _upgradeToAndCall(newImplementation, data, true);\\n    }\\n\\n    /**\\n     * @dev Returns the current admin.\\n     */\\n    function _admin() internal view virtual returns (address) {\\n        return _getAdmin();\\n    }\\n\\n    /**\\n     * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\\n     */\\n    function _beforeFallback() internal virtual override {\\n        require(msg.sender != _getAdmin(), \\\"TransparentUpgradeableProxy: admin cannot fallback to proxy target\\\");\\n        super._beforeFallback();\\n    }\\n}\\n\",\"keccak256\":\"0x140055a64cf579d622e04f5a198595832bf2cb193cd0005f4f2d4d61ca906253\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (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        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        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        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        assembly {\\n            r.slot := slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"hardhat-deploy/solc_0.8/openzeppelin/utils/Address.sol":{"Address":{"abi":[],"devdoc":{"details":"Collection of functions related to the address type","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220414851dffa7a31ba5fb5b28494ee11be8fd51ba5824a139c2877a127684d39db64736f6c634300081c0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 COINBASE BASEFEE MLOAD 0xDF STATICCALL PUSH27 0x31BA5FB5B28494EE11BE8FD51BA5824A139C2877A127684D39DB64 PUSH20 0x6F6C634300081C00330000000000000000000000 ","sourceMap":"199:8061:51:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;199:8061:51;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220414851dffa7a31ba5fb5b28494ee11be8fd51ba5824a139c2877a127684d39db64736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 COINBASE BASEFEE MLOAD 0xDF STATICCALL PUSH27 0x31BA5FB5B28494EE11BE8FD51BA5824A139C2877A127684D39DB64 PUSH20 0x6F6C634300081C00330000000000000000000000 ","sourceMap":"199:8061:51:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17000","executionCost":"96","totalCost":"17096"},"internal":{"functionCall(address,bytes memory)":"infinite","functionCall(address,bytes memory,string memory)":"infinite","functionCallWithValue(address,bytes memory,uint256)":"infinite","functionCallWithValue(address,bytes memory,uint256,string memory)":"infinite","functionDelegateCall(address,bytes memory)":"infinite","functionDelegateCall(address,bytes memory,string memory)":"infinite","functionStaticCall(address,bytes memory)":"infinite","functionStaticCall(address,bytes memory,string memory)":"infinite","isContract(address)":"infinite","sendValue(address payable,uint256)":"infinite","verifyCallResult(bool,bytes memory,string memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"hardhat-deploy/solc_0.8/openzeppelin/utils/Address.sol\":\"Address\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"hardhat-deploy/solc_0.8/openzeppelin/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"hardhat-deploy/solc_0.8/openzeppelin/utils/Context.sol":{"Context":{"abi":[],"devdoc":{"details":"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"hardhat-deploy/solc_0.8/openzeppelin/utils/Context.sol\":\"Context\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"hardhat-deploy/solc_0.8/openzeppelin/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\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"hardhat-deploy/solc_0.8/openzeppelin/utils/StorageSlot.sol":{"StorageSlot":{"abi":[],"devdoc":{"details":"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`._","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212202911b85fea06b1908bc5aec91d9b781ea7a50a770695a85f05fa8462a305461964736f6c634300081c0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x29 GT 0xB8 PUSH0 0xEA MOD 0xB1 SWAP1 DUP12 0xC5 0xAE 0xC9 SAR SWAP12 PUSH25 0x1EA7A50A770695A85F05FA8462A305461964736F6C63430008 SHR STOP CALLER ","sourceMap":"1264:1219:53:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1264:1219:53;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212202911b85fea06b1908bc5aec91d9b781ea7a50a770695a85f05fa8462a305461964736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x29 GT 0xB8 PUSH0 0xEA MOD 0xB1 SWAP1 DUP12 0xC5 0xAE 0xC9 SAR SWAP12 PUSH25 0x1EA7A50A770695A85F05FA8462A305461964736F6C63430008 SHR STOP CALLER ","sourceMap":"1264:1219:53:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17000","executionCost":"96","totalCost":"17096"},"internal":{"getAddressSlot(bytes32)":"infinite","getBooleanSlot(bytes32)":"infinite","getBytes32Slot(bytes32)":"infinite","getUint256Slot(bytes32)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"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`._\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"hardhat-deploy/solc_0.8/openzeppelin/utils/StorageSlot.sol\":\"StorageSlot\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"hardhat-deploy/solc_0.8/openzeppelin/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (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        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        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        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        assembly {\\n            r.slot := slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol":{"OptimizedTransparentUpgradeableProxy":{"abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"admin_","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"admin_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"details":"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \"admin cannot fallback to proxy target\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.","events":{"AdminChanged(address,address)":{"details":"Emitted when the admin account has changed."},"BeaconUpgraded(address)":{"details":"Emitted when the beacon is upgraded."},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{"admin()":{"details":"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"constructor":{"details":"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"implementation()":{"details":"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"upgradeTo(address)":{"details":"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"upgradeToAndCall(address,bytes)":{"details":"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_8484":{"entryPoint":null,"id":8484,"parameterSlots":2,"returnSlots":0},"@_9619":{"entryPoint":null,"id":9619,"parameterSlots":3,"returnSlots":0},"@_setImplementation_8553":{"entryPoint":439,"id":8553,"parameterSlots":1,"returnSlots":0},"@_upgradeToAndCall_8598":{"entryPoint":287,"id":8598,"parameterSlots":3,"returnSlots":0},"@_upgradeTo_8568":{"entryPoint":330,"id":8568,"parameterSlots":1,"returnSlots":0},"@functionDelegateCall_9414":{"entryPoint":393,"id":9414,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_9449":{"entryPoint":533,"id":9449,"parameterSlots":3,"returnSlots":1},"@getAddressSlot_9529":{"entryPoint":null,"id":9529,"parameterSlots":1,"returnSlots":1},"@isContract_9204":{"entryPoint":null,"id":9204,"parameterSlots":1,"returnSlots":1},"@verifyCallResult_9480":{"entryPoint":690,"id":9480,"parameterSlots":3,"returnSlots":1},"abi_decode_available_length_t_bytes_memory_ptr_fromMemory":{"entryPoint":939,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_address_fromMemory":{"entryPoint":785,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes_memory_ptr_fromMemory":{"entryPoint":1002,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_addresst_bytes_memory_ptr_fromMemory":{"entryPoint":1044,"id":null,"parameterSlots":2,"returnSlots":3},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":1204,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":1420,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack":{"entryPoint":1464,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65_to_t_string_memory_ptr_fromStack":{"entryPoint":1246,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520_to_t_string_memory_ptr_fromStack":{"entryPoint":1338,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":1453,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed":{"entryPoint":1219,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":1513,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":1322,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":1404,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory":{"entryPoint":860,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_bytes_memory_ptr":{"entryPoint":887,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_bytes_memory_ptr":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_string_memory_ptr":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":1165,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_address":{"entryPoint":747,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":928,"id":null,"parameterSlots":3,"returnSlots":0},"finalize_allocation":{"entryPoint":816,"id":null,"parameterSlots":2,"returnSlots":0},"panic_error_0x01":{"entryPoint":1184,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x11":{"entryPoint":1145,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":796,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"store_literal_in_memory_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_address":{"entryPoint":763,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:9000:55","nodeType":"YulBlock","src":"0:9000:55","statements":[{"body":{"nativeSrc":"47:35:55","nodeType":"YulBlock","src":"47:35:55","statements":[{"nativeSrc":"57:19:55","nodeType":"YulAssignment","src":"57:19:55","value":{"arguments":[{"kind":"number","nativeSrc":"73:2:55","nodeType":"YulLiteral","src":"73:2:55","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"67:5:55","nodeType":"YulIdentifier","src":"67:5:55"},"nativeSrc":"67:9:55","nodeType":"YulFunctionCall","src":"67:9:55"},"variableNames":[{"name":"memPtr","nativeSrc":"57:6:55","nodeType":"YulIdentifier","src":"57:6:55"}]}]},"name":"allocate_unbounded","nativeSrc":"7:75:55","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"40:6:55","nodeType":"YulTypedName","src":"40:6:55","type":""}],"src":"7:75:55"},{"body":{"nativeSrc":"177:28:55","nodeType":"YulBlock","src":"177:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"194:1:55","nodeType":"YulLiteral","src":"194:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"197:1:55","nodeType":"YulLiteral","src":"197:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"187:6:55","nodeType":"YulIdentifier","src":"187:6:55"},"nativeSrc":"187:12:55","nodeType":"YulFunctionCall","src":"187:12:55"},"nativeSrc":"187:12:55","nodeType":"YulExpressionStatement","src":"187:12:55"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"88:117:55","nodeType":"YulFunctionDefinition","src":"88:117:55"},{"body":{"nativeSrc":"300:28:55","nodeType":"YulBlock","src":"300:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"317:1:55","nodeType":"YulLiteral","src":"317:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"320:1:55","nodeType":"YulLiteral","src":"320:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"310:6:55","nodeType":"YulIdentifier","src":"310:6:55"},"nativeSrc":"310:12:55","nodeType":"YulFunctionCall","src":"310:12:55"},"nativeSrc":"310:12:55","nodeType":"YulExpressionStatement","src":"310:12:55"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"211:117:55","nodeType":"YulFunctionDefinition","src":"211:117:55"},{"body":{"nativeSrc":"379:81:55","nodeType":"YulBlock","src":"379:81:55","statements":[{"nativeSrc":"389:65:55","nodeType":"YulAssignment","src":"389:65:55","value":{"arguments":[{"name":"value","nativeSrc":"404:5:55","nodeType":"YulIdentifier","src":"404:5:55"},{"kind":"number","nativeSrc":"411:42:55","nodeType":"YulLiteral","src":"411:42:55","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"400:3:55","nodeType":"YulIdentifier","src":"400:3:55"},"nativeSrc":"400:54:55","nodeType":"YulFunctionCall","src":"400:54:55"},"variableNames":[{"name":"cleaned","nativeSrc":"389:7:55","nodeType":"YulIdentifier","src":"389:7:55"}]}]},"name":"cleanup_t_uint160","nativeSrc":"334:126:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"361:5:55","nodeType":"YulTypedName","src":"361:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"371:7:55","nodeType":"YulTypedName","src":"371:7:55","type":""}],"src":"334:126:55"},{"body":{"nativeSrc":"511:51:55","nodeType":"YulBlock","src":"511:51:55","statements":[{"nativeSrc":"521:35:55","nodeType":"YulAssignment","src":"521:35:55","value":{"arguments":[{"name":"value","nativeSrc":"550:5:55","nodeType":"YulIdentifier","src":"550:5:55"}],"functionName":{"name":"cleanup_t_uint160","nativeSrc":"532:17:55","nodeType":"YulIdentifier","src":"532:17:55"},"nativeSrc":"532:24:55","nodeType":"YulFunctionCall","src":"532:24:55"},"variableNames":[{"name":"cleaned","nativeSrc":"521:7:55","nodeType":"YulIdentifier","src":"521:7:55"}]}]},"name":"cleanup_t_address","nativeSrc":"466:96:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"493:5:55","nodeType":"YulTypedName","src":"493:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"503:7:55","nodeType":"YulTypedName","src":"503:7:55","type":""}],"src":"466:96:55"},{"body":{"nativeSrc":"611:79:55","nodeType":"YulBlock","src":"611:79:55","statements":[{"body":{"nativeSrc":"668:16:55","nodeType":"YulBlock","src":"668:16:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"677:1:55","nodeType":"YulLiteral","src":"677:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"680:1:55","nodeType":"YulLiteral","src":"680:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"670:6:55","nodeType":"YulIdentifier","src":"670:6:55"},"nativeSrc":"670:12:55","nodeType":"YulFunctionCall","src":"670:12:55"},"nativeSrc":"670:12:55","nodeType":"YulExpressionStatement","src":"670:12:55"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"634:5:55","nodeType":"YulIdentifier","src":"634:5:55"},{"arguments":[{"name":"value","nativeSrc":"659:5:55","nodeType":"YulIdentifier","src":"659:5:55"}],"functionName":{"name":"cleanup_t_address","nativeSrc":"641:17:55","nodeType":"YulIdentifier","src":"641:17:55"},"nativeSrc":"641:24:55","nodeType":"YulFunctionCall","src":"641:24:55"}],"functionName":{"name":"eq","nativeSrc":"631:2:55","nodeType":"YulIdentifier","src":"631:2:55"},"nativeSrc":"631:35:55","nodeType":"YulFunctionCall","src":"631:35:55"}],"functionName":{"name":"iszero","nativeSrc":"624:6:55","nodeType":"YulIdentifier","src":"624:6:55"},"nativeSrc":"624:43:55","nodeType":"YulFunctionCall","src":"624:43:55"},"nativeSrc":"621:63:55","nodeType":"YulIf","src":"621:63:55"}]},"name":"validator_revert_t_address","nativeSrc":"568:122:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"604:5:55","nodeType":"YulTypedName","src":"604:5:55","type":""}],"src":"568:122:55"},{"body":{"nativeSrc":"759:80:55","nodeType":"YulBlock","src":"759:80:55","statements":[{"nativeSrc":"769:22:55","nodeType":"YulAssignment","src":"769:22:55","value":{"arguments":[{"name":"offset","nativeSrc":"784:6:55","nodeType":"YulIdentifier","src":"784:6:55"}],"functionName":{"name":"mload","nativeSrc":"778:5:55","nodeType":"YulIdentifier","src":"778:5:55"},"nativeSrc":"778:13:55","nodeType":"YulFunctionCall","src":"778:13:55"},"variableNames":[{"name":"value","nativeSrc":"769:5:55","nodeType":"YulIdentifier","src":"769:5:55"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"827:5:55","nodeType":"YulIdentifier","src":"827:5:55"}],"functionName":{"name":"validator_revert_t_address","nativeSrc":"800:26:55","nodeType":"YulIdentifier","src":"800:26:55"},"nativeSrc":"800:33:55","nodeType":"YulFunctionCall","src":"800:33:55"},"nativeSrc":"800:33:55","nodeType":"YulExpressionStatement","src":"800:33:55"}]},"name":"abi_decode_t_address_fromMemory","nativeSrc":"696:143:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"737:6:55","nodeType":"YulTypedName","src":"737:6:55","type":""},{"name":"end","nativeSrc":"745:3:55","nodeType":"YulTypedName","src":"745:3:55","type":""}],"returnVariables":[{"name":"value","nativeSrc":"753:5:55","nodeType":"YulTypedName","src":"753:5:55","type":""}],"src":"696:143:55"},{"body":{"nativeSrc":"934:28:55","nodeType":"YulBlock","src":"934:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"951:1:55","nodeType":"YulLiteral","src":"951:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"954:1:55","nodeType":"YulLiteral","src":"954:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"944:6:55","nodeType":"YulIdentifier","src":"944:6:55"},"nativeSrc":"944:12:55","nodeType":"YulFunctionCall","src":"944:12:55"},"nativeSrc":"944:12:55","nodeType":"YulExpressionStatement","src":"944:12:55"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nativeSrc":"845:117:55","nodeType":"YulFunctionDefinition","src":"845:117:55"},{"body":{"nativeSrc":"1057:28:55","nodeType":"YulBlock","src":"1057:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1074:1:55","nodeType":"YulLiteral","src":"1074:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"1077:1:55","nodeType":"YulLiteral","src":"1077:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1067:6:55","nodeType":"YulIdentifier","src":"1067:6:55"},"nativeSrc":"1067:12:55","nodeType":"YulFunctionCall","src":"1067:12:55"},"nativeSrc":"1067:12:55","nodeType":"YulExpressionStatement","src":"1067:12:55"}]},"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nativeSrc":"968:117:55","nodeType":"YulFunctionDefinition","src":"968:117:55"},{"body":{"nativeSrc":"1139:54:55","nodeType":"YulBlock","src":"1139:54:55","statements":[{"nativeSrc":"1149:38:55","nodeType":"YulAssignment","src":"1149:38:55","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1167:5:55","nodeType":"YulIdentifier","src":"1167:5:55"},{"kind":"number","nativeSrc":"1174:2:55","nodeType":"YulLiteral","src":"1174:2:55","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"1163:3:55","nodeType":"YulIdentifier","src":"1163:3:55"},"nativeSrc":"1163:14:55","nodeType":"YulFunctionCall","src":"1163:14:55"},{"arguments":[{"kind":"number","nativeSrc":"1183:2:55","nodeType":"YulLiteral","src":"1183:2:55","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"1179:3:55","nodeType":"YulIdentifier","src":"1179:3:55"},"nativeSrc":"1179:7:55","nodeType":"YulFunctionCall","src":"1179:7:55"}],"functionName":{"name":"and","nativeSrc":"1159:3:55","nodeType":"YulIdentifier","src":"1159:3:55"},"nativeSrc":"1159:28:55","nodeType":"YulFunctionCall","src":"1159:28:55"},"variableNames":[{"name":"result","nativeSrc":"1149:6:55","nodeType":"YulIdentifier","src":"1149:6:55"}]}]},"name":"round_up_to_mul_of_32","nativeSrc":"1091:102:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1122:5:55","nodeType":"YulTypedName","src":"1122:5:55","type":""}],"returnVariables":[{"name":"result","nativeSrc":"1132:6:55","nodeType":"YulTypedName","src":"1132:6:55","type":""}],"src":"1091:102:55"},{"body":{"nativeSrc":"1227:152:55","nodeType":"YulBlock","src":"1227:152:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1244:1:55","nodeType":"YulLiteral","src":"1244:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"1247:77:55","nodeType":"YulLiteral","src":"1247:77:55","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"1237:6:55","nodeType":"YulIdentifier","src":"1237:6:55"},"nativeSrc":"1237:88:55","nodeType":"YulFunctionCall","src":"1237:88:55"},"nativeSrc":"1237:88:55","nodeType":"YulExpressionStatement","src":"1237:88:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1341:1:55","nodeType":"YulLiteral","src":"1341:1:55","type":"","value":"4"},{"kind":"number","nativeSrc":"1344:4:55","nodeType":"YulLiteral","src":"1344:4:55","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"1334:6:55","nodeType":"YulIdentifier","src":"1334:6:55"},"nativeSrc":"1334:15:55","nodeType":"YulFunctionCall","src":"1334:15:55"},"nativeSrc":"1334:15:55","nodeType":"YulExpressionStatement","src":"1334:15:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1365:1:55","nodeType":"YulLiteral","src":"1365:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"1368:4:55","nodeType":"YulLiteral","src":"1368:4:55","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"1358:6:55","nodeType":"YulIdentifier","src":"1358:6:55"},"nativeSrc":"1358:15:55","nodeType":"YulFunctionCall","src":"1358:15:55"},"nativeSrc":"1358:15:55","nodeType":"YulExpressionStatement","src":"1358:15:55"}]},"name":"panic_error_0x41","nativeSrc":"1199:180:55","nodeType":"YulFunctionDefinition","src":"1199:180:55"},{"body":{"nativeSrc":"1428:238:55","nodeType":"YulBlock","src":"1428:238:55","statements":[{"nativeSrc":"1438:58:55","nodeType":"YulVariableDeclaration","src":"1438:58:55","value":{"arguments":[{"name":"memPtr","nativeSrc":"1460:6:55","nodeType":"YulIdentifier","src":"1460:6:55"},{"arguments":[{"name":"size","nativeSrc":"1490:4:55","nodeType":"YulIdentifier","src":"1490:4:55"}],"functionName":{"name":"round_up_to_mul_of_32","nativeSrc":"1468:21:55","nodeType":"YulIdentifier","src":"1468:21:55"},"nativeSrc":"1468:27:55","nodeType":"YulFunctionCall","src":"1468:27:55"}],"functionName":{"name":"add","nativeSrc":"1456:3:55","nodeType":"YulIdentifier","src":"1456:3:55"},"nativeSrc":"1456:40:55","nodeType":"YulFunctionCall","src":"1456:40:55"},"variables":[{"name":"newFreePtr","nativeSrc":"1442:10:55","nodeType":"YulTypedName","src":"1442:10:55","type":""}]},{"body":{"nativeSrc":"1607:22:55","nodeType":"YulBlock","src":"1607:22:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"1609:16:55","nodeType":"YulIdentifier","src":"1609:16:55"},"nativeSrc":"1609:18:55","nodeType":"YulFunctionCall","src":"1609:18:55"},"nativeSrc":"1609:18:55","nodeType":"YulExpressionStatement","src":"1609:18:55"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"1550:10:55","nodeType":"YulIdentifier","src":"1550:10:55"},{"kind":"number","nativeSrc":"1562:18:55","nodeType":"YulLiteral","src":"1562:18:55","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1547:2:55","nodeType":"YulIdentifier","src":"1547:2:55"},"nativeSrc":"1547:34:55","nodeType":"YulFunctionCall","src":"1547:34:55"},{"arguments":[{"name":"newFreePtr","nativeSrc":"1586:10:55","nodeType":"YulIdentifier","src":"1586:10:55"},{"name":"memPtr","nativeSrc":"1598:6:55","nodeType":"YulIdentifier","src":"1598:6:55"}],"functionName":{"name":"lt","nativeSrc":"1583:2:55","nodeType":"YulIdentifier","src":"1583:2:55"},"nativeSrc":"1583:22:55","nodeType":"YulFunctionCall","src":"1583:22:55"}],"functionName":{"name":"or","nativeSrc":"1544:2:55","nodeType":"YulIdentifier","src":"1544:2:55"},"nativeSrc":"1544:62:55","nodeType":"YulFunctionCall","src":"1544:62:55"},"nativeSrc":"1541:88:55","nodeType":"YulIf","src":"1541:88:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1645:2:55","nodeType":"YulLiteral","src":"1645:2:55","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"1649:10:55","nodeType":"YulIdentifier","src":"1649:10:55"}],"functionName":{"name":"mstore","nativeSrc":"1638:6:55","nodeType":"YulIdentifier","src":"1638:6:55"},"nativeSrc":"1638:22:55","nodeType":"YulFunctionCall","src":"1638:22:55"},"nativeSrc":"1638:22:55","nodeType":"YulExpressionStatement","src":"1638:22:55"}]},"name":"finalize_allocation","nativeSrc":"1385:281:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"1414:6:55","nodeType":"YulTypedName","src":"1414:6:55","type":""},{"name":"size","nativeSrc":"1422:4:55","nodeType":"YulTypedName","src":"1422:4:55","type":""}],"src":"1385:281:55"},{"body":{"nativeSrc":"1713:88:55","nodeType":"YulBlock","src":"1713:88:55","statements":[{"nativeSrc":"1723:30:55","nodeType":"YulAssignment","src":"1723:30:55","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nativeSrc":"1733:18:55","nodeType":"YulIdentifier","src":"1733:18:55"},"nativeSrc":"1733:20:55","nodeType":"YulFunctionCall","src":"1733:20:55"},"variableNames":[{"name":"memPtr","nativeSrc":"1723:6:55","nodeType":"YulIdentifier","src":"1723:6:55"}]},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"1782:6:55","nodeType":"YulIdentifier","src":"1782:6:55"},{"name":"size","nativeSrc":"1790:4:55","nodeType":"YulIdentifier","src":"1790:4:55"}],"functionName":{"name":"finalize_allocation","nativeSrc":"1762:19:55","nodeType":"YulIdentifier","src":"1762:19:55"},"nativeSrc":"1762:33:55","nodeType":"YulFunctionCall","src":"1762:33:55"},"nativeSrc":"1762:33:55","nodeType":"YulExpressionStatement","src":"1762:33:55"}]},"name":"allocate_memory","nativeSrc":"1672:129:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nativeSrc":"1697:4:55","nodeType":"YulTypedName","src":"1697:4:55","type":""}],"returnVariables":[{"name":"memPtr","nativeSrc":"1706:6:55","nodeType":"YulTypedName","src":"1706:6:55","type":""}],"src":"1672:129:55"},{"body":{"nativeSrc":"1873:241:55","nodeType":"YulBlock","src":"1873:241:55","statements":[{"body":{"nativeSrc":"1978:22:55","nodeType":"YulBlock","src":"1978:22:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"1980:16:55","nodeType":"YulIdentifier","src":"1980:16:55"},"nativeSrc":"1980:18:55","nodeType":"YulFunctionCall","src":"1980:18:55"},"nativeSrc":"1980:18:55","nodeType":"YulExpressionStatement","src":"1980:18:55"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"1950:6:55","nodeType":"YulIdentifier","src":"1950:6:55"},{"kind":"number","nativeSrc":"1958:18:55","nodeType":"YulLiteral","src":"1958:18:55","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1947:2:55","nodeType":"YulIdentifier","src":"1947:2:55"},"nativeSrc":"1947:30:55","nodeType":"YulFunctionCall","src":"1947:30:55"},"nativeSrc":"1944:56:55","nodeType":"YulIf","src":"1944:56:55"},{"nativeSrc":"2010:37:55","nodeType":"YulAssignment","src":"2010:37:55","value":{"arguments":[{"name":"length","nativeSrc":"2040:6:55","nodeType":"YulIdentifier","src":"2040:6:55"}],"functionName":{"name":"round_up_to_mul_of_32","nativeSrc":"2018:21:55","nodeType":"YulIdentifier","src":"2018:21:55"},"nativeSrc":"2018:29:55","nodeType":"YulFunctionCall","src":"2018:29:55"},"variableNames":[{"name":"size","nativeSrc":"2010:4:55","nodeType":"YulIdentifier","src":"2010:4:55"}]},{"nativeSrc":"2084:23:55","nodeType":"YulAssignment","src":"2084:23:55","value":{"arguments":[{"name":"size","nativeSrc":"2096:4:55","nodeType":"YulIdentifier","src":"2096:4:55"},{"kind":"number","nativeSrc":"2102:4:55","nodeType":"YulLiteral","src":"2102:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2092:3:55","nodeType":"YulIdentifier","src":"2092:3:55"},"nativeSrc":"2092:15:55","nodeType":"YulFunctionCall","src":"2092:15:55"},"variableNames":[{"name":"size","nativeSrc":"2084:4:55","nodeType":"YulIdentifier","src":"2084:4:55"}]}]},"name":"array_allocation_size_t_bytes_memory_ptr","nativeSrc":"1807:307:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nativeSrc":"1857:6:55","nodeType":"YulTypedName","src":"1857:6:55","type":""}],"returnVariables":[{"name":"size","nativeSrc":"1868:4:55","nodeType":"YulTypedName","src":"1868:4:55","type":""}],"src":"1807:307:55"},{"body":{"nativeSrc":"2182:77:55","nodeType":"YulBlock","src":"2182:77:55","statements":[{"expression":{"arguments":[{"name":"dst","nativeSrc":"2199:3:55","nodeType":"YulIdentifier","src":"2199:3:55"},{"name":"src","nativeSrc":"2204:3:55","nodeType":"YulIdentifier","src":"2204:3:55"},{"name":"length","nativeSrc":"2209:6:55","nodeType":"YulIdentifier","src":"2209:6:55"}],"functionName":{"name":"mcopy","nativeSrc":"2193:5:55","nodeType":"YulIdentifier","src":"2193:5:55"},"nativeSrc":"2193:23:55","nodeType":"YulFunctionCall","src":"2193:23:55"},"nativeSrc":"2193:23:55","nodeType":"YulExpressionStatement","src":"2193:23:55"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"2236:3:55","nodeType":"YulIdentifier","src":"2236:3:55"},{"name":"length","nativeSrc":"2241:6:55","nodeType":"YulIdentifier","src":"2241:6:55"}],"functionName":{"name":"add","nativeSrc":"2232:3:55","nodeType":"YulIdentifier","src":"2232:3:55"},"nativeSrc":"2232:16:55","nodeType":"YulFunctionCall","src":"2232:16:55"},{"kind":"number","nativeSrc":"2250:1:55","nodeType":"YulLiteral","src":"2250:1:55","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"2225:6:55","nodeType":"YulIdentifier","src":"2225:6:55"},"nativeSrc":"2225:27:55","nodeType":"YulFunctionCall","src":"2225:27:55"},"nativeSrc":"2225:27:55","nodeType":"YulExpressionStatement","src":"2225:27:55"}]},"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"2120:139:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nativeSrc":"2164:3:55","nodeType":"YulTypedName","src":"2164:3:55","type":""},{"name":"dst","nativeSrc":"2169:3:55","nodeType":"YulTypedName","src":"2169:3:55","type":""},{"name":"length","nativeSrc":"2174:6:55","nodeType":"YulTypedName","src":"2174:6:55","type":""}],"src":"2120:139:55"},{"body":{"nativeSrc":"2359:338:55","nodeType":"YulBlock","src":"2359:338:55","statements":[{"nativeSrc":"2369:74:55","nodeType":"YulAssignment","src":"2369:74:55","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"2435:6:55","nodeType":"YulIdentifier","src":"2435:6:55"}],"functionName":{"name":"array_allocation_size_t_bytes_memory_ptr","nativeSrc":"2394:40:55","nodeType":"YulIdentifier","src":"2394:40:55"},"nativeSrc":"2394:48:55","nodeType":"YulFunctionCall","src":"2394:48:55"}],"functionName":{"name":"allocate_memory","nativeSrc":"2378:15:55","nodeType":"YulIdentifier","src":"2378:15:55"},"nativeSrc":"2378:65:55","nodeType":"YulFunctionCall","src":"2378:65:55"},"variableNames":[{"name":"array","nativeSrc":"2369:5:55","nodeType":"YulIdentifier","src":"2369:5:55"}]},{"expression":{"arguments":[{"name":"array","nativeSrc":"2459:5:55","nodeType":"YulIdentifier","src":"2459:5:55"},{"name":"length","nativeSrc":"2466:6:55","nodeType":"YulIdentifier","src":"2466:6:55"}],"functionName":{"name":"mstore","nativeSrc":"2452:6:55","nodeType":"YulIdentifier","src":"2452:6:55"},"nativeSrc":"2452:21:55","nodeType":"YulFunctionCall","src":"2452:21:55"},"nativeSrc":"2452:21:55","nodeType":"YulExpressionStatement","src":"2452:21:55"},{"nativeSrc":"2482:27:55","nodeType":"YulVariableDeclaration","src":"2482:27:55","value":{"arguments":[{"name":"array","nativeSrc":"2497:5:55","nodeType":"YulIdentifier","src":"2497:5:55"},{"kind":"number","nativeSrc":"2504:4:55","nodeType":"YulLiteral","src":"2504:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2493:3:55","nodeType":"YulIdentifier","src":"2493:3:55"},"nativeSrc":"2493:16:55","nodeType":"YulFunctionCall","src":"2493:16:55"},"variables":[{"name":"dst","nativeSrc":"2486:3:55","nodeType":"YulTypedName","src":"2486:3:55","type":""}]},{"body":{"nativeSrc":"2547:83:55","nodeType":"YulBlock","src":"2547:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nativeSrc":"2549:77:55","nodeType":"YulIdentifier","src":"2549:77:55"},"nativeSrc":"2549:79:55","nodeType":"YulFunctionCall","src":"2549:79:55"},"nativeSrc":"2549:79:55","nodeType":"YulExpressionStatement","src":"2549:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"2528:3:55","nodeType":"YulIdentifier","src":"2528:3:55"},{"name":"length","nativeSrc":"2533:6:55","nodeType":"YulIdentifier","src":"2533:6:55"}],"functionName":{"name":"add","nativeSrc":"2524:3:55","nodeType":"YulIdentifier","src":"2524:3:55"},"nativeSrc":"2524:16:55","nodeType":"YulFunctionCall","src":"2524:16:55"},{"name":"end","nativeSrc":"2542:3:55","nodeType":"YulIdentifier","src":"2542:3:55"}],"functionName":{"name":"gt","nativeSrc":"2521:2:55","nodeType":"YulIdentifier","src":"2521:2:55"},"nativeSrc":"2521:25:55","nodeType":"YulFunctionCall","src":"2521:25:55"},"nativeSrc":"2518:112:55","nodeType":"YulIf","src":"2518:112:55"},{"expression":{"arguments":[{"name":"src","nativeSrc":"2674:3:55","nodeType":"YulIdentifier","src":"2674:3:55"},{"name":"dst","nativeSrc":"2679:3:55","nodeType":"YulIdentifier","src":"2679:3:55"},{"name":"length","nativeSrc":"2684:6:55","nodeType":"YulIdentifier","src":"2684:6:55"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"2639:34:55","nodeType":"YulIdentifier","src":"2639:34:55"},"nativeSrc":"2639:52:55","nodeType":"YulFunctionCall","src":"2639:52:55"},"nativeSrc":"2639:52:55","nodeType":"YulExpressionStatement","src":"2639:52:55"}]},"name":"abi_decode_available_length_t_bytes_memory_ptr_fromMemory","nativeSrc":"2265:432:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nativeSrc":"2332:3:55","nodeType":"YulTypedName","src":"2332:3:55","type":""},{"name":"length","nativeSrc":"2337:6:55","nodeType":"YulTypedName","src":"2337:6:55","type":""},{"name":"end","nativeSrc":"2345:3:55","nodeType":"YulTypedName","src":"2345:3:55","type":""}],"returnVariables":[{"name":"array","nativeSrc":"2353:5:55","nodeType":"YulTypedName","src":"2353:5:55","type":""}],"src":"2265:432:55"},{"body":{"nativeSrc":"2788:281:55","nodeType":"YulBlock","src":"2788:281:55","statements":[{"body":{"nativeSrc":"2837:83:55","nodeType":"YulBlock","src":"2837:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nativeSrc":"2839:77:55","nodeType":"YulIdentifier","src":"2839:77:55"},"nativeSrc":"2839:79:55","nodeType":"YulFunctionCall","src":"2839:79:55"},"nativeSrc":"2839:79:55","nodeType":"YulExpressionStatement","src":"2839:79:55"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"2816:6:55","nodeType":"YulIdentifier","src":"2816:6:55"},{"kind":"number","nativeSrc":"2824:4:55","nodeType":"YulLiteral","src":"2824:4:55","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"2812:3:55","nodeType":"YulIdentifier","src":"2812:3:55"},"nativeSrc":"2812:17:55","nodeType":"YulFunctionCall","src":"2812:17:55"},{"name":"end","nativeSrc":"2831:3:55","nodeType":"YulIdentifier","src":"2831:3:55"}],"functionName":{"name":"slt","nativeSrc":"2808:3:55","nodeType":"YulIdentifier","src":"2808:3:55"},"nativeSrc":"2808:27:55","nodeType":"YulFunctionCall","src":"2808:27:55"}],"functionName":{"name":"iszero","nativeSrc":"2801:6:55","nodeType":"YulIdentifier","src":"2801:6:55"},"nativeSrc":"2801:35:55","nodeType":"YulFunctionCall","src":"2801:35:55"},"nativeSrc":"2798:122:55","nodeType":"YulIf","src":"2798:122:55"},{"nativeSrc":"2929:27:55","nodeType":"YulVariableDeclaration","src":"2929:27:55","value":{"arguments":[{"name":"offset","nativeSrc":"2949:6:55","nodeType":"YulIdentifier","src":"2949:6:55"}],"functionName":{"name":"mload","nativeSrc":"2943:5:55","nodeType":"YulIdentifier","src":"2943:5:55"},"nativeSrc":"2943:13:55","nodeType":"YulFunctionCall","src":"2943:13:55"},"variables":[{"name":"length","nativeSrc":"2933:6:55","nodeType":"YulTypedName","src":"2933:6:55","type":""}]},{"nativeSrc":"2965:98:55","nodeType":"YulAssignment","src":"2965:98:55","value":{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"3036:6:55","nodeType":"YulIdentifier","src":"3036:6:55"},{"kind":"number","nativeSrc":"3044:4:55","nodeType":"YulLiteral","src":"3044:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3032:3:55","nodeType":"YulIdentifier","src":"3032:3:55"},"nativeSrc":"3032:17:55","nodeType":"YulFunctionCall","src":"3032:17:55"},{"name":"length","nativeSrc":"3051:6:55","nodeType":"YulIdentifier","src":"3051:6:55"},{"name":"end","nativeSrc":"3059:3:55","nodeType":"YulIdentifier","src":"3059:3:55"}],"functionName":{"name":"abi_decode_available_length_t_bytes_memory_ptr_fromMemory","nativeSrc":"2974:57:55","nodeType":"YulIdentifier","src":"2974:57:55"},"nativeSrc":"2974:89:55","nodeType":"YulFunctionCall","src":"2974:89:55"},"variableNames":[{"name":"array","nativeSrc":"2965:5:55","nodeType":"YulIdentifier","src":"2965:5:55"}]}]},"name":"abi_decode_t_bytes_memory_ptr_fromMemory","nativeSrc":"2716:353:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"2766:6:55","nodeType":"YulTypedName","src":"2766:6:55","type":""},{"name":"end","nativeSrc":"2774:3:55","nodeType":"YulTypedName","src":"2774:3:55","type":""}],"returnVariables":[{"name":"array","nativeSrc":"2782:5:55","nodeType":"YulTypedName","src":"2782:5:55","type":""}],"src":"2716:353:55"},{"body":{"nativeSrc":"3195:714:55","nodeType":"YulBlock","src":"3195:714:55","statements":[{"body":{"nativeSrc":"3241:83:55","nodeType":"YulBlock","src":"3241:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"3243:77:55","nodeType":"YulIdentifier","src":"3243:77:55"},"nativeSrc":"3243:79:55","nodeType":"YulFunctionCall","src":"3243:79:55"},"nativeSrc":"3243:79:55","nodeType":"YulExpressionStatement","src":"3243:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3216:7:55","nodeType":"YulIdentifier","src":"3216:7:55"},{"name":"headStart","nativeSrc":"3225:9:55","nodeType":"YulIdentifier","src":"3225:9:55"}],"functionName":{"name":"sub","nativeSrc":"3212:3:55","nodeType":"YulIdentifier","src":"3212:3:55"},"nativeSrc":"3212:23:55","nodeType":"YulFunctionCall","src":"3212:23:55"},{"kind":"number","nativeSrc":"3237:2:55","nodeType":"YulLiteral","src":"3237:2:55","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"3208:3:55","nodeType":"YulIdentifier","src":"3208:3:55"},"nativeSrc":"3208:32:55","nodeType":"YulFunctionCall","src":"3208:32:55"},"nativeSrc":"3205:119:55","nodeType":"YulIf","src":"3205:119:55"},{"nativeSrc":"3334:128:55","nodeType":"YulBlock","src":"3334:128:55","statements":[{"nativeSrc":"3349:15:55","nodeType":"YulVariableDeclaration","src":"3349:15:55","value":{"kind":"number","nativeSrc":"3363:1:55","nodeType":"YulLiteral","src":"3363:1:55","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"3353:6:55","nodeType":"YulTypedName","src":"3353:6:55","type":""}]},{"nativeSrc":"3378:74:55","nodeType":"YulAssignment","src":"3378:74:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3424:9:55","nodeType":"YulIdentifier","src":"3424:9:55"},{"name":"offset","nativeSrc":"3435:6:55","nodeType":"YulIdentifier","src":"3435:6:55"}],"functionName":{"name":"add","nativeSrc":"3420:3:55","nodeType":"YulIdentifier","src":"3420:3:55"},"nativeSrc":"3420:22:55","nodeType":"YulFunctionCall","src":"3420:22:55"},{"name":"dataEnd","nativeSrc":"3444:7:55","nodeType":"YulIdentifier","src":"3444:7:55"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nativeSrc":"3388:31:55","nodeType":"YulIdentifier","src":"3388:31:55"},"nativeSrc":"3388:64:55","nodeType":"YulFunctionCall","src":"3388:64:55"},"variableNames":[{"name":"value0","nativeSrc":"3378:6:55","nodeType":"YulIdentifier","src":"3378:6:55"}]}]},{"nativeSrc":"3472:129:55","nodeType":"YulBlock","src":"3472:129:55","statements":[{"nativeSrc":"3487:16:55","nodeType":"YulVariableDeclaration","src":"3487:16:55","value":{"kind":"number","nativeSrc":"3501:2:55","nodeType":"YulLiteral","src":"3501:2:55","type":"","value":"32"},"variables":[{"name":"offset","nativeSrc":"3491:6:55","nodeType":"YulTypedName","src":"3491:6:55","type":""}]},{"nativeSrc":"3517:74:55","nodeType":"YulAssignment","src":"3517:74:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3563:9:55","nodeType":"YulIdentifier","src":"3563:9:55"},{"name":"offset","nativeSrc":"3574:6:55","nodeType":"YulIdentifier","src":"3574:6:55"}],"functionName":{"name":"add","nativeSrc":"3559:3:55","nodeType":"YulIdentifier","src":"3559:3:55"},"nativeSrc":"3559:22:55","nodeType":"YulFunctionCall","src":"3559:22:55"},{"name":"dataEnd","nativeSrc":"3583:7:55","nodeType":"YulIdentifier","src":"3583:7:55"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nativeSrc":"3527:31:55","nodeType":"YulIdentifier","src":"3527:31:55"},"nativeSrc":"3527:64:55","nodeType":"YulFunctionCall","src":"3527:64:55"},"variableNames":[{"name":"value1","nativeSrc":"3517:6:55","nodeType":"YulIdentifier","src":"3517:6:55"}]}]},{"nativeSrc":"3611:291:55","nodeType":"YulBlock","src":"3611:291:55","statements":[{"nativeSrc":"3626:39:55","nodeType":"YulVariableDeclaration","src":"3626:39:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3650:9:55","nodeType":"YulIdentifier","src":"3650:9:55"},{"kind":"number","nativeSrc":"3661:2:55","nodeType":"YulLiteral","src":"3661:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"3646:3:55","nodeType":"YulIdentifier","src":"3646:3:55"},"nativeSrc":"3646:18:55","nodeType":"YulFunctionCall","src":"3646:18:55"}],"functionName":{"name":"mload","nativeSrc":"3640:5:55","nodeType":"YulIdentifier","src":"3640:5:55"},"nativeSrc":"3640:25:55","nodeType":"YulFunctionCall","src":"3640:25:55"},"variables":[{"name":"offset","nativeSrc":"3630:6:55","nodeType":"YulTypedName","src":"3630:6:55","type":""}]},{"body":{"nativeSrc":"3712:83:55","nodeType":"YulBlock","src":"3712:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"3714:77:55","nodeType":"YulIdentifier","src":"3714:77:55"},"nativeSrc":"3714:79:55","nodeType":"YulFunctionCall","src":"3714:79:55"},"nativeSrc":"3714:79:55","nodeType":"YulExpressionStatement","src":"3714:79:55"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"3684:6:55","nodeType":"YulIdentifier","src":"3684:6:55"},{"kind":"number","nativeSrc":"3692:18:55","nodeType":"YulLiteral","src":"3692:18:55","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3681:2:55","nodeType":"YulIdentifier","src":"3681:2:55"},"nativeSrc":"3681:30:55","nodeType":"YulFunctionCall","src":"3681:30:55"},"nativeSrc":"3678:117:55","nodeType":"YulIf","src":"3678:117:55"},{"nativeSrc":"3809:83:55","nodeType":"YulAssignment","src":"3809:83:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3864:9:55","nodeType":"YulIdentifier","src":"3864:9:55"},{"name":"offset","nativeSrc":"3875:6:55","nodeType":"YulIdentifier","src":"3875:6:55"}],"functionName":{"name":"add","nativeSrc":"3860:3:55","nodeType":"YulIdentifier","src":"3860:3:55"},"nativeSrc":"3860:22:55","nodeType":"YulFunctionCall","src":"3860:22:55"},{"name":"dataEnd","nativeSrc":"3884:7:55","nodeType":"YulIdentifier","src":"3884:7:55"}],"functionName":{"name":"abi_decode_t_bytes_memory_ptr_fromMemory","nativeSrc":"3819:40:55","nodeType":"YulIdentifier","src":"3819:40:55"},"nativeSrc":"3819:73:55","nodeType":"YulFunctionCall","src":"3819:73:55"},"variableNames":[{"name":"value2","nativeSrc":"3809:6:55","nodeType":"YulIdentifier","src":"3809:6:55"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_bytes_memory_ptr_fromMemory","nativeSrc":"3075:834:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3149:9:55","nodeType":"YulTypedName","src":"3149:9:55","type":""},{"name":"dataEnd","nativeSrc":"3160:7:55","nodeType":"YulTypedName","src":"3160:7:55","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3172:6:55","nodeType":"YulTypedName","src":"3172:6:55","type":""},{"name":"value1","nativeSrc":"3180:6:55","nodeType":"YulTypedName","src":"3180:6:55","type":""},{"name":"value2","nativeSrc":"3188:6:55","nodeType":"YulTypedName","src":"3188:6:55","type":""}],"src":"3075:834:55"},{"body":{"nativeSrc":"3960:32:55","nodeType":"YulBlock","src":"3960:32:55","statements":[{"nativeSrc":"3970:16:55","nodeType":"YulAssignment","src":"3970:16:55","value":{"name":"value","nativeSrc":"3981:5:55","nodeType":"YulIdentifier","src":"3981:5:55"},"variableNames":[{"name":"cleaned","nativeSrc":"3970:7:55","nodeType":"YulIdentifier","src":"3970:7:55"}]}]},"name":"cleanup_t_uint256","nativeSrc":"3915:77:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"3942:5:55","nodeType":"YulTypedName","src":"3942:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"3952:7:55","nodeType":"YulTypedName","src":"3952:7:55","type":""}],"src":"3915:77:55"},{"body":{"nativeSrc":"4026:152:55","nodeType":"YulBlock","src":"4026:152:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4043:1:55","nodeType":"YulLiteral","src":"4043:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"4046:77:55","nodeType":"YulLiteral","src":"4046:77:55","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"4036:6:55","nodeType":"YulIdentifier","src":"4036:6:55"},"nativeSrc":"4036:88:55","nodeType":"YulFunctionCall","src":"4036:88:55"},"nativeSrc":"4036:88:55","nodeType":"YulExpressionStatement","src":"4036:88:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4140:1:55","nodeType":"YulLiteral","src":"4140:1:55","type":"","value":"4"},{"kind":"number","nativeSrc":"4143:4:55","nodeType":"YulLiteral","src":"4143:4:55","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"4133:6:55","nodeType":"YulIdentifier","src":"4133:6:55"},"nativeSrc":"4133:15:55","nodeType":"YulFunctionCall","src":"4133:15:55"},"nativeSrc":"4133:15:55","nodeType":"YulExpressionStatement","src":"4133:15:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4164:1:55","nodeType":"YulLiteral","src":"4164:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"4167:4:55","nodeType":"YulLiteral","src":"4167:4:55","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"4157:6:55","nodeType":"YulIdentifier","src":"4157:6:55"},"nativeSrc":"4157:15:55","nodeType":"YulFunctionCall","src":"4157:15:55"},"nativeSrc":"4157:15:55","nodeType":"YulExpressionStatement","src":"4157:15:55"}]},"name":"panic_error_0x11","nativeSrc":"3998:180:55","nodeType":"YulFunctionDefinition","src":"3998:180:55"},{"body":{"nativeSrc":"4229:149:55","nodeType":"YulBlock","src":"4229:149:55","statements":[{"nativeSrc":"4239:25:55","nodeType":"YulAssignment","src":"4239:25:55","value":{"arguments":[{"name":"x","nativeSrc":"4262:1:55","nodeType":"YulIdentifier","src":"4262:1:55"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"4244:17:55","nodeType":"YulIdentifier","src":"4244:17:55"},"nativeSrc":"4244:20:55","nodeType":"YulFunctionCall","src":"4244:20:55"},"variableNames":[{"name":"x","nativeSrc":"4239:1:55","nodeType":"YulIdentifier","src":"4239:1:55"}]},{"nativeSrc":"4273:25:55","nodeType":"YulAssignment","src":"4273:25:55","value":{"arguments":[{"name":"y","nativeSrc":"4296:1:55","nodeType":"YulIdentifier","src":"4296:1:55"}],"functionName":{"name":"cleanup_t_uint256","nativeSrc":"4278:17:55","nodeType":"YulIdentifier","src":"4278:17:55"},"nativeSrc":"4278:20:55","nodeType":"YulFunctionCall","src":"4278:20:55"},"variableNames":[{"name":"y","nativeSrc":"4273:1:55","nodeType":"YulIdentifier","src":"4273:1:55"}]},{"nativeSrc":"4307:17:55","nodeType":"YulAssignment","src":"4307:17:55","value":{"arguments":[{"name":"x","nativeSrc":"4319:1:55","nodeType":"YulIdentifier","src":"4319:1:55"},{"name":"y","nativeSrc":"4322:1:55","nodeType":"YulIdentifier","src":"4322:1:55"}],"functionName":{"name":"sub","nativeSrc":"4315:3:55","nodeType":"YulIdentifier","src":"4315:3:55"},"nativeSrc":"4315:9:55","nodeType":"YulFunctionCall","src":"4315:9:55"},"variableNames":[{"name":"diff","nativeSrc":"4307:4:55","nodeType":"YulIdentifier","src":"4307:4:55"}]},{"body":{"nativeSrc":"4349:22:55","nodeType":"YulBlock","src":"4349:22:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"4351:16:55","nodeType":"YulIdentifier","src":"4351:16:55"},"nativeSrc":"4351:18:55","nodeType":"YulFunctionCall","src":"4351:18:55"},"nativeSrc":"4351:18:55","nodeType":"YulExpressionStatement","src":"4351:18:55"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"4340:4:55","nodeType":"YulIdentifier","src":"4340:4:55"},{"name":"x","nativeSrc":"4346:1:55","nodeType":"YulIdentifier","src":"4346:1:55"}],"functionName":{"name":"gt","nativeSrc":"4337:2:55","nodeType":"YulIdentifier","src":"4337:2:55"},"nativeSrc":"4337:11:55","nodeType":"YulFunctionCall","src":"4337:11:55"},"nativeSrc":"4334:37:55","nodeType":"YulIf","src":"4334:37:55"}]},"name":"checked_sub_t_uint256","nativeSrc":"4184:194:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"4215:1:55","nodeType":"YulTypedName","src":"4215:1:55","type":""},{"name":"y","nativeSrc":"4218:1:55","nodeType":"YulTypedName","src":"4218:1:55","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"4224:4:55","nodeType":"YulTypedName","src":"4224:4:55","type":""}],"src":"4184:194:55"},{"body":{"nativeSrc":"4412:152:55","nodeType":"YulBlock","src":"4412:152:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4429:1:55","nodeType":"YulLiteral","src":"4429:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"4432:77:55","nodeType":"YulLiteral","src":"4432:77:55","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"4422:6:55","nodeType":"YulIdentifier","src":"4422:6:55"},"nativeSrc":"4422:88:55","nodeType":"YulFunctionCall","src":"4422:88:55"},"nativeSrc":"4422:88:55","nodeType":"YulExpressionStatement","src":"4422:88:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4526:1:55","nodeType":"YulLiteral","src":"4526:1:55","type":"","value":"4"},{"kind":"number","nativeSrc":"4529:4:55","nodeType":"YulLiteral","src":"4529:4:55","type":"","value":"0x01"}],"functionName":{"name":"mstore","nativeSrc":"4519:6:55","nodeType":"YulIdentifier","src":"4519:6:55"},"nativeSrc":"4519:15:55","nodeType":"YulFunctionCall","src":"4519:15:55"},"nativeSrc":"4519:15:55","nodeType":"YulExpressionStatement","src":"4519:15:55"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4550:1:55","nodeType":"YulLiteral","src":"4550:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"4553:4:55","nodeType":"YulLiteral","src":"4553:4:55","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"4543:6:55","nodeType":"YulIdentifier","src":"4543:6:55"},"nativeSrc":"4543:15:55","nodeType":"YulFunctionCall","src":"4543:15:55"},"nativeSrc":"4543:15:55","nodeType":"YulExpressionStatement","src":"4543:15:55"}]},"name":"panic_error_0x01","nativeSrc":"4384:180:55","nodeType":"YulFunctionDefinition","src":"4384:180:55"},{"body":{"nativeSrc":"4635:53:55","nodeType":"YulBlock","src":"4635:53:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"4652:3:55","nodeType":"YulIdentifier","src":"4652:3:55"},{"arguments":[{"name":"value","nativeSrc":"4675:5:55","nodeType":"YulIdentifier","src":"4675:5:55"}],"functionName":{"name":"cleanup_t_address","nativeSrc":"4657:17:55","nodeType":"YulIdentifier","src":"4657:17:55"},"nativeSrc":"4657:24:55","nodeType":"YulFunctionCall","src":"4657:24:55"}],"functionName":{"name":"mstore","nativeSrc":"4645:6:55","nodeType":"YulIdentifier","src":"4645:6:55"},"nativeSrc":"4645:37:55","nodeType":"YulFunctionCall","src":"4645:37:55"},"nativeSrc":"4645:37:55","nodeType":"YulExpressionStatement","src":"4645:37:55"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"4570:118:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"4623:5:55","nodeType":"YulTypedName","src":"4623:5:55","type":""},{"name":"pos","nativeSrc":"4630:3:55","nodeType":"YulTypedName","src":"4630:3:55","type":""}],"src":"4570:118:55"},{"body":{"nativeSrc":"4820:206:55","nodeType":"YulBlock","src":"4820:206:55","statements":[{"nativeSrc":"4830:26:55","nodeType":"YulAssignment","src":"4830:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"4842:9:55","nodeType":"YulIdentifier","src":"4842:9:55"},{"kind":"number","nativeSrc":"4853:2:55","nodeType":"YulLiteral","src":"4853:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"4838:3:55","nodeType":"YulIdentifier","src":"4838:3:55"},"nativeSrc":"4838:18:55","nodeType":"YulFunctionCall","src":"4838:18:55"},"variableNames":[{"name":"tail","nativeSrc":"4830:4:55","nodeType":"YulIdentifier","src":"4830:4:55"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"4910:6:55","nodeType":"YulIdentifier","src":"4910:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"4923:9:55","nodeType":"YulIdentifier","src":"4923:9:55"},{"kind":"number","nativeSrc":"4934:1:55","nodeType":"YulLiteral","src":"4934:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"4919:3:55","nodeType":"YulIdentifier","src":"4919:3:55"},"nativeSrc":"4919:17:55","nodeType":"YulFunctionCall","src":"4919:17:55"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"4866:43:55","nodeType":"YulIdentifier","src":"4866:43:55"},"nativeSrc":"4866:71:55","nodeType":"YulFunctionCall","src":"4866:71:55"},"nativeSrc":"4866:71:55","nodeType":"YulExpressionStatement","src":"4866:71:55"},{"expression":{"arguments":[{"name":"value1","nativeSrc":"4991:6:55","nodeType":"YulIdentifier","src":"4991:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"5004:9:55","nodeType":"YulIdentifier","src":"5004:9:55"},{"kind":"number","nativeSrc":"5015:2:55","nodeType":"YulLiteral","src":"5015:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5000:3:55","nodeType":"YulIdentifier","src":"5000:3:55"},"nativeSrc":"5000:18:55","nodeType":"YulFunctionCall","src":"5000:18:55"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"4947:43:55","nodeType":"YulIdentifier","src":"4947:43:55"},"nativeSrc":"4947:72:55","nodeType":"YulFunctionCall","src":"4947:72:55"},"nativeSrc":"4947:72:55","nodeType":"YulExpressionStatement","src":"4947:72:55"}]},"name":"abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed","nativeSrc":"4694:332:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4784:9:55","nodeType":"YulTypedName","src":"4784:9:55","type":""},{"name":"value1","nativeSrc":"4796:6:55","nodeType":"YulTypedName","src":"4796:6:55","type":""},{"name":"value0","nativeSrc":"4804:6:55","nodeType":"YulTypedName","src":"4804:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4815:4:55","nodeType":"YulTypedName","src":"4815:4:55","type":""}],"src":"4694:332:55"},{"body":{"nativeSrc":"5128:73:55","nodeType":"YulBlock","src":"5128:73:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"5145:3:55","nodeType":"YulIdentifier","src":"5145:3:55"},{"name":"length","nativeSrc":"5150:6:55","nodeType":"YulIdentifier","src":"5150:6:55"}],"functionName":{"name":"mstore","nativeSrc":"5138:6:55","nodeType":"YulIdentifier","src":"5138:6:55"},"nativeSrc":"5138:19:55","nodeType":"YulFunctionCall","src":"5138:19:55"},"nativeSrc":"5138:19:55","nodeType":"YulExpressionStatement","src":"5138:19:55"},{"nativeSrc":"5166:29:55","nodeType":"YulAssignment","src":"5166:29:55","value":{"arguments":[{"name":"pos","nativeSrc":"5185:3:55","nodeType":"YulIdentifier","src":"5185:3:55"},{"kind":"number","nativeSrc":"5190:4:55","nodeType":"YulLiteral","src":"5190:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5181:3:55","nodeType":"YulIdentifier","src":"5181:3:55"},"nativeSrc":"5181:14:55","nodeType":"YulFunctionCall","src":"5181:14:55"},"variableNames":[{"name":"updated_pos","nativeSrc":"5166:11:55","nodeType":"YulIdentifier","src":"5166:11:55"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"5032:169:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"5100:3:55","nodeType":"YulTypedName","src":"5100:3:55","type":""},{"name":"length","nativeSrc":"5105:6:55","nodeType":"YulTypedName","src":"5105:6:55","type":""}],"returnVariables":[{"name":"updated_pos","nativeSrc":"5116:11:55","nodeType":"YulTypedName","src":"5116:11:55","type":""}],"src":"5032:169:55"},{"body":{"nativeSrc":"5313:126:55","nodeType":"YulBlock","src":"5313:126:55","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"5335:6:55","nodeType":"YulIdentifier","src":"5335:6:55"},{"kind":"number","nativeSrc":"5343:1:55","nodeType":"YulLiteral","src":"5343:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"5331:3:55","nodeType":"YulIdentifier","src":"5331:3:55"},"nativeSrc":"5331:14:55","nodeType":"YulFunctionCall","src":"5331:14:55"},{"hexValue":"455243313936373a206e657720696d706c656d656e746174696f6e206973206e","kind":"string","nativeSrc":"5347:34:55","nodeType":"YulLiteral","src":"5347:34:55","type":"","value":"ERC1967: new implementation is n"}],"functionName":{"name":"mstore","nativeSrc":"5324:6:55","nodeType":"YulIdentifier","src":"5324:6:55"},"nativeSrc":"5324:58:55","nodeType":"YulFunctionCall","src":"5324:58:55"},"nativeSrc":"5324:58:55","nodeType":"YulExpressionStatement","src":"5324:58:55"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"5403:6:55","nodeType":"YulIdentifier","src":"5403:6:55"},{"kind":"number","nativeSrc":"5411:2:55","nodeType":"YulLiteral","src":"5411:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5399:3:55","nodeType":"YulIdentifier","src":"5399:3:55"},"nativeSrc":"5399:15:55","nodeType":"YulFunctionCall","src":"5399:15:55"},{"hexValue":"6f74206120636f6e7472616374","kind":"string","nativeSrc":"5416:15:55","nodeType":"YulLiteral","src":"5416:15:55","type":"","value":"ot a contract"}],"functionName":{"name":"mstore","nativeSrc":"5392:6:55","nodeType":"YulIdentifier","src":"5392:6:55"},"nativeSrc":"5392:40:55","nodeType":"YulFunctionCall","src":"5392:40:55"},"nativeSrc":"5392:40:55","nodeType":"YulExpressionStatement","src":"5392:40:55"}]},"name":"store_literal_in_memory_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65","nativeSrc":"5207:232:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"5305:6:55","nodeType":"YulTypedName","src":"5305:6:55","type":""}],"src":"5207:232:55"},{"body":{"nativeSrc":"5591:220:55","nodeType":"YulBlock","src":"5591:220:55","statements":[{"nativeSrc":"5601:74:55","nodeType":"YulAssignment","src":"5601:74:55","value":{"arguments":[{"name":"pos","nativeSrc":"5667:3:55","nodeType":"YulIdentifier","src":"5667:3:55"},{"kind":"number","nativeSrc":"5672:2:55","nodeType":"YulLiteral","src":"5672:2:55","type":"","value":"45"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"5608:58:55","nodeType":"YulIdentifier","src":"5608:58:55"},"nativeSrc":"5608:67:55","nodeType":"YulFunctionCall","src":"5608:67:55"},"variableNames":[{"name":"pos","nativeSrc":"5601:3:55","nodeType":"YulIdentifier","src":"5601:3:55"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"5773:3:55","nodeType":"YulIdentifier","src":"5773:3:55"}],"functionName":{"name":"store_literal_in_memory_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65","nativeSrc":"5684:88:55","nodeType":"YulIdentifier","src":"5684:88:55"},"nativeSrc":"5684:93:55","nodeType":"YulFunctionCall","src":"5684:93:55"},"nativeSrc":"5684:93:55","nodeType":"YulExpressionStatement","src":"5684:93:55"},{"nativeSrc":"5786:19:55","nodeType":"YulAssignment","src":"5786:19:55","value":{"arguments":[{"name":"pos","nativeSrc":"5797:3:55","nodeType":"YulIdentifier","src":"5797:3:55"},{"kind":"number","nativeSrc":"5802:2:55","nodeType":"YulLiteral","src":"5802:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5793:3:55","nodeType":"YulIdentifier","src":"5793:3:55"},"nativeSrc":"5793:12:55","nodeType":"YulFunctionCall","src":"5793:12:55"},"variableNames":[{"name":"end","nativeSrc":"5786:3:55","nodeType":"YulIdentifier","src":"5786:3:55"}]}]},"name":"abi_encode_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65_to_t_string_memory_ptr_fromStack","nativeSrc":"5445:366:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"5579:3:55","nodeType":"YulTypedName","src":"5579:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"5587:3:55","nodeType":"YulTypedName","src":"5587:3:55","type":""}],"src":"5445:366:55"},{"body":{"nativeSrc":"5988:248:55","nodeType":"YulBlock","src":"5988:248:55","statements":[{"nativeSrc":"5998:26:55","nodeType":"YulAssignment","src":"5998:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"6010:9:55","nodeType":"YulIdentifier","src":"6010:9:55"},{"kind":"number","nativeSrc":"6021:2:55","nodeType":"YulLiteral","src":"6021:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6006:3:55","nodeType":"YulIdentifier","src":"6006:3:55"},"nativeSrc":"6006:18:55","nodeType":"YulFunctionCall","src":"6006:18:55"},"variableNames":[{"name":"tail","nativeSrc":"5998:4:55","nodeType":"YulIdentifier","src":"5998:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6045:9:55","nodeType":"YulIdentifier","src":"6045:9:55"},{"kind":"number","nativeSrc":"6056:1:55","nodeType":"YulLiteral","src":"6056:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"6041:3:55","nodeType":"YulIdentifier","src":"6041:3:55"},"nativeSrc":"6041:17:55","nodeType":"YulFunctionCall","src":"6041:17:55"},{"arguments":[{"name":"tail","nativeSrc":"6064:4:55","nodeType":"YulIdentifier","src":"6064:4:55"},{"name":"headStart","nativeSrc":"6070:9:55","nodeType":"YulIdentifier","src":"6070:9:55"}],"functionName":{"name":"sub","nativeSrc":"6060:3:55","nodeType":"YulIdentifier","src":"6060:3:55"},"nativeSrc":"6060:20:55","nodeType":"YulFunctionCall","src":"6060:20:55"}],"functionName":{"name":"mstore","nativeSrc":"6034:6:55","nodeType":"YulIdentifier","src":"6034:6:55"},"nativeSrc":"6034:47:55","nodeType":"YulFunctionCall","src":"6034:47:55"},"nativeSrc":"6034:47:55","nodeType":"YulExpressionStatement","src":"6034:47:55"},{"nativeSrc":"6090:139:55","nodeType":"YulAssignment","src":"6090:139:55","value":{"arguments":[{"name":"tail","nativeSrc":"6224:4:55","nodeType":"YulIdentifier","src":"6224:4:55"}],"functionName":{"name":"abi_encode_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65_to_t_string_memory_ptr_fromStack","nativeSrc":"6098:124:55","nodeType":"YulIdentifier","src":"6098:124:55"},"nativeSrc":"6098:131:55","nodeType":"YulFunctionCall","src":"6098:131:55"},"variableNames":[{"name":"tail","nativeSrc":"6090:4:55","nodeType":"YulIdentifier","src":"6090:4:55"}]}]},"name":"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"5817:419:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5968:9:55","nodeType":"YulTypedName","src":"5968:9:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5983:4:55","nodeType":"YulTypedName","src":"5983:4:55","type":""}],"src":"5817:419:55"},{"body":{"nativeSrc":"6348:119:55","nodeType":"YulBlock","src":"6348:119:55","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"6370:6:55","nodeType":"YulIdentifier","src":"6370:6:55"},{"kind":"number","nativeSrc":"6378:1:55","nodeType":"YulLiteral","src":"6378:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"6366:3:55","nodeType":"YulIdentifier","src":"6366:3:55"},"nativeSrc":"6366:14:55","nodeType":"YulFunctionCall","src":"6366:14:55"},{"hexValue":"416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f","kind":"string","nativeSrc":"6382:34:55","nodeType":"YulLiteral","src":"6382:34:55","type":"","value":"Address: delegate call to non-co"}],"functionName":{"name":"mstore","nativeSrc":"6359:6:55","nodeType":"YulIdentifier","src":"6359:6:55"},"nativeSrc":"6359:58:55","nodeType":"YulFunctionCall","src":"6359:58:55"},"nativeSrc":"6359:58:55","nodeType":"YulExpressionStatement","src":"6359:58:55"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"6438:6:55","nodeType":"YulIdentifier","src":"6438:6:55"},{"kind":"number","nativeSrc":"6446:2:55","nodeType":"YulLiteral","src":"6446:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6434:3:55","nodeType":"YulIdentifier","src":"6434:3:55"},"nativeSrc":"6434:15:55","nodeType":"YulFunctionCall","src":"6434:15:55"},{"hexValue":"6e7472616374","kind":"string","nativeSrc":"6451:8:55","nodeType":"YulLiteral","src":"6451:8:55","type":"","value":"ntract"}],"functionName":{"name":"mstore","nativeSrc":"6427:6:55","nodeType":"YulIdentifier","src":"6427:6:55"},"nativeSrc":"6427:33:55","nodeType":"YulFunctionCall","src":"6427:33:55"},"nativeSrc":"6427:33:55","nodeType":"YulExpressionStatement","src":"6427:33:55"}]},"name":"store_literal_in_memory_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520","nativeSrc":"6242:225:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"6340:6:55","nodeType":"YulTypedName","src":"6340:6:55","type":""}],"src":"6242:225:55"},{"body":{"nativeSrc":"6619:220:55","nodeType":"YulBlock","src":"6619:220:55","statements":[{"nativeSrc":"6629:74:55","nodeType":"YulAssignment","src":"6629:74:55","value":{"arguments":[{"name":"pos","nativeSrc":"6695:3:55","nodeType":"YulIdentifier","src":"6695:3:55"},{"kind":"number","nativeSrc":"6700:2:55","nodeType":"YulLiteral","src":"6700:2:55","type":"","value":"38"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"6636:58:55","nodeType":"YulIdentifier","src":"6636:58:55"},"nativeSrc":"6636:67:55","nodeType":"YulFunctionCall","src":"6636:67:55"},"variableNames":[{"name":"pos","nativeSrc":"6629:3:55","nodeType":"YulIdentifier","src":"6629:3:55"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"6801:3:55","nodeType":"YulIdentifier","src":"6801:3:55"}],"functionName":{"name":"store_literal_in_memory_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520","nativeSrc":"6712:88:55","nodeType":"YulIdentifier","src":"6712:88:55"},"nativeSrc":"6712:93:55","nodeType":"YulFunctionCall","src":"6712:93:55"},"nativeSrc":"6712:93:55","nodeType":"YulExpressionStatement","src":"6712:93:55"},{"nativeSrc":"6814:19:55","nodeType":"YulAssignment","src":"6814:19:55","value":{"arguments":[{"name":"pos","nativeSrc":"6825:3:55","nodeType":"YulIdentifier","src":"6825:3:55"},{"kind":"number","nativeSrc":"6830:2:55","nodeType":"YulLiteral","src":"6830:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"6821:3:55","nodeType":"YulIdentifier","src":"6821:3:55"},"nativeSrc":"6821:12:55","nodeType":"YulFunctionCall","src":"6821:12:55"},"variableNames":[{"name":"end","nativeSrc":"6814:3:55","nodeType":"YulIdentifier","src":"6814:3:55"}]}]},"name":"abi_encode_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520_to_t_string_memory_ptr_fromStack","nativeSrc":"6473:366:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"6607:3:55","nodeType":"YulTypedName","src":"6607:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"6615:3:55","nodeType":"YulTypedName","src":"6615:3:55","type":""}],"src":"6473:366:55"},{"body":{"nativeSrc":"7016:248:55","nodeType":"YulBlock","src":"7016:248:55","statements":[{"nativeSrc":"7026:26:55","nodeType":"YulAssignment","src":"7026:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"7038:9:55","nodeType":"YulIdentifier","src":"7038:9:55"},{"kind":"number","nativeSrc":"7049:2:55","nodeType":"YulLiteral","src":"7049:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7034:3:55","nodeType":"YulIdentifier","src":"7034:3:55"},"nativeSrc":"7034:18:55","nodeType":"YulFunctionCall","src":"7034:18:55"},"variableNames":[{"name":"tail","nativeSrc":"7026:4:55","nodeType":"YulIdentifier","src":"7026:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7073:9:55","nodeType":"YulIdentifier","src":"7073:9:55"},{"kind":"number","nativeSrc":"7084:1:55","nodeType":"YulLiteral","src":"7084:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"7069:3:55","nodeType":"YulIdentifier","src":"7069:3:55"},"nativeSrc":"7069:17:55","nodeType":"YulFunctionCall","src":"7069:17:55"},{"arguments":[{"name":"tail","nativeSrc":"7092:4:55","nodeType":"YulIdentifier","src":"7092:4:55"},{"name":"headStart","nativeSrc":"7098:9:55","nodeType":"YulIdentifier","src":"7098:9:55"}],"functionName":{"name":"sub","nativeSrc":"7088:3:55","nodeType":"YulIdentifier","src":"7088:3:55"},"nativeSrc":"7088:20:55","nodeType":"YulFunctionCall","src":"7088:20:55"}],"functionName":{"name":"mstore","nativeSrc":"7062:6:55","nodeType":"YulIdentifier","src":"7062:6:55"},"nativeSrc":"7062:47:55","nodeType":"YulFunctionCall","src":"7062:47:55"},"nativeSrc":"7062:47:55","nodeType":"YulExpressionStatement","src":"7062:47:55"},{"nativeSrc":"7118:139:55","nodeType":"YulAssignment","src":"7118:139:55","value":{"arguments":[{"name":"tail","nativeSrc":"7252:4:55","nodeType":"YulIdentifier","src":"7252:4:55"}],"functionName":{"name":"abi_encode_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520_to_t_string_memory_ptr_fromStack","nativeSrc":"7126:124:55","nodeType":"YulIdentifier","src":"7126:124:55"},"nativeSrc":"7126:131:55","nodeType":"YulFunctionCall","src":"7126:131:55"},"variableNames":[{"name":"tail","nativeSrc":"7118:4:55","nodeType":"YulIdentifier","src":"7118:4:55"}]}]},"name":"abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"6845:419:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6996:9:55","nodeType":"YulTypedName","src":"6996:9:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"7011:4:55","nodeType":"YulTypedName","src":"7011:4:55","type":""}],"src":"6845:419:55"},{"body":{"nativeSrc":"7328:40:55","nodeType":"YulBlock","src":"7328:40:55","statements":[{"nativeSrc":"7339:22:55","nodeType":"YulAssignment","src":"7339:22:55","value":{"arguments":[{"name":"value","nativeSrc":"7355:5:55","nodeType":"YulIdentifier","src":"7355:5:55"}],"functionName":{"name":"mload","nativeSrc":"7349:5:55","nodeType":"YulIdentifier","src":"7349:5:55"},"nativeSrc":"7349:12:55","nodeType":"YulFunctionCall","src":"7349:12:55"},"variableNames":[{"name":"length","nativeSrc":"7339:6:55","nodeType":"YulIdentifier","src":"7339:6:55"}]}]},"name":"array_length_t_bytes_memory_ptr","nativeSrc":"7270:98:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"7311:5:55","nodeType":"YulTypedName","src":"7311:5:55","type":""}],"returnVariables":[{"name":"length","nativeSrc":"7321:6:55","nodeType":"YulTypedName","src":"7321:6:55","type":""}],"src":"7270:98:55"},{"body":{"nativeSrc":"7487:34:55","nodeType":"YulBlock","src":"7487:34:55","statements":[{"nativeSrc":"7497:18:55","nodeType":"YulAssignment","src":"7497:18:55","value":{"name":"pos","nativeSrc":"7512:3:55","nodeType":"YulIdentifier","src":"7512:3:55"},"variableNames":[{"name":"updated_pos","nativeSrc":"7497:11:55","nodeType":"YulIdentifier","src":"7497:11:55"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"7374:147:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"7459:3:55","nodeType":"YulTypedName","src":"7459:3:55","type":""},{"name":"length","nativeSrc":"7464:6:55","nodeType":"YulTypedName","src":"7464:6:55","type":""}],"returnVariables":[{"name":"updated_pos","nativeSrc":"7475:11:55","nodeType":"YulTypedName","src":"7475:11:55","type":""}],"src":"7374:147:55"},{"body":{"nativeSrc":"7635:278:55","nodeType":"YulBlock","src":"7635:278:55","statements":[{"nativeSrc":"7645:52:55","nodeType":"YulVariableDeclaration","src":"7645:52:55","value":{"arguments":[{"name":"value","nativeSrc":"7691:5:55","nodeType":"YulIdentifier","src":"7691:5:55"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nativeSrc":"7659:31:55","nodeType":"YulIdentifier","src":"7659:31:55"},"nativeSrc":"7659:38:55","nodeType":"YulFunctionCall","src":"7659:38:55"},"variables":[{"name":"length","nativeSrc":"7649:6:55","nodeType":"YulTypedName","src":"7649:6:55","type":""}]},{"nativeSrc":"7706:95:55","nodeType":"YulAssignment","src":"7706:95:55","value":{"arguments":[{"name":"pos","nativeSrc":"7789:3:55","nodeType":"YulIdentifier","src":"7789:3:55"},{"name":"length","nativeSrc":"7794:6:55","nodeType":"YulIdentifier","src":"7794:6:55"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"7713:75:55","nodeType":"YulIdentifier","src":"7713:75:55"},"nativeSrc":"7713:88:55","nodeType":"YulFunctionCall","src":"7713:88:55"},"variableNames":[{"name":"pos","nativeSrc":"7706:3:55","nodeType":"YulIdentifier","src":"7706:3:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"7849:5:55","nodeType":"YulIdentifier","src":"7849:5:55"},{"kind":"number","nativeSrc":"7856:4:55","nodeType":"YulLiteral","src":"7856:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"7845:3:55","nodeType":"YulIdentifier","src":"7845:3:55"},"nativeSrc":"7845:16:55","nodeType":"YulFunctionCall","src":"7845:16:55"},{"name":"pos","nativeSrc":"7863:3:55","nodeType":"YulIdentifier","src":"7863:3:55"},{"name":"length","nativeSrc":"7868:6:55","nodeType":"YulIdentifier","src":"7868:6:55"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"7810:34:55","nodeType":"YulIdentifier","src":"7810:34:55"},"nativeSrc":"7810:65:55","nodeType":"YulFunctionCall","src":"7810:65:55"},"nativeSrc":"7810:65:55","nodeType":"YulExpressionStatement","src":"7810:65:55"},{"nativeSrc":"7884:23:55","nodeType":"YulAssignment","src":"7884:23:55","value":{"arguments":[{"name":"pos","nativeSrc":"7895:3:55","nodeType":"YulIdentifier","src":"7895:3:55"},{"name":"length","nativeSrc":"7900:6:55","nodeType":"YulIdentifier","src":"7900:6:55"}],"functionName":{"name":"add","nativeSrc":"7891:3:55","nodeType":"YulIdentifier","src":"7891:3:55"},"nativeSrc":"7891:16:55","nodeType":"YulFunctionCall","src":"7891:16:55"},"variableNames":[{"name":"end","nativeSrc":"7884:3:55","nodeType":"YulIdentifier","src":"7884:3:55"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"7527:386:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"7616:5:55","nodeType":"YulTypedName","src":"7616:5:55","type":""},{"name":"pos","nativeSrc":"7623:3:55","nodeType":"YulTypedName","src":"7623:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"7631:3:55","nodeType":"YulTypedName","src":"7631:3:55","type":""}],"src":"7527:386:55"},{"body":{"nativeSrc":"8053:137:55","nodeType":"YulBlock","src":"8053:137:55","statements":[{"nativeSrc":"8064:100:55","nodeType":"YulAssignment","src":"8064:100:55","value":{"arguments":[{"name":"value0","nativeSrc":"8151:6:55","nodeType":"YulIdentifier","src":"8151:6:55"},{"name":"pos","nativeSrc":"8160:3:55","nodeType":"YulIdentifier","src":"8160:3:55"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"8071:79:55","nodeType":"YulIdentifier","src":"8071:79:55"},"nativeSrc":"8071:93:55","nodeType":"YulFunctionCall","src":"8071:93:55"},"variableNames":[{"name":"pos","nativeSrc":"8064:3:55","nodeType":"YulIdentifier","src":"8064:3:55"}]},{"nativeSrc":"8174:10:55","nodeType":"YulAssignment","src":"8174:10:55","value":{"name":"pos","nativeSrc":"8181:3:55","nodeType":"YulIdentifier","src":"8181:3:55"},"variableNames":[{"name":"end","nativeSrc":"8174:3:55","nodeType":"YulIdentifier","src":"8174:3:55"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"7919:271:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"8032:3:55","nodeType":"YulTypedName","src":"8032:3:55","type":""},{"name":"value0","nativeSrc":"8038:6:55","nodeType":"YulTypedName","src":"8038:6:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"8049:3:55","nodeType":"YulTypedName","src":"8049:3:55","type":""}],"src":"7919:271:55"},{"body":{"nativeSrc":"8255:40:55","nodeType":"YulBlock","src":"8255:40:55","statements":[{"nativeSrc":"8266:22:55","nodeType":"YulAssignment","src":"8266:22:55","value":{"arguments":[{"name":"value","nativeSrc":"8282:5:55","nodeType":"YulIdentifier","src":"8282:5:55"}],"functionName":{"name":"mload","nativeSrc":"8276:5:55","nodeType":"YulIdentifier","src":"8276:5:55"},"nativeSrc":"8276:12:55","nodeType":"YulFunctionCall","src":"8276:12:55"},"variableNames":[{"name":"length","nativeSrc":"8266:6:55","nodeType":"YulIdentifier","src":"8266:6:55"}]}]},"name":"array_length_t_string_memory_ptr","nativeSrc":"8196:99:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"8238:5:55","nodeType":"YulTypedName","src":"8238:5:55","type":""}],"returnVariables":[{"name":"length","nativeSrc":"8248:6:55","nodeType":"YulTypedName","src":"8248:6:55","type":""}],"src":"8196:99:55"},{"body":{"nativeSrc":"8393:285:55","nodeType":"YulBlock","src":"8393:285:55","statements":[{"nativeSrc":"8403:53:55","nodeType":"YulVariableDeclaration","src":"8403:53:55","value":{"arguments":[{"name":"value","nativeSrc":"8450:5:55","nodeType":"YulIdentifier","src":"8450:5:55"}],"functionName":{"name":"array_length_t_string_memory_ptr","nativeSrc":"8417:32:55","nodeType":"YulIdentifier","src":"8417:32:55"},"nativeSrc":"8417:39:55","nodeType":"YulFunctionCall","src":"8417:39:55"},"variables":[{"name":"length","nativeSrc":"8407:6:55","nodeType":"YulTypedName","src":"8407:6:55","type":""}]},{"nativeSrc":"8465:78:55","nodeType":"YulAssignment","src":"8465:78:55","value":{"arguments":[{"name":"pos","nativeSrc":"8531:3:55","nodeType":"YulIdentifier","src":"8531:3:55"},{"name":"length","nativeSrc":"8536:6:55","nodeType":"YulIdentifier","src":"8536:6:55"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"8472:58:55","nodeType":"YulIdentifier","src":"8472:58:55"},"nativeSrc":"8472:71:55","nodeType":"YulFunctionCall","src":"8472:71:55"},"variableNames":[{"name":"pos","nativeSrc":"8465:3:55","nodeType":"YulIdentifier","src":"8465:3:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"8591:5:55","nodeType":"YulIdentifier","src":"8591:5:55"},{"kind":"number","nativeSrc":"8598:4:55","nodeType":"YulLiteral","src":"8598:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8587:3:55","nodeType":"YulIdentifier","src":"8587:3:55"},"nativeSrc":"8587:16:55","nodeType":"YulFunctionCall","src":"8587:16:55"},{"name":"pos","nativeSrc":"8605:3:55","nodeType":"YulIdentifier","src":"8605:3:55"},{"name":"length","nativeSrc":"8610:6:55","nodeType":"YulIdentifier","src":"8610:6:55"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"8552:34:55","nodeType":"YulIdentifier","src":"8552:34:55"},"nativeSrc":"8552:65:55","nodeType":"YulFunctionCall","src":"8552:65:55"},"nativeSrc":"8552:65:55","nodeType":"YulExpressionStatement","src":"8552:65:55"},{"nativeSrc":"8626:46:55","nodeType":"YulAssignment","src":"8626:46:55","value":{"arguments":[{"name":"pos","nativeSrc":"8637:3:55","nodeType":"YulIdentifier","src":"8637:3:55"},{"arguments":[{"name":"length","nativeSrc":"8664:6:55","nodeType":"YulIdentifier","src":"8664:6:55"}],"functionName":{"name":"round_up_to_mul_of_32","nativeSrc":"8642:21:55","nodeType":"YulIdentifier","src":"8642:21:55"},"nativeSrc":"8642:29:55","nodeType":"YulFunctionCall","src":"8642:29:55"}],"functionName":{"name":"add","nativeSrc":"8633:3:55","nodeType":"YulIdentifier","src":"8633:3:55"},"nativeSrc":"8633:39:55","nodeType":"YulFunctionCall","src":"8633:39:55"},"variableNames":[{"name":"end","nativeSrc":"8626:3:55","nodeType":"YulIdentifier","src":"8626:3:55"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nativeSrc":"8301:377:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"8374:5:55","nodeType":"YulTypedName","src":"8374:5:55","type":""},{"name":"pos","nativeSrc":"8381:3:55","nodeType":"YulTypedName","src":"8381:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"8389:3:55","nodeType":"YulTypedName","src":"8389:3:55","type":""}],"src":"8301:377:55"},{"body":{"nativeSrc":"8802:195:55","nodeType":"YulBlock","src":"8802:195:55","statements":[{"nativeSrc":"8812:26:55","nodeType":"YulAssignment","src":"8812:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"8824:9:55","nodeType":"YulIdentifier","src":"8824:9:55"},{"kind":"number","nativeSrc":"8835:2:55","nodeType":"YulLiteral","src":"8835:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8820:3:55","nodeType":"YulIdentifier","src":"8820:3:55"},"nativeSrc":"8820:18:55","nodeType":"YulFunctionCall","src":"8820:18:55"},"variableNames":[{"name":"tail","nativeSrc":"8812:4:55","nodeType":"YulIdentifier","src":"8812:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8859:9:55","nodeType":"YulIdentifier","src":"8859:9:55"},{"kind":"number","nativeSrc":"8870:1:55","nodeType":"YulLiteral","src":"8870:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"8855:3:55","nodeType":"YulIdentifier","src":"8855:3:55"},"nativeSrc":"8855:17:55","nodeType":"YulFunctionCall","src":"8855:17:55"},{"arguments":[{"name":"tail","nativeSrc":"8878:4:55","nodeType":"YulIdentifier","src":"8878:4:55"},{"name":"headStart","nativeSrc":"8884:9:55","nodeType":"YulIdentifier","src":"8884:9:55"}],"functionName":{"name":"sub","nativeSrc":"8874:3:55","nodeType":"YulIdentifier","src":"8874:3:55"},"nativeSrc":"8874:20:55","nodeType":"YulFunctionCall","src":"8874:20:55"}],"functionName":{"name":"mstore","nativeSrc":"8848:6:55","nodeType":"YulIdentifier","src":"8848:6:55"},"nativeSrc":"8848:47:55","nodeType":"YulFunctionCall","src":"8848:47:55"},"nativeSrc":"8848:47:55","nodeType":"YulExpressionStatement","src":"8848:47:55"},{"nativeSrc":"8904:86:55","nodeType":"YulAssignment","src":"8904:86:55","value":{"arguments":[{"name":"value0","nativeSrc":"8976:6:55","nodeType":"YulIdentifier","src":"8976:6:55"},{"name":"tail","nativeSrc":"8985:4:55","nodeType":"YulIdentifier","src":"8985:4:55"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nativeSrc":"8912:63:55","nodeType":"YulIdentifier","src":"8912:63:55"},"nativeSrc":"8912:78:55","nodeType":"YulFunctionCall","src":"8912:78:55"},"variableNames":[{"name":"tail","nativeSrc":"8904:4:55","nodeType":"YulIdentifier","src":"8904:4:55"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"8684:313:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8774:9:55","nodeType":"YulTypedName","src":"8774:9:55","type":""},{"name":"value0","nativeSrc":"8786:6:55","nodeType":"YulTypedName","src":"8786:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8797:4:55","nodeType":"YulTypedName","src":"8797:4:55","type":""}],"src":"8684:313:55"}]},"contents":"{\n\n    function allocate_unbounded() -> memPtr {\n        memPtr := mload(64)\n    }\n\n    function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n        revert(0, 0)\n    }\n\n    function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n        revert(0, 0)\n    }\n\n    function cleanup_t_uint160(value) -> cleaned {\n        cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n    }\n\n    function cleanup_t_address(value) -> cleaned {\n        cleaned := cleanup_t_uint160(value)\n    }\n\n    function validator_revert_t_address(value) {\n        if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n    }\n\n    function abi_decode_t_address_fromMemory(offset, end) -> value {\n        value := mload(offset)\n        validator_revert_t_address(value)\n    }\n\n    function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n        revert(0, 0)\n    }\n\n    function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n        revert(0, 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 panic_error_0x41() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n\n    function finalize_allocation(memPtr, size) {\n        let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n        // protect against overflow\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n\n    function allocate_memory(size) -> memPtr {\n        memPtr := allocate_unbounded()\n        finalize_allocation(memPtr, size)\n    }\n\n    function array_allocation_size_t_bytes_memory_ptr(length) -> size {\n        // Make sure we can allocate memory without overflow\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n        size := round_up_to_mul_of_32(length)\n\n        // add length slot\n        size := add(size, 0x20)\n\n    }\n\n    function copy_memory_to_memory_with_cleanup(src, dst, length) {\n\n        mcopy(dst, src, length)\n        mstore(add(dst, length), 0)\n\n    }\n\n    function abi_decode_available_length_t_bytes_memory_ptr_fromMemory(src, length, end) -> array {\n        array := allocate_memory(array_allocation_size_t_bytes_memory_ptr(length))\n        mstore(array, length)\n        let dst := add(array, 0x20)\n        if gt(add(src, length), end) { revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n        copy_memory_to_memory_with_cleanup(src, dst, length)\n    }\n\n    // bytes\n    function abi_decode_t_bytes_memory_ptr_fromMemory(offset, end) -> array {\n        if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n        let length := mload(offset)\n        array := abi_decode_available_length_t_bytes_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n    }\n\n    function abi_decode_tuple_t_addresst_addresst_bytes_memory_ptr_fromMemory(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_fromMemory(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 32\n\n            value1 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := mload(add(headStart, 64))\n            if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n            value2 := abi_decode_t_bytes_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function cleanup_t_uint256(value) -> cleaned {\n        cleaned := value\n    }\n\n    function panic_error_0x11() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\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_0x01() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x01)\n        revert(0, 0x24)\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_t_address__to_t_address_t_address__fromStack_reversed(headStart , value1, value0) -> tail {\n        tail := add(headStart, 64)\n\n        abi_encode_t_address_to_t_address_fromStack(value0,  add(headStart, 0))\n\n        abi_encode_t_address_to_t_address_fromStack(value1,  add(headStart, 32))\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 store_literal_in_memory_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65(memPtr) {\n\n        mstore(add(memPtr, 0), \"ERC1967: new implementation is n\")\n\n        mstore(add(memPtr, 32), \"ot a contract\")\n\n    }\n\n    function abi_encode_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 45)\n        store_literal_in_memory_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__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_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520(memPtr) {\n\n        mstore(add(memPtr, 0), \"Address: delegate call to non-co\")\n\n        mstore(add(memPtr, 32), \"ntract\")\n\n    }\n\n    function abi_encode_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 38)\n        store_literal_in_memory_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__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_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function array_length_t_bytes_memory_ptr(value) -> length {\n\n        length := mload(value)\n\n    }\n\n    function array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n        updated_pos := pos\n    }\n\n    function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n        let length := array_length_t_bytes_memory_ptr(value)\n        pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n        copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n        end := add(pos, length)\n    }\n\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value0) -> end {\n\n        pos := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value0,  pos)\n\n        end := pos\n    }\n\n    function array_length_t_string_memory_ptr(value) -> length {\n\n        length := mload(value)\n\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}\n","id":55,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a0604052604051610e6b380380610e6b83398101604081905261002291610414565b828161004f60017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd61048d565b5f516020610e245f395f51905f521461006a5761006a6104a0565b61007582825f61011f565b506100a3905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610461048d565b5f516020610e045f395f51905f52146100be576100be6104a0565b6001600160a01b0382166080525f516020610e045f395f51905f528281556040517f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f9061010e905f9086906104c3565b60405180910390a1505050506105fa565b6101288361014a565b5f825111806101345750805b15610145576101438383610189565b505b505050565b610153816101b7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606101ae8383604051806060016040528060278152602001610e4460279139610215565b90505b92915050565b6001600160a01b0381163b6101e75760405162461bcd60e51b81526004016101de9061052a565b60405180910390fd5b5f516020610e245f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60606001600160a01b0384163b61023e5760405162461bcd60e51b81526004016101de9061057c565b5f5f856001600160a01b03168560405161025891906105ad565b5f60405180830381855af49150503d805f8114610290576040519150601f19603f3d011682016040523d82523d5f602084013e610295565b606091505b5090925090506102a68282866102b2565b925050505b9392505050565b606083156102c15750816102ab565b8251156102d15782518084602001fd5b8160405162461bcd60e51b81526004016101de91906105e9565b5f6001600160a01b0382166101b1565b610304816102eb565b811461030e575f5ffd5b50565b80516101b1816102fb565b634e487b7160e01b5f52604160045260245ffd5b601f19601f83011681018181106001600160401b03821117156103555761035561031c565b6040525050565b5f61036660405190565b90506103728282610330565b919050565b5f6001600160401b0382111561038f5761038f61031c565b601f19601f83011660200192915050565b8281835e505f910152565b5f6103bd6103b884610377565b61035c565b9050828152602081018484840111156103d7576103d75f5ffd5b6103e28482856103a0565b509392505050565b5f82601f8301126103fc576103fc5f5ffd5b815161040c8482602086016103ab565b949350505050565b5f5f5f60608486031215610429576104295f5ffd5b5f6104348686610311565b935050602061044586828701610311565b92505060408401516001600160401b03811115610463576104635f5ffd5b61046f868287016103ea565b9150509250925092565b634e487b7160e01b5f52601160045260245ffd5b818103818111156101b1576101b1610479565b634e487b7160e01b5f52600160045260245ffd5b6104bd816102eb565b82525050565b604081016104d182856104b4565b6102ab60208301846104b4565b602d81525f602082017f455243313936373a206e657720696d706c656d656e746174696f6e206973206e81526c1bdd08184818dbdb9d1c9858dd609a1b602082015291505b5060400190565b602080825281016101b1816104de565b602681525f602082017f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f8152651b9d1c9858dd60d21b60208201529150610523565b602080825281016101b18161053a565b5f610595825190565b6105a38185602086016103a0565b9290920192915050565b5f6102ab828461058c565b5f6105c1825190565b8084526020840193506105d88185602086016103a0565b601f01601f19169290920192915050565b602080825281016101ae81846105b8565b6080516107d06106345f395f818160e501528181610139015281816101b90152818161020201528181610233015261025701526107d05ff3fe608060405260043610610042575f3560e01c80633659cfe6146100595780634f1ef286146100785780635c60da1b1461008b578063f851a440146100b557610051565b366100515761004f6100c9565b005b61004f6100c9565b348015610064575f5ffd5b5061004f6100733660046104f8565b6100e3565b61004f61008636600461056c565b610137565b348015610096575f5ffd5b5061009f6101b6565b6040516100ac91906105d2565b60405180910390f35b3480156100c0575f5ffd5b5061009f6101ff565b6100d1610255565b6100e16100dc6102a6565b6102d8565b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361012f5761012c8160405180602001604052805f8152505f6102f6565b50565b61012c6100c9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101ae576101a98383838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250600192506102f6915050565b505050565b6101a96100c9565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101f4576101ef6102a6565b905090565b6101fc6100c9565b90565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101f457507f000000000000000000000000000000000000000000000000000000000000000090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036100e15760405162461bcd60e51b815260040161029d906105e0565b60405180910390fd5b5f6101ef7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b365f5f375f5f365f845af43d5f5f3e8080156102f2573d5ff35b3d5ffd5b6102ff83610320565b5f8251118061030b5750805b156101a95761031a838361035f565b50505050565b6103298161038d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103848383604051806060016040528060278152602001610774602791396103f5565b90505b92915050565b6001600160a01b0381163b6103b45760405162461bcd60e51b815260040161029d90610698565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60606001600160a01b0384163b61041e5760405162461bcd60e51b815260040161029d906106ea565b5f5f856001600160a01b0316856040516104389190610726565b5f60405180830381855af49150503d805f8114610470576040519150601f19603f3d011682016040523d82523d5f602084013e610475565b606091505b5091509150610485828286610491565b925050505b9392505050565b606083156104a057508161048a565b8251156104b05782518084602001fd5b8160405162461bcd60e51b815260040161029d9190610762565b5f6001600160a01b038216610387565b6104e3816104ca565b811461012c575f5ffd5b8035610387816104da565b5f6020828403121561050b5761050b5f5ffd5b5f61051684846104ed565b949350505050565b5f5f83601f840112610531576105315f5ffd5b50813567ffffffffffffffff81111561054b5761054b5f5ffd5b602083019150836001820283011115610565576105655f5ffd5b9250929050565b5f5f5f60408486031215610581576105815f5ffd5b5f61058c86866104ed565b935050602084013567ffffffffffffffff8111156105ab576105ab5f5ffd5b6105b78682870161051e565b92509250509250925092565b6105cc816104ca565b82525050565b6020810161038782846105c3565b6020808252810161038781604281527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60208201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267604082015261195d60f21b606082015260800190565b602d81525f602082017f455243313936373a206e657720696d706c656d656e746174696f6e206973206e81526c1bdd08184818dbdb9d1c9858dd609a1b602082015291505b5060400190565b602080825281016103878161064c565b602681525f602082017f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f8152651b9d1c9858dd60d21b60208201529150610691565b60208082528101610387816106a8565b8281835e505f910152565b5f61070e825190565b61071c8185602086016106fa565b9290920192915050565b5f61048a8284610705565b5f61073a825190565b8084526020840193506107518185602086016106fa565b601f01601f19169290920192915050565b60208082528101610384818461073156fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d763479cb1e6882ed6ced7ef0f533f774a5b72c1464a1193205fd0874d2874bc64736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0xE6B CODESIZE SUB DUP1 PUSH2 0xE6B DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x414 JUMP JUMPDEST DUP3 DUP2 PUSH2 0x4F PUSH1 0x1 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBD PUSH2 0x48D JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0xE24 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE EQ PUSH2 0x6A JUMPI PUSH2 0x6A PUSH2 0x4A0 JUMP JUMPDEST PUSH2 0x75 DUP3 DUP3 PUSH0 PUSH2 0x11F JUMP JUMPDEST POP PUSH2 0xA3 SWAP1 POP PUSH1 0x1 PUSH32 0xB53127684A568B3173AE13B9F8A6016E243E63B6E8EE1178D6A717850B5D6104 PUSH2 0x48D JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0xE04 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE EQ PUSH2 0xBE JUMPI PUSH2 0xBE PUSH2 0x4A0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x80 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0xE04 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP3 DUP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0x7E644D79422F17C01E4894B5F4F588D331EBFA28653D42AE832DC59E38C9798F SWAP1 PUSH2 0x10E SWAP1 PUSH0 SWAP1 DUP7 SWAP1 PUSH2 0x4C3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP PUSH2 0x5FA JUMP JUMPDEST PUSH2 0x128 DUP4 PUSH2 0x14A JUMP JUMPDEST PUSH0 DUP3 MLOAD GT DUP1 PUSH2 0x134 JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x145 JUMPI PUSH2 0x143 DUP4 DUP4 PUSH2 0x189 JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x153 DUP2 PUSH2 0x1B7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1AE DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE44 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x215 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0x1E7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1DE SWAP1 PUSH2 0x52A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0xE24 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x23E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1DE SWAP1 PUSH2 0x57C JUMP JUMPDEST PUSH0 PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x258 SWAP2 SWAP1 PUSH2 0x5AD JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x290 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x295 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2A6 DUP3 DUP3 DUP7 PUSH2 0x2B2 JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x2C1 JUMPI POP DUP2 PUSH2 0x2AB JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x2D1 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1DE SWAP2 SWAP1 PUSH2 0x5E9 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1B1 JUMP JUMPDEST PUSH2 0x304 DUP2 PUSH2 0x2EB JUMP JUMPDEST DUP2 EQ PUSH2 0x30E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1B1 DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP2 ADD DUP2 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR ISZERO PUSH2 0x355 JUMPI PUSH2 0x355 PUSH2 0x31C JUMP JUMPDEST PUSH1 0x40 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH2 0x366 PUSH1 0x40 MLOAD SWAP1 JUMP JUMPDEST SWAP1 POP PUSH2 0x372 DUP3 DUP3 PUSH2 0x330 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x38F JUMPI PUSH2 0x38F PUSH2 0x31C JUMP JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP2 DUP4 MCOPY POP PUSH0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH0 PUSH2 0x3BD PUSH2 0x3B8 DUP5 PUSH2 0x377 JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x3D7 JUMPI PUSH2 0x3D7 PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x3E2 DUP5 DUP3 DUP6 PUSH2 0x3A0 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3FC JUMPI PUSH2 0x3FC PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x40C DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x3AB JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x429 JUMPI PUSH2 0x429 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x434 DUP7 DUP7 PUSH2 0x311 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x445 DUP7 DUP3 DUP8 ADD PUSH2 0x311 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x463 JUMPI PUSH2 0x463 PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x46F DUP7 DUP3 DUP8 ADD PUSH2 0x3EA JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x1B1 JUMPI PUSH2 0x1B1 PUSH2 0x479 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x4BD DUP2 PUSH2 0x2EB JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x4D1 DUP3 DUP6 PUSH2 0x4B4 JUMP JUMPDEST PUSH2 0x2AB PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4B4 JUMP JUMPDEST PUSH1 0x2D DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E DUP2 MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP2 POP JUMPDEST POP PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1B1 DUP2 PUSH2 0x4DE JUMP JUMPDEST PUSH1 0x26 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F DUP2 MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP2 POP PUSH2 0x523 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1B1 DUP2 PUSH2 0x53A JUMP JUMPDEST PUSH0 PUSH2 0x595 DUP3 MLOAD SWAP1 JUMP JUMPDEST PUSH2 0x5A3 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x3A0 JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x2AB DUP3 DUP5 PUSH2 0x58C JUMP JUMPDEST PUSH0 PUSH2 0x5C1 DUP3 MLOAD SWAP1 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH2 0x5D8 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x3A0 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x1AE DUP2 DUP5 PUSH2 0x5B8 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x7D0 PUSH2 0x634 PUSH0 CODECOPY PUSH0 DUP2 DUP2 PUSH1 0xE5 ADD MSTORE DUP2 DUP2 PUSH2 0x139 ADD MSTORE DUP2 DUP2 PUSH2 0x1B9 ADD MSTORE DUP2 DUP2 PUSH2 0x202 ADD MSTORE DUP2 DUP2 PUSH2 0x233 ADD MSTORE PUSH2 0x257 ADD MSTORE PUSH2 0x7D0 PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x42 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x59 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x78 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x8B JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0xB5 JUMPI PUSH2 0x51 JUMP JUMPDEST CALLDATASIZE PUSH2 0x51 JUMPI PUSH2 0x4F PUSH2 0xC9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x4F PUSH2 0xC9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x64 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x4F PUSH2 0x73 CALLDATASIZE PUSH1 0x4 PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0xE3 JUMP JUMPDEST PUSH2 0x4F PUSH2 0x86 CALLDATASIZE PUSH1 0x4 PUSH2 0x56C JUMP JUMPDEST PUSH2 0x137 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x96 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x9F PUSH2 0x1B6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAC SWAP2 SWAP1 PUSH2 0x5D2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x9F PUSH2 0x1FF JUMP JUMPDEST PUSH2 0xD1 PUSH2 0x255 JUMP JUMPDEST PUSH2 0xE1 PUSH2 0xDC PUSH2 0x2A6 JUMP JUMPDEST PUSH2 0x2D8 JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER SUB PUSH2 0x12F JUMPI PUSH2 0x12C DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 DUP2 MSTORE POP PUSH0 PUSH2 0x2F6 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x12C PUSH2 0xC9 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER SUB PUSH2 0x1AE JUMPI PUSH2 0x1A9 DUP4 DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH1 0x1 SWAP3 POP PUSH2 0x2F6 SWAP2 POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1A9 PUSH2 0xC9 JUMP JUMPDEST PUSH0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER SUB PUSH2 0x1F4 JUMPI PUSH2 0x1EF PUSH2 0x2A6 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1FC PUSH2 0xC9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER SUB PUSH2 0x1F4 JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER SUB PUSH2 0xE1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x29D SWAP1 PUSH2 0x5E0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x1EF PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH0 PUSH0 CALLDATACOPY PUSH0 PUSH0 CALLDATASIZE PUSH0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x2F2 JUMPI RETURNDATASIZE PUSH0 RETURN JUMPDEST RETURNDATASIZE PUSH0 REVERT JUMPDEST PUSH2 0x2FF DUP4 PUSH2 0x320 JUMP JUMPDEST PUSH0 DUP3 MLOAD GT DUP1 PUSH2 0x30B JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x1A9 JUMPI PUSH2 0x31A DUP4 DUP4 PUSH2 0x35F JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x329 DUP2 PUSH2 0x38D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x384 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x774 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x3F5 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0x3B4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x29D SWAP1 PUSH2 0x698 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x41E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x29D SWAP1 PUSH2 0x6EA JUMP JUMPDEST PUSH0 PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x438 SWAP2 SWAP1 PUSH2 0x726 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x470 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x475 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x485 DUP3 DUP3 DUP7 PUSH2 0x491 JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x4A0 JUMPI POP DUP2 PUSH2 0x48A JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x4B0 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x29D SWAP2 SWAP1 PUSH2 0x762 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x387 JUMP JUMPDEST PUSH2 0x4E3 DUP2 PUSH2 0x4CA JUMP JUMPDEST DUP2 EQ PUSH2 0x12C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x387 DUP2 PUSH2 0x4DA JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x50B JUMPI PUSH2 0x50B PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x516 DUP5 DUP5 PUSH2 0x4ED JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x531 JUMPI PUSH2 0x531 PUSH0 PUSH0 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x54B JUMPI PUSH2 0x54B PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x565 JUMPI PUSH2 0x565 PUSH0 PUSH0 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x581 JUMPI PUSH2 0x581 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x58C DUP7 DUP7 PUSH2 0x4ED JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5AB JUMPI PUSH2 0x5AB PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x5B7 DUP7 DUP3 DUP8 ADD PUSH2 0x51E JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x5CC DUP2 PUSH2 0x4CA JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x387 DUP3 DUP5 PUSH2 0x5C3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x387 DUP2 PUSH1 0x42 DUP2 MSTORE PUSH32 0x5472616E73706172656E745570677261646561626C6550726F78793A2061646D PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x696E2063616E6E6F742066616C6C6261636B20746F2070726F78792074617267 PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x195D PUSH1 0xF2 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x2D DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E DUP2 MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP2 POP JUMPDEST POP PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x387 DUP2 PUSH2 0x64C JUMP JUMPDEST PUSH1 0x26 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F DUP2 MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP2 POP PUSH2 0x691 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x387 DUP2 PUSH2 0x6A8 JUMP JUMPDEST DUP3 DUP2 DUP4 MCOPY POP PUSH0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH0 PUSH2 0x70E DUP3 MLOAD SWAP1 JUMP JUMPDEST PUSH2 0x71C DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x6FA JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x48A DUP3 DUP5 PUSH2 0x705 JUMP JUMPDEST PUSH0 PUSH2 0x73A DUP3 MLOAD SWAP1 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH2 0x751 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x6FA JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x384 DUP2 DUP5 PUSH2 0x731 JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x70667358221220D76347 SWAP13 0xB1 0xE6 DUP9 0x2E 0xD6 0xCE 0xD7 0xEF 0xF MSTORE8 EXTCODEHASH PUSH24 0x4A5B72C1464A1193205FD0874D2874BC64736F6C63430008 SHR STOP CALLER 0xB5 BALANCE 0x27 PUSH9 0x4A568B3173AE13B9F8 0xA6 ADD PUSH15 0x243E63B6E8EE1178D6A717850B5D61 SUB CALLDATASIZE ADDMOD SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC416464726573733A206C6F PUSH24 0x2D6C6576656C2064656C65676174652063616C6C20666169 PUSH13 0x65640000000000000000000000 ","sourceMap":"1653:3648:54:-:0;;;1976:499;;;;;;;;;;;;;;;;;;:::i;:::-;2091:6;2099:5;1050:54:45;1103:1;1058:41;1050:54;:::i;:::-;-1:-1:-1;;;;;;;;;;;1018:87:45;1011:95;;;;:::i;:::-;1116:39;1134:6;1142:5;1149;1116:17;:39::i;:::-;-1:-1:-1;2146:45:54::1;::::0;-1:-1:-1;2190:1:54::1;2154:32;2146:45;:::i;:::-;-1:-1:-1::0;;;;;;;;;;;2123:69:54::1;2116:77;;;;:::i;:::-;-1:-1:-1::0;;;;;2203:15:54;::::1;;::::0;-1:-1:-1;;;;;;;;;;;2392:20:54;;;2436:32:::1;::::0;::::1;::::0;::::1;::::0;2277:12:::1;::::0;2212:6;;2436:32:::1;:::i;:::-;;;;;;;;2106:369;1976:499:::0;;;1653:3648;;2188:295:46;2326:29;2337:17;2326:10;:29::i;:::-;2383:1;2369:4;:11;:15;:28;;;;2388:9;2369:28;2365:112;;;2413:53;2442:17;2461:4;2413:28;:53::i;:::-;;2365:112;2188:295;;;:::o;1902:152::-;1968:37;1987:17;1968:18;:37::i;:::-;2020:27;;-1:-1:-1;;;;;2020:27:46;;;;;;;;1902:152;:::o;6575:198:51:-;6658:12;6689:77;6710:6;6718:4;6689:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6682:84;;6575:198;;;;;:::o;1537:259:46:-;-1:-1:-1;;;;;1470:19:51;;;1610:95:46;;;;-1:-1:-1;;;1610:95:46;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;;;;;;;1715:74:46;;-1:-1:-1;;;;;;1715:74:46;-1:-1:-1;;;;;1715:74:46;;;;;;;;;;1537:259::o;6959:387:51:-;7100:12;-1:-1:-1;;;;;1470:19:51;;;7124:69;;;;-1:-1:-1;;;7124:69:51;;;;;;;:::i;:::-;7205:12;7219:23;7246:6;-1:-1:-1;;;;;7246:19:51;7266:4;7246:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7204:67:51;;-1:-1:-1;7204:67:51;-1:-1:-1;7288:51:51;7204:67;;7326:12;7288:16;:51::i;:::-;7281:58;;;;6959:387;;;;;;:::o;7566:692::-;7712:12;7740:7;7736:516;;;-1:-1:-1;7770:10:51;7763:17;;7736:516;7881:17;;:21;7877:365;;8075:10;8069:17;8135:15;8122:10;8118:2;8114:19;8107:44;7877:365;8214:12;8207:20;;-1:-1:-1;;;8207:20:51;;;;;;;;:::i;466:96:55:-;503:7;-1:-1:-1;;;;;400:54:55;;532:24;334:126;568:122;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:143::-;778:13;;800:33;778:13;800:33;:::i;1199:180::-;-1:-1:-1;;;1244:1:55;1237:88;1344:4;1341:1;1334:15;1368:4;1365:1;1358:15;1385:281;-1:-1:-1;;1183:2:55;1163:14;;1159:28;1460:6;1456:40;1598:6;1586:10;1583:22;-1:-1:-1;;;;;1550:10:55;1547:34;1544:62;1541:88;;;1609:18;;:::i;:::-;1645:2;1638:22;-1:-1:-1;;1385:281:55:o;1672:129::-;1706:6;1733:20;73:2;67:9;;7:75;1733:20;1723:30;;1762:33;1790:4;1782:6;1762:33;:::i;:::-;1672:129;;;:::o;1807:307::-;1868:4;-1:-1:-1;;;;;1950:6:55;1947:30;1944:56;;;1980:18;;:::i;:::-;-1:-1:-1;;1183:2:55;1163:14;;1159:28;2102:4;2092:15;;1807:307;-1:-1:-1;;1807:307:55:o;2120:139::-;2209:6;2204:3;2199;2193:23;-1:-1:-1;2250:1:55;2232:16;;2225:27;2120:139::o;2265:432::-;2353:5;2378:65;2394:48;2435:6;2394:48;:::i;:::-;2378:65;:::i;:::-;2369:74;;2466:6;2459:5;2452:21;2504:4;2497:5;2493:16;2542:3;2533:6;2528:3;2524:16;2521:25;2518:112;;;2549:79;1077:1;1074;1067:12;2549:79;2639:52;2684:6;2679:3;2674;2639:52;:::i;:::-;2359:338;2265:432;;;;;:::o;2716:353::-;2782:5;2831:3;2824:4;2816:6;2812:17;2808:27;2798:122;;2839:79;954:1;951;944:12;2839:79;2949:6;2943:13;2974:89;3059:3;3051:6;3044:4;3036:6;3032:17;2974:89;:::i;:::-;2965:98;2716:353;-1:-1:-1;;;;2716:353:55:o;3075:834::-;3172:6;3180;3188;3237:2;3225:9;3216:7;3212:23;3208:32;3205:119;;;3243:79;197:1;194;187:12;3243:79;3363:1;3388:64;3444:7;3424:9;3388:64;:::i;:::-;3378:74;;3334:128;3501:2;3527:64;3583:7;3574:6;3563:9;3559:22;3527:64;:::i;:::-;3517:74;;3472:129;3661:2;3650:9;3646:18;3640:25;-1:-1:-1;;;;;3684:6:55;3681:30;3678:117;;;3714:79;320:1;317;310:12;3714:79;3819:73;3884:7;3875:6;3864:9;3860:22;3819:73;:::i;:::-;3809:83;;3611:291;3075:834;;;;;:::o;3998:180::-;-1:-1:-1;;;4043:1:55;4036:88;4143:4;4140:1;4133:15;4167:4;4164:1;4157:15;4184:194;4315:9;;;4337:11;;;4334:37;;;4351:18;;:::i;4384:180::-;-1:-1:-1;;;4429:1:55;4422:88;4529:4;4526:1;4519:15;4553:4;4550:1;4543:15;4570:118;4657:24;4675:5;4657:24;:::i;:::-;4652:3;4645:37;4570:118;;:::o;4694:332::-;4853:2;4838:18;;4866:71;4842:9;4910:6;4866:71;:::i;:::-;4947:72;5015:2;5004:9;5000:18;4991:6;4947:72;:::i;5445:366::-;5672:2;5138:19;;5587:3;5190:4;5181:14;;5347:34;5324:58;;-1:-1:-1;;;5411:2:55;5399:15;;5392:40;5601:74;-1:-1:-1;5684:93:55;-1:-1:-1;5802:2:55;5793:12;;5445:366::o;5817:419::-;6021:2;6034:47;;;6006:18;;6098:131;6006:18;6098:131;:::i;6473:366::-;6700:2;5138:19;;6615:3;5190:4;5181:14;;6382:34;6359:58;;-1:-1:-1;;;6446:2:55;6434:15;;6427:33;6629:74;-1:-1:-1;6712:93:55;6242:225;6845:419;7049:2;7062:47;;;7034:18;;7126:131;7034:18;7126:131;:::i;7527:386::-;7631:3;7659:38;7691:5;7349:12;;7270:98;7659:38;7810:65;7868:6;7863:3;7856:4;7849:5;7845:16;7810:65;:::i;:::-;7891:16;;;;;7527:386;-1:-1:-1;;7527:386:55:o;7919:271::-;8049:3;8071:93;8160:3;8151:6;8071:93;:::i;8301:377::-;8389:3;8417:39;8450:5;7349:12;;7270:98;8417:39;5138:19;;;5190:4;5181:14;;8465:78;;8552:65;8610:6;8605:3;8598:4;8591:5;8587:16;8552:65;:::i;:::-;1183:2;1163:14;-1:-1:-1;;1159:28:55;8633:39;;;;;;-1:-1:-1;;8301:377:55:o;8684:313::-;8835:2;8848:47;;;8820:18;;8912:78;8820:18;8976:6;8912:78;:::i;8684:313::-;1653:3648:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_8853":{"entryPoint":null,"id":8853,"parameterSlots":0,"returnSlots":0},"@_8861":{"entryPoint":null,"id":8861,"parameterSlots":0,"returnSlots":0},"@_beforeFallback_8866":{"entryPoint":null,"id":8866,"parameterSlots":0,"returnSlots":0},"@_beforeFallback_9728":{"entryPoint":597,"id":9728,"parameterSlots":0,"returnSlots":0},"@_delegate_8826":{"entryPoint":728,"id":8826,"parameterSlots":1,"returnSlots":0},"@_fallback_8845":{"entryPoint":201,"id":8845,"parameterSlots":0,"returnSlots":0},"@_getAdmin_9737":{"entryPoint":null,"id":9737,"parameterSlots":0,"returnSlots":1},"@_getImplementation_8529":{"entryPoint":null,"id":8529,"parameterSlots":0,"returnSlots":1},"@_implementation_8496":{"entryPoint":678,"id":8496,"parameterSlots":0,"returnSlots":1},"@_setImplementation_8553":{"entryPoint":909,"id":8553,"parameterSlots":1,"returnSlots":0},"@_upgradeToAndCall_8598":{"entryPoint":758,"id":8598,"parameterSlots":3,"returnSlots":0},"@_upgradeTo_8568":{"entryPoint":800,"id":8568,"parameterSlots":1,"returnSlots":0},"@admin_9649":{"entryPoint":511,"id":9649,"parameterSlots":0,"returnSlots":1},"@functionDelegateCall_9414":{"entryPoint":863,"id":9414,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_9449":{"entryPoint":1013,"id":9449,"parameterSlots":3,"returnSlots":1},"@getAddressSlot_9529":{"entryPoint":null,"id":9529,"parameterSlots":1,"returnSlots":1},"@implementation_9663":{"entryPoint":438,"id":9663,"parameterSlots":0,"returnSlots":1},"@isContract_9204":{"entryPoint":null,"id":9204,"parameterSlots":1,"returnSlots":1},"@upgradeToAndCall_9698":{"entryPoint":311,"id":9698,"parameterSlots":3,"returnSlots":0},"@upgradeTo_9681":{"entryPoint":227,"id":9681,"parameterSlots":1,"returnSlots":0},"@verifyCallResult_9480":{"entryPoint":1169,"id":9480,"parameterSlots":3,"returnSlots":1},"abi_decode_t_address":{"entryPoint":1261,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes_calldata_ptr":{"entryPoint":1310,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_address":{"entryPoint":1272,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_calldata_ptr":{"entryPoint":1388,"id":null,"parameterSlots":2,"returnSlots":3},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":1475,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":1797,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack":{"entryPoint":1841,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65_to_t_string_memory_ptr_fromStack":{"entryPoint":1612,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520_to_t_string_memory_ptr_fromStack":{"entryPoint":1704,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_f5d2ea39d7e6c7d19dc32ccc2bd7ca26b7aa4a603ef4aa6f2b205c93c3ffe43d_to_t_string_memory_ptr_fromStack":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":1830,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":1490,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":1890,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":1688,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":1770,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_f5d2ea39d7e6c7d19dc32ccc2bd7ca26b7aa4a603ef4aa6f2b205c93c3ffe43d__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":1504,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"array_length_t_bytes_memory_ptr":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_string_memory_ptr":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_address":{"entryPoint":1226,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":1786,"id":null,"parameterSlots":3,"returnSlots":0},"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"store_literal_in_memory_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_f5d2ea39d7e6c7d19dc32ccc2bd7ca26b7aa4a603ef4aa6f2b205c93c3ffe43d":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_address":{"entryPoint":1242,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:8460:55","nodeType":"YulBlock","src":"0:8460:55","statements":[{"body":{"nativeSrc":"47:35:55","nodeType":"YulBlock","src":"47:35:55","statements":[{"nativeSrc":"57:19:55","nodeType":"YulAssignment","src":"57:19:55","value":{"arguments":[{"kind":"number","nativeSrc":"73:2:55","nodeType":"YulLiteral","src":"73:2:55","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"67:5:55","nodeType":"YulIdentifier","src":"67:5:55"},"nativeSrc":"67:9:55","nodeType":"YulFunctionCall","src":"67:9:55"},"variableNames":[{"name":"memPtr","nativeSrc":"57:6:55","nodeType":"YulIdentifier","src":"57:6:55"}]}]},"name":"allocate_unbounded","nativeSrc":"7:75:55","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"40:6:55","nodeType":"YulTypedName","src":"40:6:55","type":""}],"src":"7:75:55"},{"body":{"nativeSrc":"177:28:55","nodeType":"YulBlock","src":"177:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"194:1:55","nodeType":"YulLiteral","src":"194:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"197:1:55","nodeType":"YulLiteral","src":"197:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"187:6:55","nodeType":"YulIdentifier","src":"187:6:55"},"nativeSrc":"187:12:55","nodeType":"YulFunctionCall","src":"187:12:55"},"nativeSrc":"187:12:55","nodeType":"YulExpressionStatement","src":"187:12:55"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"88:117:55","nodeType":"YulFunctionDefinition","src":"88:117:55"},{"body":{"nativeSrc":"300:28:55","nodeType":"YulBlock","src":"300:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"317:1:55","nodeType":"YulLiteral","src":"317:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"320:1:55","nodeType":"YulLiteral","src":"320:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"310:6:55","nodeType":"YulIdentifier","src":"310:6:55"},"nativeSrc":"310:12:55","nodeType":"YulFunctionCall","src":"310:12:55"},"nativeSrc":"310:12:55","nodeType":"YulExpressionStatement","src":"310:12:55"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"211:117:55","nodeType":"YulFunctionDefinition","src":"211:117:55"},{"body":{"nativeSrc":"379:81:55","nodeType":"YulBlock","src":"379:81:55","statements":[{"nativeSrc":"389:65:55","nodeType":"YulAssignment","src":"389:65:55","value":{"arguments":[{"name":"value","nativeSrc":"404:5:55","nodeType":"YulIdentifier","src":"404:5:55"},{"kind":"number","nativeSrc":"411:42:55","nodeType":"YulLiteral","src":"411:42:55","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"400:3:55","nodeType":"YulIdentifier","src":"400:3:55"},"nativeSrc":"400:54:55","nodeType":"YulFunctionCall","src":"400:54:55"},"variableNames":[{"name":"cleaned","nativeSrc":"389:7:55","nodeType":"YulIdentifier","src":"389:7:55"}]}]},"name":"cleanup_t_uint160","nativeSrc":"334:126:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"361:5:55","nodeType":"YulTypedName","src":"361:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"371:7:55","nodeType":"YulTypedName","src":"371:7:55","type":""}],"src":"334:126:55"},{"body":{"nativeSrc":"511:51:55","nodeType":"YulBlock","src":"511:51:55","statements":[{"nativeSrc":"521:35:55","nodeType":"YulAssignment","src":"521:35:55","value":{"arguments":[{"name":"value","nativeSrc":"550:5:55","nodeType":"YulIdentifier","src":"550:5:55"}],"functionName":{"name":"cleanup_t_uint160","nativeSrc":"532:17:55","nodeType":"YulIdentifier","src":"532:17:55"},"nativeSrc":"532:24:55","nodeType":"YulFunctionCall","src":"532:24:55"},"variableNames":[{"name":"cleaned","nativeSrc":"521:7:55","nodeType":"YulIdentifier","src":"521:7:55"}]}]},"name":"cleanup_t_address","nativeSrc":"466:96:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"493:5:55","nodeType":"YulTypedName","src":"493:5:55","type":""}],"returnVariables":[{"name":"cleaned","nativeSrc":"503:7:55","nodeType":"YulTypedName","src":"503:7:55","type":""}],"src":"466:96:55"},{"body":{"nativeSrc":"611:79:55","nodeType":"YulBlock","src":"611:79:55","statements":[{"body":{"nativeSrc":"668:16:55","nodeType":"YulBlock","src":"668:16:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"677:1:55","nodeType":"YulLiteral","src":"677:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"680:1:55","nodeType":"YulLiteral","src":"680:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"670:6:55","nodeType":"YulIdentifier","src":"670:6:55"},"nativeSrc":"670:12:55","nodeType":"YulFunctionCall","src":"670:12:55"},"nativeSrc":"670:12:55","nodeType":"YulExpressionStatement","src":"670:12:55"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"634:5:55","nodeType":"YulIdentifier","src":"634:5:55"},{"arguments":[{"name":"value","nativeSrc":"659:5:55","nodeType":"YulIdentifier","src":"659:5:55"}],"functionName":{"name":"cleanup_t_address","nativeSrc":"641:17:55","nodeType":"YulIdentifier","src":"641:17:55"},"nativeSrc":"641:24:55","nodeType":"YulFunctionCall","src":"641:24:55"}],"functionName":{"name":"eq","nativeSrc":"631:2:55","nodeType":"YulIdentifier","src":"631:2:55"},"nativeSrc":"631:35:55","nodeType":"YulFunctionCall","src":"631:35:55"}],"functionName":{"name":"iszero","nativeSrc":"624:6:55","nodeType":"YulIdentifier","src":"624:6:55"},"nativeSrc":"624:43:55","nodeType":"YulFunctionCall","src":"624:43:55"},"nativeSrc":"621:63:55","nodeType":"YulIf","src":"621:63:55"}]},"name":"validator_revert_t_address","nativeSrc":"568:122:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"604:5:55","nodeType":"YulTypedName","src":"604:5:55","type":""}],"src":"568:122:55"},{"body":{"nativeSrc":"748:87:55","nodeType":"YulBlock","src":"748:87:55","statements":[{"nativeSrc":"758:29:55","nodeType":"YulAssignment","src":"758:29:55","value":{"arguments":[{"name":"offset","nativeSrc":"780:6:55","nodeType":"YulIdentifier","src":"780:6:55"}],"functionName":{"name":"calldataload","nativeSrc":"767:12:55","nodeType":"YulIdentifier","src":"767:12:55"},"nativeSrc":"767:20:55","nodeType":"YulFunctionCall","src":"767:20:55"},"variableNames":[{"name":"value","nativeSrc":"758:5:55","nodeType":"YulIdentifier","src":"758:5:55"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"823:5:55","nodeType":"YulIdentifier","src":"823:5:55"}],"functionName":{"name":"validator_revert_t_address","nativeSrc":"796:26:55","nodeType":"YulIdentifier","src":"796:26:55"},"nativeSrc":"796:33:55","nodeType":"YulFunctionCall","src":"796:33:55"},"nativeSrc":"796:33:55","nodeType":"YulExpressionStatement","src":"796:33:55"}]},"name":"abi_decode_t_address","nativeSrc":"696:139:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"726:6:55","nodeType":"YulTypedName","src":"726:6:55","type":""},{"name":"end","nativeSrc":"734:3:55","nodeType":"YulTypedName","src":"734:3:55","type":""}],"returnVariables":[{"name":"value","nativeSrc":"742:5:55","nodeType":"YulTypedName","src":"742:5:55","type":""}],"src":"696:139:55"},{"body":{"nativeSrc":"907:263:55","nodeType":"YulBlock","src":"907:263:55","statements":[{"body":{"nativeSrc":"953:83:55","nodeType":"YulBlock","src":"953:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"955:77:55","nodeType":"YulIdentifier","src":"955:77:55"},"nativeSrc":"955:79:55","nodeType":"YulFunctionCall","src":"955:79:55"},"nativeSrc":"955:79:55","nodeType":"YulExpressionStatement","src":"955:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"928:7:55","nodeType":"YulIdentifier","src":"928:7:55"},{"name":"headStart","nativeSrc":"937:9:55","nodeType":"YulIdentifier","src":"937:9:55"}],"functionName":{"name":"sub","nativeSrc":"924:3:55","nodeType":"YulIdentifier","src":"924:3:55"},"nativeSrc":"924:23:55","nodeType":"YulFunctionCall","src":"924:23:55"},{"kind":"number","nativeSrc":"949:2:55","nodeType":"YulLiteral","src":"949:2:55","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"920:3:55","nodeType":"YulIdentifier","src":"920:3:55"},"nativeSrc":"920:32:55","nodeType":"YulFunctionCall","src":"920:32:55"},"nativeSrc":"917:119:55","nodeType":"YulIf","src":"917:119:55"},{"nativeSrc":"1046:117:55","nodeType":"YulBlock","src":"1046:117:55","statements":[{"nativeSrc":"1061:15:55","nodeType":"YulVariableDeclaration","src":"1061:15:55","value":{"kind":"number","nativeSrc":"1075:1:55","nodeType":"YulLiteral","src":"1075:1:55","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"1065:6:55","nodeType":"YulTypedName","src":"1065:6:55","type":""}]},{"nativeSrc":"1090:63:55","nodeType":"YulAssignment","src":"1090:63:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1125:9:55","nodeType":"YulIdentifier","src":"1125:9:55"},{"name":"offset","nativeSrc":"1136:6:55","nodeType":"YulIdentifier","src":"1136:6:55"}],"functionName":{"name":"add","nativeSrc":"1121:3:55","nodeType":"YulIdentifier","src":"1121:3:55"},"nativeSrc":"1121:22:55","nodeType":"YulFunctionCall","src":"1121:22:55"},{"name":"dataEnd","nativeSrc":"1145:7:55","nodeType":"YulIdentifier","src":"1145:7:55"}],"functionName":{"name":"abi_decode_t_address","nativeSrc":"1100:20:55","nodeType":"YulIdentifier","src":"1100:20:55"},"nativeSrc":"1100:53:55","nodeType":"YulFunctionCall","src":"1100:53:55"},"variableNames":[{"name":"value0","nativeSrc":"1090:6:55","nodeType":"YulIdentifier","src":"1090:6:55"}]}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"841:329:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"877:9:55","nodeType":"YulTypedName","src":"877:9:55","type":""},{"name":"dataEnd","nativeSrc":"888:7:55","nodeType":"YulTypedName","src":"888:7:55","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"900:6:55","nodeType":"YulTypedName","src":"900:6:55","type":""}],"src":"841:329:55"},{"body":{"nativeSrc":"1265:28:55","nodeType":"YulBlock","src":"1265:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1282:1:55","nodeType":"YulLiteral","src":"1282:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"1285:1:55","nodeType":"YulLiteral","src":"1285:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1275:6:55","nodeType":"YulIdentifier","src":"1275:6:55"},"nativeSrc":"1275:12:55","nodeType":"YulFunctionCall","src":"1275:12:55"},"nativeSrc":"1275:12:55","nodeType":"YulExpressionStatement","src":"1275:12:55"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nativeSrc":"1176:117:55","nodeType":"YulFunctionDefinition","src":"1176:117:55"},{"body":{"nativeSrc":"1388:28:55","nodeType":"YulBlock","src":"1388:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1405:1:55","nodeType":"YulLiteral","src":"1405:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"1408:1:55","nodeType":"YulLiteral","src":"1408:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1398:6:55","nodeType":"YulIdentifier","src":"1398:6:55"},"nativeSrc":"1398:12:55","nodeType":"YulFunctionCall","src":"1398:12:55"},"nativeSrc":"1398:12:55","nodeType":"YulExpressionStatement","src":"1398:12:55"}]},"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nativeSrc":"1299:117:55","nodeType":"YulFunctionDefinition","src":"1299:117:55"},{"body":{"nativeSrc":"1511:28:55","nodeType":"YulBlock","src":"1511:28:55","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1528:1:55","nodeType":"YulLiteral","src":"1528:1:55","type":"","value":"0"},{"kind":"number","nativeSrc":"1531:1:55","nodeType":"YulLiteral","src":"1531:1:55","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1521:6:55","nodeType":"YulIdentifier","src":"1521:6:55"},"nativeSrc":"1521:12:55","nodeType":"YulFunctionCall","src":"1521:12:55"},"nativeSrc":"1521:12:55","nodeType":"YulExpressionStatement","src":"1521:12:55"}]},"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nativeSrc":"1422:117:55","nodeType":"YulFunctionDefinition","src":"1422:117:55"},{"body":{"nativeSrc":"1632:478:55","nodeType":"YulBlock","src":"1632:478:55","statements":[{"body":{"nativeSrc":"1681:83:55","nodeType":"YulBlock","src":"1681:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nativeSrc":"1683:77:55","nodeType":"YulIdentifier","src":"1683:77:55"},"nativeSrc":"1683:79:55","nodeType":"YulFunctionCall","src":"1683:79:55"},"nativeSrc":"1683:79:55","nodeType":"YulExpressionStatement","src":"1683:79:55"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"1660:6:55","nodeType":"YulIdentifier","src":"1660:6:55"},{"kind":"number","nativeSrc":"1668:4:55","nodeType":"YulLiteral","src":"1668:4:55","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"1656:3:55","nodeType":"YulIdentifier","src":"1656:3:55"},"nativeSrc":"1656:17:55","nodeType":"YulFunctionCall","src":"1656:17:55"},{"name":"end","nativeSrc":"1675:3:55","nodeType":"YulIdentifier","src":"1675:3:55"}],"functionName":{"name":"slt","nativeSrc":"1652:3:55","nodeType":"YulIdentifier","src":"1652:3:55"},"nativeSrc":"1652:27:55","nodeType":"YulFunctionCall","src":"1652:27:55"}],"functionName":{"name":"iszero","nativeSrc":"1645:6:55","nodeType":"YulIdentifier","src":"1645:6:55"},"nativeSrc":"1645:35:55","nodeType":"YulFunctionCall","src":"1645:35:55"},"nativeSrc":"1642:122:55","nodeType":"YulIf","src":"1642:122:55"},{"nativeSrc":"1773:30:55","nodeType":"YulAssignment","src":"1773:30:55","value":{"arguments":[{"name":"offset","nativeSrc":"1796:6:55","nodeType":"YulIdentifier","src":"1796:6:55"}],"functionName":{"name":"calldataload","nativeSrc":"1783:12:55","nodeType":"YulIdentifier","src":"1783:12:55"},"nativeSrc":"1783:20:55","nodeType":"YulFunctionCall","src":"1783:20:55"},"variableNames":[{"name":"length","nativeSrc":"1773:6:55","nodeType":"YulIdentifier","src":"1773:6:55"}]},{"body":{"nativeSrc":"1846:83:55","nodeType":"YulBlock","src":"1846:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nativeSrc":"1848:77:55","nodeType":"YulIdentifier","src":"1848:77:55"},"nativeSrc":"1848:79:55","nodeType":"YulFunctionCall","src":"1848:79:55"},"nativeSrc":"1848:79:55","nodeType":"YulExpressionStatement","src":"1848:79:55"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"1818:6:55","nodeType":"YulIdentifier","src":"1818:6:55"},{"kind":"number","nativeSrc":"1826:18:55","nodeType":"YulLiteral","src":"1826:18:55","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1815:2:55","nodeType":"YulIdentifier","src":"1815:2:55"},"nativeSrc":"1815:30:55","nodeType":"YulFunctionCall","src":"1815:30:55"},"nativeSrc":"1812:117:55","nodeType":"YulIf","src":"1812:117:55"},{"nativeSrc":"1938:29:55","nodeType":"YulAssignment","src":"1938:29:55","value":{"arguments":[{"name":"offset","nativeSrc":"1954:6:55","nodeType":"YulIdentifier","src":"1954:6:55"},{"kind":"number","nativeSrc":"1962:4:55","nodeType":"YulLiteral","src":"1962:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1950:3:55","nodeType":"YulIdentifier","src":"1950:3:55"},"nativeSrc":"1950:17:55","nodeType":"YulFunctionCall","src":"1950:17:55"},"variableNames":[{"name":"arrayPos","nativeSrc":"1938:8:55","nodeType":"YulIdentifier","src":"1938:8:55"}]},{"body":{"nativeSrc":"2021:83:55","nodeType":"YulBlock","src":"2021:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nativeSrc":"2023:77:55","nodeType":"YulIdentifier","src":"2023:77:55"},"nativeSrc":"2023:79:55","nodeType":"YulFunctionCall","src":"2023:79:55"},"nativeSrc":"2023:79:55","nodeType":"YulExpressionStatement","src":"2023:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"arrayPos","nativeSrc":"1986:8:55","nodeType":"YulIdentifier","src":"1986:8:55"},{"arguments":[{"name":"length","nativeSrc":"2000:6:55","nodeType":"YulIdentifier","src":"2000:6:55"},{"kind":"number","nativeSrc":"2008:4:55","nodeType":"YulLiteral","src":"2008:4:55","type":"","value":"0x01"}],"functionName":{"name":"mul","nativeSrc":"1996:3:55","nodeType":"YulIdentifier","src":"1996:3:55"},"nativeSrc":"1996:17:55","nodeType":"YulFunctionCall","src":"1996:17:55"}],"functionName":{"name":"add","nativeSrc":"1982:3:55","nodeType":"YulIdentifier","src":"1982:3:55"},"nativeSrc":"1982:32:55","nodeType":"YulFunctionCall","src":"1982:32:55"},{"name":"end","nativeSrc":"2016:3:55","nodeType":"YulIdentifier","src":"2016:3:55"}],"functionName":{"name":"gt","nativeSrc":"1979:2:55","nodeType":"YulIdentifier","src":"1979:2:55"},"nativeSrc":"1979:41:55","nodeType":"YulFunctionCall","src":"1979:41:55"},"nativeSrc":"1976:128:55","nodeType":"YulIf","src":"1976:128:55"}]},"name":"abi_decode_t_bytes_calldata_ptr","nativeSrc":"1558:552:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1599:6:55","nodeType":"YulTypedName","src":"1599:6:55","type":""},{"name":"end","nativeSrc":"1607:3:55","nodeType":"YulTypedName","src":"1607:3:55","type":""}],"returnVariables":[{"name":"arrayPos","nativeSrc":"1615:8:55","nodeType":"YulTypedName","src":"1615:8:55","type":""},{"name":"length","nativeSrc":"1625:6:55","nodeType":"YulTypedName","src":"1625:6:55","type":""}],"src":"1558:552:55"},{"body":{"nativeSrc":"2218:570:55","nodeType":"YulBlock","src":"2218:570:55","statements":[{"body":{"nativeSrc":"2264:83:55","nodeType":"YulBlock","src":"2264:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nativeSrc":"2266:77:55","nodeType":"YulIdentifier","src":"2266:77:55"},"nativeSrc":"2266:79:55","nodeType":"YulFunctionCall","src":"2266:79:55"},"nativeSrc":"2266:79:55","nodeType":"YulExpressionStatement","src":"2266:79:55"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2239:7:55","nodeType":"YulIdentifier","src":"2239:7:55"},{"name":"headStart","nativeSrc":"2248:9:55","nodeType":"YulIdentifier","src":"2248:9:55"}],"functionName":{"name":"sub","nativeSrc":"2235:3:55","nodeType":"YulIdentifier","src":"2235:3:55"},"nativeSrc":"2235:23:55","nodeType":"YulFunctionCall","src":"2235:23:55"},{"kind":"number","nativeSrc":"2260:2:55","nodeType":"YulLiteral","src":"2260:2:55","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"2231:3:55","nodeType":"YulIdentifier","src":"2231:3:55"},"nativeSrc":"2231:32:55","nodeType":"YulFunctionCall","src":"2231:32:55"},"nativeSrc":"2228:119:55","nodeType":"YulIf","src":"2228:119:55"},{"nativeSrc":"2357:117:55","nodeType":"YulBlock","src":"2357:117:55","statements":[{"nativeSrc":"2372:15:55","nodeType":"YulVariableDeclaration","src":"2372:15:55","value":{"kind":"number","nativeSrc":"2386:1:55","nodeType":"YulLiteral","src":"2386:1:55","type":"","value":"0"},"variables":[{"name":"offset","nativeSrc":"2376:6:55","nodeType":"YulTypedName","src":"2376:6:55","type":""}]},{"nativeSrc":"2401:63:55","nodeType":"YulAssignment","src":"2401:63:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2436:9:55","nodeType":"YulIdentifier","src":"2436:9:55"},{"name":"offset","nativeSrc":"2447:6:55","nodeType":"YulIdentifier","src":"2447:6:55"}],"functionName":{"name":"add","nativeSrc":"2432:3:55","nodeType":"YulIdentifier","src":"2432:3:55"},"nativeSrc":"2432:22:55","nodeType":"YulFunctionCall","src":"2432:22:55"},{"name":"dataEnd","nativeSrc":"2456:7:55","nodeType":"YulIdentifier","src":"2456:7:55"}],"functionName":{"name":"abi_decode_t_address","nativeSrc":"2411:20:55","nodeType":"YulIdentifier","src":"2411:20:55"},"nativeSrc":"2411:53:55","nodeType":"YulFunctionCall","src":"2411:53:55"},"variableNames":[{"name":"value0","nativeSrc":"2401:6:55","nodeType":"YulIdentifier","src":"2401:6:55"}]}]},{"nativeSrc":"2484:297:55","nodeType":"YulBlock","src":"2484:297:55","statements":[{"nativeSrc":"2499:46:55","nodeType":"YulVariableDeclaration","src":"2499:46:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2530:9:55","nodeType":"YulIdentifier","src":"2530:9:55"},{"kind":"number","nativeSrc":"2541:2:55","nodeType":"YulLiteral","src":"2541:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2526:3:55","nodeType":"YulIdentifier","src":"2526:3:55"},"nativeSrc":"2526:18:55","nodeType":"YulFunctionCall","src":"2526:18:55"}],"functionName":{"name":"calldataload","nativeSrc":"2513:12:55","nodeType":"YulIdentifier","src":"2513:12:55"},"nativeSrc":"2513:32:55","nodeType":"YulFunctionCall","src":"2513:32:55"},"variables":[{"name":"offset","nativeSrc":"2503:6:55","nodeType":"YulTypedName","src":"2503:6:55","type":""}]},{"body":{"nativeSrc":"2592:83:55","nodeType":"YulBlock","src":"2592:83:55","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nativeSrc":"2594:77:55","nodeType":"YulIdentifier","src":"2594:77:55"},"nativeSrc":"2594:79:55","nodeType":"YulFunctionCall","src":"2594:79:55"},"nativeSrc":"2594:79:55","nodeType":"YulExpressionStatement","src":"2594:79:55"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"2564:6:55","nodeType":"YulIdentifier","src":"2564:6:55"},{"kind":"number","nativeSrc":"2572:18:55","nodeType":"YulLiteral","src":"2572:18:55","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"2561:2:55","nodeType":"YulIdentifier","src":"2561:2:55"},"nativeSrc":"2561:30:55","nodeType":"YulFunctionCall","src":"2561:30:55"},"nativeSrc":"2558:117:55","nodeType":"YulIf","src":"2558:117:55"},{"nativeSrc":"2689:82:55","nodeType":"YulAssignment","src":"2689:82:55","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2743:9:55","nodeType":"YulIdentifier","src":"2743:9:55"},{"name":"offset","nativeSrc":"2754:6:55","nodeType":"YulIdentifier","src":"2754:6:55"}],"functionName":{"name":"add","nativeSrc":"2739:3:55","nodeType":"YulIdentifier","src":"2739:3:55"},"nativeSrc":"2739:22:55","nodeType":"YulFunctionCall","src":"2739:22:55"},{"name":"dataEnd","nativeSrc":"2763:7:55","nodeType":"YulIdentifier","src":"2763:7:55"}],"functionName":{"name":"abi_decode_t_bytes_calldata_ptr","nativeSrc":"2707:31:55","nodeType":"YulIdentifier","src":"2707:31:55"},"nativeSrc":"2707:64:55","nodeType":"YulFunctionCall","src":"2707:64:55"},"variableNames":[{"name":"value1","nativeSrc":"2689:6:55","nodeType":"YulIdentifier","src":"2689:6:55"},{"name":"value2","nativeSrc":"2697:6:55","nodeType":"YulIdentifier","src":"2697:6:55"}]}]}]},"name":"abi_decode_tuple_t_addresst_bytes_calldata_ptr","nativeSrc":"2116:672:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2172:9:55","nodeType":"YulTypedName","src":"2172:9:55","type":""},{"name":"dataEnd","nativeSrc":"2183:7:55","nodeType":"YulTypedName","src":"2183:7:55","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2195:6:55","nodeType":"YulTypedName","src":"2195:6:55","type":""},{"name":"value1","nativeSrc":"2203:6:55","nodeType":"YulTypedName","src":"2203:6:55","type":""},{"name":"value2","nativeSrc":"2211:6:55","nodeType":"YulTypedName","src":"2211:6:55","type":""}],"src":"2116:672:55"},{"body":{"nativeSrc":"2859:53:55","nodeType":"YulBlock","src":"2859:53:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"2876:3:55","nodeType":"YulIdentifier","src":"2876:3:55"},{"arguments":[{"name":"value","nativeSrc":"2899:5:55","nodeType":"YulIdentifier","src":"2899:5:55"}],"functionName":{"name":"cleanup_t_address","nativeSrc":"2881:17:55","nodeType":"YulIdentifier","src":"2881:17:55"},"nativeSrc":"2881:24:55","nodeType":"YulFunctionCall","src":"2881:24:55"}],"functionName":{"name":"mstore","nativeSrc":"2869:6:55","nodeType":"YulIdentifier","src":"2869:6:55"},"nativeSrc":"2869:37:55","nodeType":"YulFunctionCall","src":"2869:37:55"},"nativeSrc":"2869:37:55","nodeType":"YulExpressionStatement","src":"2869:37:55"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"2794:118:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2847:5:55","nodeType":"YulTypedName","src":"2847:5:55","type":""},{"name":"pos","nativeSrc":"2854:3:55","nodeType":"YulTypedName","src":"2854:3:55","type":""}],"src":"2794:118:55"},{"body":{"nativeSrc":"3016:124:55","nodeType":"YulBlock","src":"3016:124:55","statements":[{"nativeSrc":"3026:26:55","nodeType":"YulAssignment","src":"3026:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"3038:9:55","nodeType":"YulIdentifier","src":"3038:9:55"},{"kind":"number","nativeSrc":"3049:2:55","nodeType":"YulLiteral","src":"3049:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3034:3:55","nodeType":"YulIdentifier","src":"3034:3:55"},"nativeSrc":"3034:18:55","nodeType":"YulFunctionCall","src":"3034:18:55"},"variableNames":[{"name":"tail","nativeSrc":"3026:4:55","nodeType":"YulIdentifier","src":"3026:4:55"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"3106:6:55","nodeType":"YulIdentifier","src":"3106:6:55"},{"arguments":[{"name":"headStart","nativeSrc":"3119:9:55","nodeType":"YulIdentifier","src":"3119:9:55"},{"kind":"number","nativeSrc":"3130:1:55","nodeType":"YulLiteral","src":"3130:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"3115:3:55","nodeType":"YulIdentifier","src":"3115:3:55"},"nativeSrc":"3115:17:55","nodeType":"YulFunctionCall","src":"3115:17:55"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nativeSrc":"3062:43:55","nodeType":"YulIdentifier","src":"3062:43:55"},"nativeSrc":"3062:71:55","nodeType":"YulFunctionCall","src":"3062:71:55"},"nativeSrc":"3062:71:55","nodeType":"YulExpressionStatement","src":"3062:71:55"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"2918:222:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2988:9:55","nodeType":"YulTypedName","src":"2988:9:55","type":""},{"name":"value0","nativeSrc":"3000:6:55","nodeType":"YulTypedName","src":"3000:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3011:4:55","nodeType":"YulTypedName","src":"3011:4:55","type":""}],"src":"2918:222:55"},{"body":{"nativeSrc":"3242:73:55","nodeType":"YulBlock","src":"3242:73:55","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"3259:3:55","nodeType":"YulIdentifier","src":"3259:3:55"},{"name":"length","nativeSrc":"3264:6:55","nodeType":"YulIdentifier","src":"3264:6:55"}],"functionName":{"name":"mstore","nativeSrc":"3252:6:55","nodeType":"YulIdentifier","src":"3252:6:55"},"nativeSrc":"3252:19:55","nodeType":"YulFunctionCall","src":"3252:19:55"},"nativeSrc":"3252:19:55","nodeType":"YulExpressionStatement","src":"3252:19:55"},{"nativeSrc":"3280:29:55","nodeType":"YulAssignment","src":"3280:29:55","value":{"arguments":[{"name":"pos","nativeSrc":"3299:3:55","nodeType":"YulIdentifier","src":"3299:3:55"},{"kind":"number","nativeSrc":"3304:4:55","nodeType":"YulLiteral","src":"3304:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3295:3:55","nodeType":"YulIdentifier","src":"3295:3:55"},"nativeSrc":"3295:14:55","nodeType":"YulFunctionCall","src":"3295:14:55"},"variableNames":[{"name":"updated_pos","nativeSrc":"3280:11:55","nodeType":"YulIdentifier","src":"3280:11:55"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"3146:169:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"3214:3:55","nodeType":"YulTypedName","src":"3214:3:55","type":""},{"name":"length","nativeSrc":"3219:6:55","nodeType":"YulTypedName","src":"3219:6:55","type":""}],"returnVariables":[{"name":"updated_pos","nativeSrc":"3230:11:55","nodeType":"YulTypedName","src":"3230:11:55","type":""}],"src":"3146:169:55"},{"body":{"nativeSrc":"3427:184:55","nodeType":"YulBlock","src":"3427:184:55","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"3449:6:55","nodeType":"YulIdentifier","src":"3449:6:55"},{"kind":"number","nativeSrc":"3457:1:55","nodeType":"YulLiteral","src":"3457:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"3445:3:55","nodeType":"YulIdentifier","src":"3445:3:55"},"nativeSrc":"3445:14:55","nodeType":"YulFunctionCall","src":"3445:14:55"},{"hexValue":"5472616e73706172656e745570677261646561626c6550726f78793a2061646d","kind":"string","nativeSrc":"3461:34:55","nodeType":"YulLiteral","src":"3461:34:55","type":"","value":"TransparentUpgradeableProxy: adm"}],"functionName":{"name":"mstore","nativeSrc":"3438:6:55","nodeType":"YulIdentifier","src":"3438:6:55"},"nativeSrc":"3438:58:55","nodeType":"YulFunctionCall","src":"3438:58:55"},"nativeSrc":"3438:58:55","nodeType":"YulExpressionStatement","src":"3438:58:55"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"3517:6:55","nodeType":"YulIdentifier","src":"3517:6:55"},{"kind":"number","nativeSrc":"3525:2:55","nodeType":"YulLiteral","src":"3525:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3513:3:55","nodeType":"YulIdentifier","src":"3513:3:55"},"nativeSrc":"3513:15:55","nodeType":"YulFunctionCall","src":"3513:15:55"},{"hexValue":"696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267","kind":"string","nativeSrc":"3530:34:55","nodeType":"YulLiteral","src":"3530:34:55","type":"","value":"in cannot fallback to proxy targ"}],"functionName":{"name":"mstore","nativeSrc":"3506:6:55","nodeType":"YulIdentifier","src":"3506:6:55"},"nativeSrc":"3506:59:55","nodeType":"YulFunctionCall","src":"3506:59:55"},"nativeSrc":"3506:59:55","nodeType":"YulExpressionStatement","src":"3506:59:55"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"3586:6:55","nodeType":"YulIdentifier","src":"3586:6:55"},{"kind":"number","nativeSrc":"3594:2:55","nodeType":"YulLiteral","src":"3594:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"3582:3:55","nodeType":"YulIdentifier","src":"3582:3:55"},"nativeSrc":"3582:15:55","nodeType":"YulFunctionCall","src":"3582:15:55"},{"hexValue":"6574","kind":"string","nativeSrc":"3599:4:55","nodeType":"YulLiteral","src":"3599:4:55","type":"","value":"et"}],"functionName":{"name":"mstore","nativeSrc":"3575:6:55","nodeType":"YulIdentifier","src":"3575:6:55"},"nativeSrc":"3575:29:55","nodeType":"YulFunctionCall","src":"3575:29:55"},"nativeSrc":"3575:29:55","nodeType":"YulExpressionStatement","src":"3575:29:55"}]},"name":"store_literal_in_memory_f5d2ea39d7e6c7d19dc32ccc2bd7ca26b7aa4a603ef4aa6f2b205c93c3ffe43d","nativeSrc":"3321:290:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"3419:6:55","nodeType":"YulTypedName","src":"3419:6:55","type":""}],"src":"3321:290:55"},{"body":{"nativeSrc":"3763:220:55","nodeType":"YulBlock","src":"3763:220:55","statements":[{"nativeSrc":"3773:74:55","nodeType":"YulAssignment","src":"3773:74:55","value":{"arguments":[{"name":"pos","nativeSrc":"3839:3:55","nodeType":"YulIdentifier","src":"3839:3:55"},{"kind":"number","nativeSrc":"3844:2:55","nodeType":"YulLiteral","src":"3844:2:55","type":"","value":"66"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"3780:58:55","nodeType":"YulIdentifier","src":"3780:58:55"},"nativeSrc":"3780:67:55","nodeType":"YulFunctionCall","src":"3780:67:55"},"variableNames":[{"name":"pos","nativeSrc":"3773:3:55","nodeType":"YulIdentifier","src":"3773:3:55"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"3945:3:55","nodeType":"YulIdentifier","src":"3945:3:55"}],"functionName":{"name":"store_literal_in_memory_f5d2ea39d7e6c7d19dc32ccc2bd7ca26b7aa4a603ef4aa6f2b205c93c3ffe43d","nativeSrc":"3856:88:55","nodeType":"YulIdentifier","src":"3856:88:55"},"nativeSrc":"3856:93:55","nodeType":"YulFunctionCall","src":"3856:93:55"},"nativeSrc":"3856:93:55","nodeType":"YulExpressionStatement","src":"3856:93:55"},{"nativeSrc":"3958:19:55","nodeType":"YulAssignment","src":"3958:19:55","value":{"arguments":[{"name":"pos","nativeSrc":"3969:3:55","nodeType":"YulIdentifier","src":"3969:3:55"},{"kind":"number","nativeSrc":"3974:2:55","nodeType":"YulLiteral","src":"3974:2:55","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"3965:3:55","nodeType":"YulIdentifier","src":"3965:3:55"},"nativeSrc":"3965:12:55","nodeType":"YulFunctionCall","src":"3965:12:55"},"variableNames":[{"name":"end","nativeSrc":"3958:3:55","nodeType":"YulIdentifier","src":"3958:3:55"}]}]},"name":"abi_encode_t_stringliteral_f5d2ea39d7e6c7d19dc32ccc2bd7ca26b7aa4a603ef4aa6f2b205c93c3ffe43d_to_t_string_memory_ptr_fromStack","nativeSrc":"3617:366:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"3751:3:55","nodeType":"YulTypedName","src":"3751:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"3759:3:55","nodeType":"YulTypedName","src":"3759:3:55","type":""}],"src":"3617:366:55"},{"body":{"nativeSrc":"4160:248:55","nodeType":"YulBlock","src":"4160:248:55","statements":[{"nativeSrc":"4170:26:55","nodeType":"YulAssignment","src":"4170:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"4182:9:55","nodeType":"YulIdentifier","src":"4182:9:55"},{"kind":"number","nativeSrc":"4193:2:55","nodeType":"YulLiteral","src":"4193:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4178:3:55","nodeType":"YulIdentifier","src":"4178:3:55"},"nativeSrc":"4178:18:55","nodeType":"YulFunctionCall","src":"4178:18:55"},"variableNames":[{"name":"tail","nativeSrc":"4170:4:55","nodeType":"YulIdentifier","src":"4170:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4217:9:55","nodeType":"YulIdentifier","src":"4217:9:55"},{"kind":"number","nativeSrc":"4228:1:55","nodeType":"YulLiteral","src":"4228:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"4213:3:55","nodeType":"YulIdentifier","src":"4213:3:55"},"nativeSrc":"4213:17:55","nodeType":"YulFunctionCall","src":"4213:17:55"},{"arguments":[{"name":"tail","nativeSrc":"4236:4:55","nodeType":"YulIdentifier","src":"4236:4:55"},{"name":"headStart","nativeSrc":"4242:9:55","nodeType":"YulIdentifier","src":"4242:9:55"}],"functionName":{"name":"sub","nativeSrc":"4232:3:55","nodeType":"YulIdentifier","src":"4232:3:55"},"nativeSrc":"4232:20:55","nodeType":"YulFunctionCall","src":"4232:20:55"}],"functionName":{"name":"mstore","nativeSrc":"4206:6:55","nodeType":"YulIdentifier","src":"4206:6:55"},"nativeSrc":"4206:47:55","nodeType":"YulFunctionCall","src":"4206:47:55"},"nativeSrc":"4206:47:55","nodeType":"YulExpressionStatement","src":"4206:47:55"},{"nativeSrc":"4262:139:55","nodeType":"YulAssignment","src":"4262:139:55","value":{"arguments":[{"name":"tail","nativeSrc":"4396:4:55","nodeType":"YulIdentifier","src":"4396:4:55"}],"functionName":{"name":"abi_encode_t_stringliteral_f5d2ea39d7e6c7d19dc32ccc2bd7ca26b7aa4a603ef4aa6f2b205c93c3ffe43d_to_t_string_memory_ptr_fromStack","nativeSrc":"4270:124:55","nodeType":"YulIdentifier","src":"4270:124:55"},"nativeSrc":"4270:131:55","nodeType":"YulFunctionCall","src":"4270:131:55"},"variableNames":[{"name":"tail","nativeSrc":"4262:4:55","nodeType":"YulIdentifier","src":"4262:4:55"}]}]},"name":"abi_encode_tuple_t_stringliteral_f5d2ea39d7e6c7d19dc32ccc2bd7ca26b7aa4a603ef4aa6f2b205c93c3ffe43d__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"3989:419:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4140:9:55","nodeType":"YulTypedName","src":"4140:9:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4155:4:55","nodeType":"YulTypedName","src":"4155:4:55","type":""}],"src":"3989:419:55"},{"body":{"nativeSrc":"4520:126:55","nodeType":"YulBlock","src":"4520:126:55","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"4542:6:55","nodeType":"YulIdentifier","src":"4542:6:55"},{"kind":"number","nativeSrc":"4550:1:55","nodeType":"YulLiteral","src":"4550:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"4538:3:55","nodeType":"YulIdentifier","src":"4538:3:55"},"nativeSrc":"4538:14:55","nodeType":"YulFunctionCall","src":"4538:14:55"},{"hexValue":"455243313936373a206e657720696d706c656d656e746174696f6e206973206e","kind":"string","nativeSrc":"4554:34:55","nodeType":"YulLiteral","src":"4554:34:55","type":"","value":"ERC1967: new implementation is n"}],"functionName":{"name":"mstore","nativeSrc":"4531:6:55","nodeType":"YulIdentifier","src":"4531:6:55"},"nativeSrc":"4531:58:55","nodeType":"YulFunctionCall","src":"4531:58:55"},"nativeSrc":"4531:58:55","nodeType":"YulExpressionStatement","src":"4531:58:55"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"4610:6:55","nodeType":"YulIdentifier","src":"4610:6:55"},{"kind":"number","nativeSrc":"4618:2:55","nodeType":"YulLiteral","src":"4618:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4606:3:55","nodeType":"YulIdentifier","src":"4606:3:55"},"nativeSrc":"4606:15:55","nodeType":"YulFunctionCall","src":"4606:15:55"},{"hexValue":"6f74206120636f6e7472616374","kind":"string","nativeSrc":"4623:15:55","nodeType":"YulLiteral","src":"4623:15:55","type":"","value":"ot a contract"}],"functionName":{"name":"mstore","nativeSrc":"4599:6:55","nodeType":"YulIdentifier","src":"4599:6:55"},"nativeSrc":"4599:40:55","nodeType":"YulFunctionCall","src":"4599:40:55"},"nativeSrc":"4599:40:55","nodeType":"YulExpressionStatement","src":"4599:40:55"}]},"name":"store_literal_in_memory_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65","nativeSrc":"4414:232:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"4512:6:55","nodeType":"YulTypedName","src":"4512:6:55","type":""}],"src":"4414:232:55"},{"body":{"nativeSrc":"4798:220:55","nodeType":"YulBlock","src":"4798:220:55","statements":[{"nativeSrc":"4808:74:55","nodeType":"YulAssignment","src":"4808:74:55","value":{"arguments":[{"name":"pos","nativeSrc":"4874:3:55","nodeType":"YulIdentifier","src":"4874:3:55"},{"kind":"number","nativeSrc":"4879:2:55","nodeType":"YulLiteral","src":"4879:2:55","type":"","value":"45"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"4815:58:55","nodeType":"YulIdentifier","src":"4815:58:55"},"nativeSrc":"4815:67:55","nodeType":"YulFunctionCall","src":"4815:67:55"},"variableNames":[{"name":"pos","nativeSrc":"4808:3:55","nodeType":"YulIdentifier","src":"4808:3:55"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"4980:3:55","nodeType":"YulIdentifier","src":"4980:3:55"}],"functionName":{"name":"store_literal_in_memory_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65","nativeSrc":"4891:88:55","nodeType":"YulIdentifier","src":"4891:88:55"},"nativeSrc":"4891:93:55","nodeType":"YulFunctionCall","src":"4891:93:55"},"nativeSrc":"4891:93:55","nodeType":"YulExpressionStatement","src":"4891:93:55"},{"nativeSrc":"4993:19:55","nodeType":"YulAssignment","src":"4993:19:55","value":{"arguments":[{"name":"pos","nativeSrc":"5004:3:55","nodeType":"YulIdentifier","src":"5004:3:55"},{"kind":"number","nativeSrc":"5009:2:55","nodeType":"YulLiteral","src":"5009:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5000:3:55","nodeType":"YulIdentifier","src":"5000:3:55"},"nativeSrc":"5000:12:55","nodeType":"YulFunctionCall","src":"5000:12:55"},"variableNames":[{"name":"end","nativeSrc":"4993:3:55","nodeType":"YulIdentifier","src":"4993:3:55"}]}]},"name":"abi_encode_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65_to_t_string_memory_ptr_fromStack","nativeSrc":"4652:366:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"4786:3:55","nodeType":"YulTypedName","src":"4786:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"4794:3:55","nodeType":"YulTypedName","src":"4794:3:55","type":""}],"src":"4652:366:55"},{"body":{"nativeSrc":"5195:248:55","nodeType":"YulBlock","src":"5195:248:55","statements":[{"nativeSrc":"5205:26:55","nodeType":"YulAssignment","src":"5205:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"5217:9:55","nodeType":"YulIdentifier","src":"5217:9:55"},{"kind":"number","nativeSrc":"5228:2:55","nodeType":"YulLiteral","src":"5228:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5213:3:55","nodeType":"YulIdentifier","src":"5213:3:55"},"nativeSrc":"5213:18:55","nodeType":"YulFunctionCall","src":"5213:18:55"},"variableNames":[{"name":"tail","nativeSrc":"5205:4:55","nodeType":"YulIdentifier","src":"5205:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5252:9:55","nodeType":"YulIdentifier","src":"5252:9:55"},{"kind":"number","nativeSrc":"5263:1:55","nodeType":"YulLiteral","src":"5263:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"5248:3:55","nodeType":"YulIdentifier","src":"5248:3:55"},"nativeSrc":"5248:17:55","nodeType":"YulFunctionCall","src":"5248:17:55"},{"arguments":[{"name":"tail","nativeSrc":"5271:4:55","nodeType":"YulIdentifier","src":"5271:4:55"},{"name":"headStart","nativeSrc":"5277:9:55","nodeType":"YulIdentifier","src":"5277:9:55"}],"functionName":{"name":"sub","nativeSrc":"5267:3:55","nodeType":"YulIdentifier","src":"5267:3:55"},"nativeSrc":"5267:20:55","nodeType":"YulFunctionCall","src":"5267:20:55"}],"functionName":{"name":"mstore","nativeSrc":"5241:6:55","nodeType":"YulIdentifier","src":"5241:6:55"},"nativeSrc":"5241:47:55","nodeType":"YulFunctionCall","src":"5241:47:55"},"nativeSrc":"5241:47:55","nodeType":"YulExpressionStatement","src":"5241:47:55"},{"nativeSrc":"5297:139:55","nodeType":"YulAssignment","src":"5297:139:55","value":{"arguments":[{"name":"tail","nativeSrc":"5431:4:55","nodeType":"YulIdentifier","src":"5431:4:55"}],"functionName":{"name":"abi_encode_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65_to_t_string_memory_ptr_fromStack","nativeSrc":"5305:124:55","nodeType":"YulIdentifier","src":"5305:124:55"},"nativeSrc":"5305:131:55","nodeType":"YulFunctionCall","src":"5305:131:55"},"variableNames":[{"name":"tail","nativeSrc":"5297:4:55","nodeType":"YulIdentifier","src":"5297:4:55"}]}]},"name":"abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"5024:419:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5175:9:55","nodeType":"YulTypedName","src":"5175:9:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5190:4:55","nodeType":"YulTypedName","src":"5190:4:55","type":""}],"src":"5024:419:55"},{"body":{"nativeSrc":"5555:119:55","nodeType":"YulBlock","src":"5555:119:55","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"5577:6:55","nodeType":"YulIdentifier","src":"5577:6:55"},{"kind":"number","nativeSrc":"5585:1:55","nodeType":"YulLiteral","src":"5585:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"5573:3:55","nodeType":"YulIdentifier","src":"5573:3:55"},"nativeSrc":"5573:14:55","nodeType":"YulFunctionCall","src":"5573:14:55"},{"hexValue":"416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f","kind":"string","nativeSrc":"5589:34:55","nodeType":"YulLiteral","src":"5589:34:55","type":"","value":"Address: delegate call to non-co"}],"functionName":{"name":"mstore","nativeSrc":"5566:6:55","nodeType":"YulIdentifier","src":"5566:6:55"},"nativeSrc":"5566:58:55","nodeType":"YulFunctionCall","src":"5566:58:55"},"nativeSrc":"5566:58:55","nodeType":"YulExpressionStatement","src":"5566:58:55"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"5645:6:55","nodeType":"YulIdentifier","src":"5645:6:55"},{"kind":"number","nativeSrc":"5653:2:55","nodeType":"YulLiteral","src":"5653:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5641:3:55","nodeType":"YulIdentifier","src":"5641:3:55"},"nativeSrc":"5641:15:55","nodeType":"YulFunctionCall","src":"5641:15:55"},{"hexValue":"6e7472616374","kind":"string","nativeSrc":"5658:8:55","nodeType":"YulLiteral","src":"5658:8:55","type":"","value":"ntract"}],"functionName":{"name":"mstore","nativeSrc":"5634:6:55","nodeType":"YulIdentifier","src":"5634:6:55"},"nativeSrc":"5634:33:55","nodeType":"YulFunctionCall","src":"5634:33:55"},"nativeSrc":"5634:33:55","nodeType":"YulExpressionStatement","src":"5634:33:55"}]},"name":"store_literal_in_memory_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520","nativeSrc":"5449:225:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nativeSrc":"5547:6:55","nodeType":"YulTypedName","src":"5547:6:55","type":""}],"src":"5449:225:55"},{"body":{"nativeSrc":"5826:220:55","nodeType":"YulBlock","src":"5826:220:55","statements":[{"nativeSrc":"5836:74:55","nodeType":"YulAssignment","src":"5836:74:55","value":{"arguments":[{"name":"pos","nativeSrc":"5902:3:55","nodeType":"YulIdentifier","src":"5902:3:55"},{"kind":"number","nativeSrc":"5907:2:55","nodeType":"YulLiteral","src":"5907:2:55","type":"","value":"38"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"5843:58:55","nodeType":"YulIdentifier","src":"5843:58:55"},"nativeSrc":"5843:67:55","nodeType":"YulFunctionCall","src":"5843:67:55"},"variableNames":[{"name":"pos","nativeSrc":"5836:3:55","nodeType":"YulIdentifier","src":"5836:3:55"}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"6008:3:55","nodeType":"YulIdentifier","src":"6008:3:55"}],"functionName":{"name":"store_literal_in_memory_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520","nativeSrc":"5919:88:55","nodeType":"YulIdentifier","src":"5919:88:55"},"nativeSrc":"5919:93:55","nodeType":"YulFunctionCall","src":"5919:93:55"},"nativeSrc":"5919:93:55","nodeType":"YulExpressionStatement","src":"5919:93:55"},{"nativeSrc":"6021:19:55","nodeType":"YulAssignment","src":"6021:19:55","value":{"arguments":[{"name":"pos","nativeSrc":"6032:3:55","nodeType":"YulIdentifier","src":"6032:3:55"},{"kind":"number","nativeSrc":"6037:2:55","nodeType":"YulLiteral","src":"6037:2:55","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"6028:3:55","nodeType":"YulIdentifier","src":"6028:3:55"},"nativeSrc":"6028:12:55","nodeType":"YulFunctionCall","src":"6028:12:55"},"variableNames":[{"name":"end","nativeSrc":"6021:3:55","nodeType":"YulIdentifier","src":"6021:3:55"}]}]},"name":"abi_encode_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520_to_t_string_memory_ptr_fromStack","nativeSrc":"5680:366:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"5814:3:55","nodeType":"YulTypedName","src":"5814:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"5822:3:55","nodeType":"YulTypedName","src":"5822:3:55","type":""}],"src":"5680:366:55"},{"body":{"nativeSrc":"6223:248:55","nodeType":"YulBlock","src":"6223:248:55","statements":[{"nativeSrc":"6233:26:55","nodeType":"YulAssignment","src":"6233:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"6245:9:55","nodeType":"YulIdentifier","src":"6245:9:55"},{"kind":"number","nativeSrc":"6256:2:55","nodeType":"YulLiteral","src":"6256:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6241:3:55","nodeType":"YulIdentifier","src":"6241:3:55"},"nativeSrc":"6241:18:55","nodeType":"YulFunctionCall","src":"6241:18:55"},"variableNames":[{"name":"tail","nativeSrc":"6233:4:55","nodeType":"YulIdentifier","src":"6233:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6280:9:55","nodeType":"YulIdentifier","src":"6280:9:55"},{"kind":"number","nativeSrc":"6291:1:55","nodeType":"YulLiteral","src":"6291:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"6276:3:55","nodeType":"YulIdentifier","src":"6276:3:55"},"nativeSrc":"6276:17:55","nodeType":"YulFunctionCall","src":"6276:17:55"},{"arguments":[{"name":"tail","nativeSrc":"6299:4:55","nodeType":"YulIdentifier","src":"6299:4:55"},{"name":"headStart","nativeSrc":"6305:9:55","nodeType":"YulIdentifier","src":"6305:9:55"}],"functionName":{"name":"sub","nativeSrc":"6295:3:55","nodeType":"YulIdentifier","src":"6295:3:55"},"nativeSrc":"6295:20:55","nodeType":"YulFunctionCall","src":"6295:20:55"}],"functionName":{"name":"mstore","nativeSrc":"6269:6:55","nodeType":"YulIdentifier","src":"6269:6:55"},"nativeSrc":"6269:47:55","nodeType":"YulFunctionCall","src":"6269:47:55"},"nativeSrc":"6269:47:55","nodeType":"YulExpressionStatement","src":"6269:47:55"},{"nativeSrc":"6325:139:55","nodeType":"YulAssignment","src":"6325:139:55","value":{"arguments":[{"name":"tail","nativeSrc":"6459:4:55","nodeType":"YulIdentifier","src":"6459:4:55"}],"functionName":{"name":"abi_encode_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520_to_t_string_memory_ptr_fromStack","nativeSrc":"6333:124:55","nodeType":"YulIdentifier","src":"6333:124:55"},"nativeSrc":"6333:131:55","nodeType":"YulFunctionCall","src":"6333:131:55"},"variableNames":[{"name":"tail","nativeSrc":"6325:4:55","nodeType":"YulIdentifier","src":"6325:4:55"}]}]},"name":"abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"6052:419:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6203:9:55","nodeType":"YulTypedName","src":"6203:9:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"6218:4:55","nodeType":"YulTypedName","src":"6218:4:55","type":""}],"src":"6052:419:55"},{"body":{"nativeSrc":"6535:40:55","nodeType":"YulBlock","src":"6535:40:55","statements":[{"nativeSrc":"6546:22:55","nodeType":"YulAssignment","src":"6546:22:55","value":{"arguments":[{"name":"value","nativeSrc":"6562:5:55","nodeType":"YulIdentifier","src":"6562:5:55"}],"functionName":{"name":"mload","nativeSrc":"6556:5:55","nodeType":"YulIdentifier","src":"6556:5:55"},"nativeSrc":"6556:12:55","nodeType":"YulFunctionCall","src":"6556:12:55"},"variableNames":[{"name":"length","nativeSrc":"6546:6:55","nodeType":"YulIdentifier","src":"6546:6:55"}]}]},"name":"array_length_t_bytes_memory_ptr","nativeSrc":"6477:98:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"6518:5:55","nodeType":"YulTypedName","src":"6518:5:55","type":""}],"returnVariables":[{"name":"length","nativeSrc":"6528:6:55","nodeType":"YulTypedName","src":"6528:6:55","type":""}],"src":"6477:98:55"},{"body":{"nativeSrc":"6694:34:55","nodeType":"YulBlock","src":"6694:34:55","statements":[{"nativeSrc":"6704:18:55","nodeType":"YulAssignment","src":"6704:18:55","value":{"name":"pos","nativeSrc":"6719:3:55","nodeType":"YulIdentifier","src":"6719:3:55"},"variableNames":[{"name":"updated_pos","nativeSrc":"6704:11:55","nodeType":"YulIdentifier","src":"6704:11:55"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"6581:147:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"6666:3:55","nodeType":"YulTypedName","src":"6666:3:55","type":""},{"name":"length","nativeSrc":"6671:6:55","nodeType":"YulTypedName","src":"6671:6:55","type":""}],"returnVariables":[{"name":"updated_pos","nativeSrc":"6682:11:55","nodeType":"YulTypedName","src":"6682:11:55","type":""}],"src":"6581:147:55"},{"body":{"nativeSrc":"6796:77:55","nodeType":"YulBlock","src":"6796:77:55","statements":[{"expression":{"arguments":[{"name":"dst","nativeSrc":"6813:3:55","nodeType":"YulIdentifier","src":"6813:3:55"},{"name":"src","nativeSrc":"6818:3:55","nodeType":"YulIdentifier","src":"6818:3:55"},{"name":"length","nativeSrc":"6823:6:55","nodeType":"YulIdentifier","src":"6823:6:55"}],"functionName":{"name":"mcopy","nativeSrc":"6807:5:55","nodeType":"YulIdentifier","src":"6807:5:55"},"nativeSrc":"6807:23:55","nodeType":"YulFunctionCall","src":"6807:23:55"},"nativeSrc":"6807:23:55","nodeType":"YulExpressionStatement","src":"6807:23:55"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"6850:3:55","nodeType":"YulIdentifier","src":"6850:3:55"},{"name":"length","nativeSrc":"6855:6:55","nodeType":"YulIdentifier","src":"6855:6:55"}],"functionName":{"name":"add","nativeSrc":"6846:3:55","nodeType":"YulIdentifier","src":"6846:3:55"},"nativeSrc":"6846:16:55","nodeType":"YulFunctionCall","src":"6846:16:55"},{"kind":"number","nativeSrc":"6864:1:55","nodeType":"YulLiteral","src":"6864:1:55","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"6839:6:55","nodeType":"YulIdentifier","src":"6839:6:55"},"nativeSrc":"6839:27:55","nodeType":"YulFunctionCall","src":"6839:27:55"},"nativeSrc":"6839:27:55","nodeType":"YulExpressionStatement","src":"6839:27:55"}]},"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"6734:139:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nativeSrc":"6778:3:55","nodeType":"YulTypedName","src":"6778:3:55","type":""},{"name":"dst","nativeSrc":"6783:3:55","nodeType":"YulTypedName","src":"6783:3:55","type":""},{"name":"length","nativeSrc":"6788:6:55","nodeType":"YulTypedName","src":"6788:6:55","type":""}],"src":"6734:139:55"},{"body":{"nativeSrc":"6987:278:55","nodeType":"YulBlock","src":"6987:278:55","statements":[{"nativeSrc":"6997:52:55","nodeType":"YulVariableDeclaration","src":"6997:52:55","value":{"arguments":[{"name":"value","nativeSrc":"7043:5:55","nodeType":"YulIdentifier","src":"7043:5:55"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nativeSrc":"7011:31:55","nodeType":"YulIdentifier","src":"7011:31:55"},"nativeSrc":"7011:38:55","nodeType":"YulFunctionCall","src":"7011:38:55"},"variables":[{"name":"length","nativeSrc":"7001:6:55","nodeType":"YulTypedName","src":"7001:6:55","type":""}]},{"nativeSrc":"7058:95:55","nodeType":"YulAssignment","src":"7058:95:55","value":{"arguments":[{"name":"pos","nativeSrc":"7141:3:55","nodeType":"YulIdentifier","src":"7141:3:55"},{"name":"length","nativeSrc":"7146:6:55","nodeType":"YulIdentifier","src":"7146:6:55"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"7065:75:55","nodeType":"YulIdentifier","src":"7065:75:55"},"nativeSrc":"7065:88:55","nodeType":"YulFunctionCall","src":"7065:88:55"},"variableNames":[{"name":"pos","nativeSrc":"7058:3:55","nodeType":"YulIdentifier","src":"7058:3:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"7201:5:55","nodeType":"YulIdentifier","src":"7201:5:55"},{"kind":"number","nativeSrc":"7208:4:55","nodeType":"YulLiteral","src":"7208:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"7197:3:55","nodeType":"YulIdentifier","src":"7197:3:55"},"nativeSrc":"7197:16:55","nodeType":"YulFunctionCall","src":"7197:16:55"},{"name":"pos","nativeSrc":"7215:3:55","nodeType":"YulIdentifier","src":"7215:3:55"},{"name":"length","nativeSrc":"7220:6:55","nodeType":"YulIdentifier","src":"7220:6:55"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"7162:34:55","nodeType":"YulIdentifier","src":"7162:34:55"},"nativeSrc":"7162:65:55","nodeType":"YulFunctionCall","src":"7162:65:55"},"nativeSrc":"7162:65:55","nodeType":"YulExpressionStatement","src":"7162:65:55"},{"nativeSrc":"7236:23:55","nodeType":"YulAssignment","src":"7236:23:55","value":{"arguments":[{"name":"pos","nativeSrc":"7247:3:55","nodeType":"YulIdentifier","src":"7247:3:55"},{"name":"length","nativeSrc":"7252:6:55","nodeType":"YulIdentifier","src":"7252:6:55"}],"functionName":{"name":"add","nativeSrc":"7243:3:55","nodeType":"YulIdentifier","src":"7243:3:55"},"nativeSrc":"7243:16:55","nodeType":"YulFunctionCall","src":"7243:16:55"},"variableNames":[{"name":"end","nativeSrc":"7236:3:55","nodeType":"YulIdentifier","src":"7236:3:55"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"6879:386:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"6968:5:55","nodeType":"YulTypedName","src":"6968:5:55","type":""},{"name":"pos","nativeSrc":"6975:3:55","nodeType":"YulTypedName","src":"6975:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"6983:3:55","nodeType":"YulTypedName","src":"6983:3:55","type":""}],"src":"6879:386:55"},{"body":{"nativeSrc":"7405:137:55","nodeType":"YulBlock","src":"7405:137:55","statements":[{"nativeSrc":"7416:100:55","nodeType":"YulAssignment","src":"7416:100:55","value":{"arguments":[{"name":"value0","nativeSrc":"7503:6:55","nodeType":"YulIdentifier","src":"7503:6:55"},{"name":"pos","nativeSrc":"7512:3:55","nodeType":"YulIdentifier","src":"7512:3:55"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nativeSrc":"7423:79:55","nodeType":"YulIdentifier","src":"7423:79:55"},"nativeSrc":"7423:93:55","nodeType":"YulFunctionCall","src":"7423:93:55"},"variableNames":[{"name":"pos","nativeSrc":"7416:3:55","nodeType":"YulIdentifier","src":"7416:3:55"}]},{"nativeSrc":"7526:10:55","nodeType":"YulAssignment","src":"7526:10:55","value":{"name":"pos","nativeSrc":"7533:3:55","nodeType":"YulIdentifier","src":"7533:3:55"},"variableNames":[{"name":"end","nativeSrc":"7526:3:55","nodeType":"YulIdentifier","src":"7526:3:55"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"7271:271:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"7384:3:55","nodeType":"YulTypedName","src":"7384:3:55","type":""},{"name":"value0","nativeSrc":"7390:6:55","nodeType":"YulTypedName","src":"7390:6:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"7401:3:55","nodeType":"YulTypedName","src":"7401:3:55","type":""}],"src":"7271:271:55"},{"body":{"nativeSrc":"7607:40:55","nodeType":"YulBlock","src":"7607:40:55","statements":[{"nativeSrc":"7618:22:55","nodeType":"YulAssignment","src":"7618:22:55","value":{"arguments":[{"name":"value","nativeSrc":"7634:5:55","nodeType":"YulIdentifier","src":"7634:5:55"}],"functionName":{"name":"mload","nativeSrc":"7628:5:55","nodeType":"YulIdentifier","src":"7628:5:55"},"nativeSrc":"7628:12:55","nodeType":"YulFunctionCall","src":"7628:12:55"},"variableNames":[{"name":"length","nativeSrc":"7618:6:55","nodeType":"YulIdentifier","src":"7618:6:55"}]}]},"name":"array_length_t_string_memory_ptr","nativeSrc":"7548:99:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"7590:5:55","nodeType":"YulTypedName","src":"7590:5:55","type":""}],"returnVariables":[{"name":"length","nativeSrc":"7600:6:55","nodeType":"YulTypedName","src":"7600:6:55","type":""}],"src":"7548:99:55"},{"body":{"nativeSrc":"7701:54:55","nodeType":"YulBlock","src":"7701:54:55","statements":[{"nativeSrc":"7711:38:55","nodeType":"YulAssignment","src":"7711:38:55","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"7729:5:55","nodeType":"YulIdentifier","src":"7729:5:55"},{"kind":"number","nativeSrc":"7736:2:55","nodeType":"YulLiteral","src":"7736:2:55","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"7725:3:55","nodeType":"YulIdentifier","src":"7725:3:55"},"nativeSrc":"7725:14:55","nodeType":"YulFunctionCall","src":"7725:14:55"},{"arguments":[{"kind":"number","nativeSrc":"7745:2:55","nodeType":"YulLiteral","src":"7745:2:55","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"7741:3:55","nodeType":"YulIdentifier","src":"7741:3:55"},"nativeSrc":"7741:7:55","nodeType":"YulFunctionCall","src":"7741:7:55"}],"functionName":{"name":"and","nativeSrc":"7721:3:55","nodeType":"YulIdentifier","src":"7721:3:55"},"nativeSrc":"7721:28:55","nodeType":"YulFunctionCall","src":"7721:28:55"},"variableNames":[{"name":"result","nativeSrc":"7711:6:55","nodeType":"YulIdentifier","src":"7711:6:55"}]}]},"name":"round_up_to_mul_of_32","nativeSrc":"7653:102:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"7684:5:55","nodeType":"YulTypedName","src":"7684:5:55","type":""}],"returnVariables":[{"name":"result","nativeSrc":"7694:6:55","nodeType":"YulTypedName","src":"7694:6:55","type":""}],"src":"7653:102:55"},{"body":{"nativeSrc":"7853:285:55","nodeType":"YulBlock","src":"7853:285:55","statements":[{"nativeSrc":"7863:53:55","nodeType":"YulVariableDeclaration","src":"7863:53:55","value":{"arguments":[{"name":"value","nativeSrc":"7910:5:55","nodeType":"YulIdentifier","src":"7910:5:55"}],"functionName":{"name":"array_length_t_string_memory_ptr","nativeSrc":"7877:32:55","nodeType":"YulIdentifier","src":"7877:32:55"},"nativeSrc":"7877:39:55","nodeType":"YulFunctionCall","src":"7877:39:55"},"variables":[{"name":"length","nativeSrc":"7867:6:55","nodeType":"YulTypedName","src":"7867:6:55","type":""}]},{"nativeSrc":"7925:78:55","nodeType":"YulAssignment","src":"7925:78:55","value":{"arguments":[{"name":"pos","nativeSrc":"7991:3:55","nodeType":"YulIdentifier","src":"7991:3:55"},{"name":"length","nativeSrc":"7996:6:55","nodeType":"YulIdentifier","src":"7996:6:55"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nativeSrc":"7932:58:55","nodeType":"YulIdentifier","src":"7932:58:55"},"nativeSrc":"7932:71:55","nodeType":"YulFunctionCall","src":"7932:71:55"},"variableNames":[{"name":"pos","nativeSrc":"7925:3:55","nodeType":"YulIdentifier","src":"7925:3:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"8051:5:55","nodeType":"YulIdentifier","src":"8051:5:55"},{"kind":"number","nativeSrc":"8058:4:55","nodeType":"YulLiteral","src":"8058:4:55","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8047:3:55","nodeType":"YulIdentifier","src":"8047:3:55"},"nativeSrc":"8047:16:55","nodeType":"YulFunctionCall","src":"8047:16:55"},{"name":"pos","nativeSrc":"8065:3:55","nodeType":"YulIdentifier","src":"8065:3:55"},{"name":"length","nativeSrc":"8070:6:55","nodeType":"YulIdentifier","src":"8070:6:55"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"8012:34:55","nodeType":"YulIdentifier","src":"8012:34:55"},"nativeSrc":"8012:65:55","nodeType":"YulFunctionCall","src":"8012:65:55"},"nativeSrc":"8012:65:55","nodeType":"YulExpressionStatement","src":"8012:65:55"},{"nativeSrc":"8086:46:55","nodeType":"YulAssignment","src":"8086:46:55","value":{"arguments":[{"name":"pos","nativeSrc":"8097:3:55","nodeType":"YulIdentifier","src":"8097:3:55"},{"arguments":[{"name":"length","nativeSrc":"8124:6:55","nodeType":"YulIdentifier","src":"8124:6:55"}],"functionName":{"name":"round_up_to_mul_of_32","nativeSrc":"8102:21:55","nodeType":"YulIdentifier","src":"8102:21:55"},"nativeSrc":"8102:29:55","nodeType":"YulFunctionCall","src":"8102:29:55"}],"functionName":{"name":"add","nativeSrc":"8093:3:55","nodeType":"YulIdentifier","src":"8093:3:55"},"nativeSrc":"8093:39:55","nodeType":"YulFunctionCall","src":"8093:39:55"},"variableNames":[{"name":"end","nativeSrc":"8086:3:55","nodeType":"YulIdentifier","src":"8086:3:55"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nativeSrc":"7761:377:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"7834:5:55","nodeType":"YulTypedName","src":"7834:5:55","type":""},{"name":"pos","nativeSrc":"7841:3:55","nodeType":"YulTypedName","src":"7841:3:55","type":""}],"returnVariables":[{"name":"end","nativeSrc":"7849:3:55","nodeType":"YulTypedName","src":"7849:3:55","type":""}],"src":"7761:377:55"},{"body":{"nativeSrc":"8262:195:55","nodeType":"YulBlock","src":"8262:195:55","statements":[{"nativeSrc":"8272:26:55","nodeType":"YulAssignment","src":"8272:26:55","value":{"arguments":[{"name":"headStart","nativeSrc":"8284:9:55","nodeType":"YulIdentifier","src":"8284:9:55"},{"kind":"number","nativeSrc":"8295:2:55","nodeType":"YulLiteral","src":"8295:2:55","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8280:3:55","nodeType":"YulIdentifier","src":"8280:3:55"},"nativeSrc":"8280:18:55","nodeType":"YulFunctionCall","src":"8280:18:55"},"variableNames":[{"name":"tail","nativeSrc":"8272:4:55","nodeType":"YulIdentifier","src":"8272:4:55"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8319:9:55","nodeType":"YulIdentifier","src":"8319:9:55"},{"kind":"number","nativeSrc":"8330:1:55","nodeType":"YulLiteral","src":"8330:1:55","type":"","value":"0"}],"functionName":{"name":"add","nativeSrc":"8315:3:55","nodeType":"YulIdentifier","src":"8315:3:55"},"nativeSrc":"8315:17:55","nodeType":"YulFunctionCall","src":"8315:17:55"},{"arguments":[{"name":"tail","nativeSrc":"8338:4:55","nodeType":"YulIdentifier","src":"8338:4:55"},{"name":"headStart","nativeSrc":"8344:9:55","nodeType":"YulIdentifier","src":"8344:9:55"}],"functionName":{"name":"sub","nativeSrc":"8334:3:55","nodeType":"YulIdentifier","src":"8334:3:55"},"nativeSrc":"8334:20:55","nodeType":"YulFunctionCall","src":"8334:20:55"}],"functionName":{"name":"mstore","nativeSrc":"8308:6:55","nodeType":"YulIdentifier","src":"8308:6:55"},"nativeSrc":"8308:47:55","nodeType":"YulFunctionCall","src":"8308:47:55"},"nativeSrc":"8308:47:55","nodeType":"YulExpressionStatement","src":"8308:47:55"},{"nativeSrc":"8364:86:55","nodeType":"YulAssignment","src":"8364:86:55","value":{"arguments":[{"name":"value0","nativeSrc":"8436:6:55","nodeType":"YulIdentifier","src":"8436:6:55"},{"name":"tail","nativeSrc":"8445:4:55","nodeType":"YulIdentifier","src":"8445:4:55"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nativeSrc":"8372:63:55","nodeType":"YulIdentifier","src":"8372:63:55"},"nativeSrc":"8372:78:55","nodeType":"YulFunctionCall","src":"8372:78:55"},"variableNames":[{"name":"tail","nativeSrc":"8364:4:55","nodeType":"YulIdentifier","src":"8364:4:55"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"8144:313:55","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8234:9:55","nodeType":"YulTypedName","src":"8234:9:55","type":""},{"name":"value0","nativeSrc":"8246:6:55","nodeType":"YulTypedName","src":"8246:6:55","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8257:4:55","nodeType":"YulTypedName","src":"8257:4:55","type":""}],"src":"8144:313:55"}]},"contents":"{\n\n    function allocate_unbounded() -> memPtr {\n        memPtr := mload(64)\n    }\n\n    function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n        revert(0, 0)\n    }\n\n    function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n        revert(0, 0)\n    }\n\n    function cleanup_t_uint160(value) -> cleaned {\n        cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n    }\n\n    function cleanup_t_address(value) -> cleaned {\n        cleaned := cleanup_t_uint160(value)\n    }\n\n    function validator_revert_t_address(value) {\n        if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n    }\n\n    function abi_decode_t_address(offset, end) -> value {\n        value := calldataload(offset)\n        validator_revert_t_address(value)\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 revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n        revert(0, 0)\n    }\n\n    function revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() {\n        revert(0, 0)\n    }\n\n    function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n        revert(0, 0)\n    }\n\n    // bytes\n    function abi_decode_t_bytes_calldata_ptr(offset, end) -> arrayPos, length {\n        if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n        arrayPos := add(offset, 0x20)\n        if gt(add(arrayPos, mul(length, 0x01)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n    }\n\n    function abi_decode_tuple_t_addresst_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2 {\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 := calldataload(add(headStart, 32))\n            if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n            value1, value2 := abi_decode_t_bytes_calldata_ptr(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 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 store_literal_in_memory_f5d2ea39d7e6c7d19dc32ccc2bd7ca26b7aa4a603ef4aa6f2b205c93c3ffe43d(memPtr) {\n\n        mstore(add(memPtr, 0), \"TransparentUpgradeableProxy: adm\")\n\n        mstore(add(memPtr, 32), \"in cannot fallback to proxy targ\")\n\n        mstore(add(memPtr, 64), \"et\")\n\n    }\n\n    function abi_encode_t_stringliteral_f5d2ea39d7e6c7d19dc32ccc2bd7ca26b7aa4a603ef4aa6f2b205c93c3ffe43d_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 66)\n        store_literal_in_memory_f5d2ea39d7e6c7d19dc32ccc2bd7ca26b7aa4a603ef4aa6f2b205c93c3ffe43d(pos)\n        end := add(pos, 96)\n    }\n\n    function abi_encode_tuple_t_stringliteral_f5d2ea39d7e6c7d19dc32ccc2bd7ca26b7aa4a603ef4aa6f2b205c93c3ffe43d__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_f5d2ea39d7e6c7d19dc32ccc2bd7ca26b7aa4a603ef4aa6f2b205c93c3ffe43d_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65(memPtr) {\n\n        mstore(add(memPtr, 0), \"ERC1967: new implementation is n\")\n\n        mstore(add(memPtr, 32), \"ot a contract\")\n\n    }\n\n    function abi_encode_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 45)\n        store_literal_in_memory_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65__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_972b7028e8de0bff0d553b3264eba2312ec98a552add05e58853b313f9f4ac65_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520(memPtr) {\n\n        mstore(add(memPtr, 0), \"Address: delegate call to non-co\")\n\n        mstore(add(memPtr, 32), \"ntract\")\n\n    }\n\n    function abi_encode_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 38)\n        store_literal_in_memory_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520__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_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function array_length_t_bytes_memory_ptr(value) -> length {\n\n        length := mload(value)\n\n    }\n\n    function array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n        updated_pos := pos\n    }\n\n    function copy_memory_to_memory_with_cleanup(src, dst, length) {\n\n        mcopy(dst, src, length)\n        mstore(add(dst, length), 0)\n\n    }\n\n    function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n        let length := array_length_t_bytes_memory_ptr(value)\n        pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n        copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n        end := add(pos, length)\n    }\n\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value0) -> end {\n\n        pos := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value0,  pos)\n\n        end := pos\n    }\n\n    function array_length_t_string_memory_ptr(value) -> length {\n\n        length := mload(value)\n\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}\n","id":55,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"9571":[{"length":32,"start":229},{"length":32,"start":313},{"length":32,"start":441},{"length":32,"start":514},{"length":32,"start":563},{"length":32,"start":599}]},"linkReferences":{},"object":"608060405260043610610042575f3560e01c80633659cfe6146100595780634f1ef286146100785780635c60da1b1461008b578063f851a440146100b557610051565b366100515761004f6100c9565b005b61004f6100c9565b348015610064575f5ffd5b5061004f6100733660046104f8565b6100e3565b61004f61008636600461056c565b610137565b348015610096575f5ffd5b5061009f6101b6565b6040516100ac91906105d2565b60405180910390f35b3480156100c0575f5ffd5b5061009f6101ff565b6100d1610255565b6100e16100dc6102a6565b6102d8565b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361012f5761012c8160405180602001604052805f8152505f6102f6565b50565b61012c6100c9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101ae576101a98383838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250600192506102f6915050565b505050565b6101a96100c9565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101f4576101ef6102a6565b905090565b6101fc6100c9565b90565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036101f457507f000000000000000000000000000000000000000000000000000000000000000090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036100e15760405162461bcd60e51b815260040161029d906105e0565b60405180910390fd5b5f6101ef7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b365f5f375f5f365f845af43d5f5f3e8080156102f2573d5ff35b3d5ffd5b6102ff83610320565b5f8251118061030b5750805b156101a95761031a838361035f565b50505050565b6103298161038d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103848383604051806060016040528060278152602001610774602791396103f5565b90505b92915050565b6001600160a01b0381163b6103b45760405162461bcd60e51b815260040161029d90610698565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60606001600160a01b0384163b61041e5760405162461bcd60e51b815260040161029d906106ea565b5f5f856001600160a01b0316856040516104389190610726565b5f60405180830381855af49150503d805f8114610470576040519150601f19603f3d011682016040523d82523d5f602084013e610475565b606091505b5091509150610485828286610491565b925050505b9392505050565b606083156104a057508161048a565b8251156104b05782518084602001fd5b8160405162461bcd60e51b815260040161029d9190610762565b5f6001600160a01b038216610387565b6104e3816104ca565b811461012c575f5ffd5b8035610387816104da565b5f6020828403121561050b5761050b5f5ffd5b5f61051684846104ed565b949350505050565b5f5f83601f840112610531576105315f5ffd5b50813567ffffffffffffffff81111561054b5761054b5f5ffd5b602083019150836001820283011115610565576105655f5ffd5b9250929050565b5f5f5f60408486031215610581576105815f5ffd5b5f61058c86866104ed565b935050602084013567ffffffffffffffff8111156105ab576105ab5f5ffd5b6105b78682870161051e565b92509250509250925092565b6105cc816104ca565b82525050565b6020810161038782846105c3565b6020808252810161038781604281527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60208201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267604082015261195d60f21b606082015260800190565b602d81525f602082017f455243313936373a206e657720696d706c656d656e746174696f6e206973206e81526c1bdd08184818dbdb9d1c9858dd609a1b602082015291505b5060400190565b602080825281016103878161064c565b602681525f602082017f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f8152651b9d1c9858dd60d21b60208201529150610691565b60208082528101610387816106a8565b8281835e505f910152565b5f61070e825190565b61071c8185602086016106fa565b9290920192915050565b5f61048a8284610705565b5f61073a825190565b8084526020840193506107518185602086016106fa565b601f01601f19169290920192915050565b60208082528101610384818461073156fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d763479cb1e6882ed6ced7ef0f533f774a5b72c1464a1193205fd0874d2874bc64736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x42 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3659CFE6 EQ PUSH2 0x59 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x78 JUMPI DUP1 PUSH4 0x5C60DA1B EQ PUSH2 0x8B JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0xB5 JUMPI PUSH2 0x51 JUMP JUMPDEST CALLDATASIZE PUSH2 0x51 JUMPI PUSH2 0x4F PUSH2 0xC9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x4F PUSH2 0xC9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x64 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x4F PUSH2 0x73 CALLDATASIZE PUSH1 0x4 PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0xE3 JUMP JUMPDEST PUSH2 0x4F PUSH2 0x86 CALLDATASIZE PUSH1 0x4 PUSH2 0x56C JUMP JUMPDEST PUSH2 0x137 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x96 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x9F PUSH2 0x1B6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAC SWAP2 SWAP1 PUSH2 0x5D2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x9F PUSH2 0x1FF JUMP JUMPDEST PUSH2 0xD1 PUSH2 0x255 JUMP JUMPDEST PUSH2 0xE1 PUSH2 0xDC PUSH2 0x2A6 JUMP JUMPDEST PUSH2 0x2D8 JUMP JUMPDEST JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER SUB PUSH2 0x12F JUMPI PUSH2 0x12C DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH0 DUP2 MSTORE POP PUSH0 PUSH2 0x2F6 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x12C PUSH2 0xC9 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER SUB PUSH2 0x1AE JUMPI PUSH2 0x1A9 DUP4 DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH1 0x1 SWAP3 POP PUSH2 0x2F6 SWAP2 POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1A9 PUSH2 0xC9 JUMP JUMPDEST PUSH0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER SUB PUSH2 0x1F4 JUMPI PUSH2 0x1EF PUSH2 0x2A6 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1FC PUSH2 0xC9 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER SUB PUSH2 0x1F4 JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER SUB PUSH2 0xE1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x29D SWAP1 PUSH2 0x5E0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x1EF PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH0 PUSH0 CALLDATACOPY PUSH0 PUSH0 CALLDATASIZE PUSH0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x2F2 JUMPI RETURNDATASIZE PUSH0 RETURN JUMPDEST RETURNDATASIZE PUSH0 REVERT JUMPDEST PUSH2 0x2FF DUP4 PUSH2 0x320 JUMP JUMPDEST PUSH0 DUP3 MLOAD GT DUP1 PUSH2 0x30B JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x1A9 JUMPI PUSH2 0x31A DUP4 DUP4 PUSH2 0x35F JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x329 DUP2 PUSH2 0x38D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x384 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x774 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x3F5 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE PUSH2 0x3B4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x29D SWAP1 PUSH2 0x698 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE PUSH2 0x41E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x29D SWAP1 PUSH2 0x6EA JUMP JUMPDEST PUSH0 PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x438 SWAP2 SWAP1 PUSH2 0x726 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x470 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x475 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x485 DUP3 DUP3 DUP7 PUSH2 0x491 JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x4A0 JUMPI POP DUP2 PUSH2 0x48A JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x4B0 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x29D SWAP2 SWAP1 PUSH2 0x762 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x387 JUMP JUMPDEST PUSH2 0x4E3 DUP2 PUSH2 0x4CA JUMP JUMPDEST DUP2 EQ PUSH2 0x12C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x387 DUP2 PUSH2 0x4DA JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x50B JUMPI PUSH2 0x50B PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x516 DUP5 DUP5 PUSH2 0x4ED JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x531 JUMPI PUSH2 0x531 PUSH0 PUSH0 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x54B JUMPI PUSH2 0x54B PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x565 JUMPI PUSH2 0x565 PUSH0 PUSH0 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x581 JUMPI PUSH2 0x581 PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x58C DUP7 DUP7 PUSH2 0x4ED JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5AB JUMPI PUSH2 0x5AB PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x5B7 DUP7 DUP3 DUP8 ADD PUSH2 0x51E JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x5CC DUP2 PUSH2 0x4CA JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x387 DUP3 DUP5 PUSH2 0x5C3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x387 DUP2 PUSH1 0x42 DUP2 MSTORE PUSH32 0x5472616E73706172656E745570677261646561626C6550726F78793A2061646D PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x696E2063616E6E6F742066616C6C6261636B20746F2070726F78792074617267 PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x195D PUSH1 0xF2 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x2D DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x455243313936373A206E657720696D706C656D656E746174696F6E206973206E DUP2 MSTORE PUSH13 0x1BDD08184818DBDB9D1C9858DD PUSH1 0x9A SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP2 POP JUMPDEST POP PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x387 DUP2 PUSH2 0x64C JUMP JUMPDEST PUSH1 0x26 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD PUSH32 0x416464726573733A2064656C65676174652063616C6C20746F206E6F6E2D636F DUP2 MSTORE PUSH6 0x1B9D1C9858DD PUSH1 0xD2 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP2 POP PUSH2 0x691 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x387 DUP2 PUSH2 0x6A8 JUMP JUMPDEST DUP3 DUP2 DUP4 MCOPY POP PUSH0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH0 PUSH2 0x70E DUP3 MLOAD SWAP1 JUMP JUMPDEST PUSH2 0x71C DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x6FA JUMP JUMPDEST SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x48A DUP3 DUP5 PUSH2 0x705 JUMP JUMPDEST PUSH0 PUSH2 0x73A DUP3 MLOAD SWAP1 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH2 0x751 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x6FA JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 ADD PUSH2 0x384 DUP2 DUP5 PUSH2 0x731 JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x70667358221220D76347 SWAP13 0xB1 0xE6 DUP9 0x2E 0xD6 0xCE 0xD7 0xEF 0xF MSTORE8 EXTCODEHASH PUSH24 0x4A5B72C1464A1193205FD0874D2874BC64736F6C63430008 SHR STOP CALLER ","sourceMap":"1653:3648:54:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2903:11:47;:9;:11::i;:::-;1653:3648:54;;2680:11:47;:9;:11::i;4037:134:54:-;;;;;;;;;;-1:-1:-1;4037:134:54;;;;;:::i;:::-;;:::i;4547:164::-;;;;;;:::i;:::-;;:::i;3748:129::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3192:96;;;;;;;;;;;;;:::i;2327:110:47:-;2375:17;:15;:17::i;:::-;2402:28;2412:17;:15;:17::i;:::-;2402:9;:28::i;:::-;2327:110::o;4037:134:54:-;5286:6;-1:-1:-1;;;;;2649:25:54;:10;:25;2645:99;;4110:54:::1;4128:17;4147:9;;;;;;;;;;;::::0;4158:5:::1;4110:17;:54::i;:::-;4037:134:::0;:::o;2645:99::-;2722:11;:9;:11::i;4547:164::-;5286:6;-1:-1:-1;;;;;2649:25:54;:10;:25;2645:99;;4656:48:::1;4674:17;4693:4;;4656:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;4699:4:54::1;::::0;-1:-1:-1;4656:17:54::1;::::0;-1:-1:-1;;4656:48:54:i:1;:::-;4547:164:::0;;;:::o;2645:99::-;2722:11;:9;:11::i;3748:129::-;3800:23;5286:6;-1:-1:-1;;;;;2649:25:54;:10;:25;2645:99;;3853:17:::1;:15;:17::i;:::-;3835:35;;3748:129:::0;:::o;2645:99::-;2722:11;:9;:11::i;:::-;3748:129;:::o;3192:96::-;3235:14;5286:6;-1:-1:-1;;;;;2649:25:54;:10;:25;2645:99;;-1:-1:-1;5286:6:54;;3748:129::o;4986:207::-;5286:6;-1:-1:-1;;;;;5057:25:54;:10;:25;5049:104;;;;-1:-1:-1;;;5049:104:54;;;;;;;:::i;:::-;;;;;;;;1240:140:45;1307:12;1338:35;1035:66:46;1385:54;-1:-1:-1;;;;;1385:54:46;;1306:140;953:895:47;1291:14;1288:1;1285;1272:34;1505:1;1502;1486:14;1483:1;1467:14;1460:5;1447:60;1581:16;1578:1;1575;1560:38;1619:6;1686:66;;;;1801:16;1798:1;1791:27;1686:66;1721:16;1718:1;1711:27;2188:295:46;2326:29;2337:17;2326:10;:29::i;:::-;2383:1;2369:4;:11;:15;:28;;;;2388:9;2369:28;2365:112;;;2413:53;2442:17;2461:4;2413:28;:53::i;:::-;;2188:295;;;:::o;1902:152::-;1968:37;1987:17;1968:18;:37::i;:::-;2020:27;;-1:-1:-1;;;;;2020:27:46;;;;;;;;1902:152;:::o;6575:198:51:-;6658:12;6689:77;6710:6;6718:4;6689:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6682:84;;6575:198;;;;;:::o;1537:259:46:-;-1:-1:-1;;;;;1470:19:51;;;1610:95:46;;;;-1:-1:-1;;;1610:95:46;;;;;;;:::i;:::-;1035:66;1715:74;;-1:-1:-1;;;;;;1715:74:46;-1:-1:-1;;;;;1715:74:46;;;;;;;;;;1537:259::o;6959:387:51:-;7100:12;-1:-1:-1;;;;;1470:19:51;;;7124:69;;;;-1:-1:-1;;;7124:69:51;;;;;;;:::i;:::-;7205:12;7219:23;7246:6;-1:-1:-1;;;;;7246:19:51;7266:4;7246:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7204:67;;;;7288:51;7305:7;7314:10;7326:12;7288:16;:51::i;:::-;7281:58;;;;6959:387;;;;;;:::o;7566:692::-;7712:12;7740:7;7736:516;;;-1:-1:-1;7770:10:51;7763:17;;7736:516;7881:17;;:21;7877:365;;8075:10;8069:17;8135:15;8122:10;8118:2;8114:19;8107:44;7877:365;8214:12;8207:20;;-1:-1:-1;;;8207:20:51;;;;;;;;:::i;466:96:55:-;503:7;-1:-1:-1;;;;;400:54:55;;532:24;334:126;568:122;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;696:139;767:20;;796:33;767:20;796:33;:::i;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;197:1;194;187:12;955:79;1075:1;1100:53;1145:7;1125:9;1100:53;:::i;:::-;1090:63;841:329;-1:-1:-1;;;;841:329:55:o;1558:552::-;1615:8;1625:6;1675:3;1668:4;1660:6;1656:17;1652:27;1642:122;;1683:79;1285:1;1282;1275:12;1683:79;-1:-1:-1;1783:20:55;;1826:18;1815:30;;1812:117;;;1848:79;1408:1;1405;1398:12;1848:79;1962:4;1954:6;1950:17;1938:29;;2016:3;2008:4;2000:6;1996:17;1986:8;1982:32;1979:41;1976:128;;;2023:79;1531:1;1528;1521:12;2023:79;1558:552;;;;;:::o;2116:672::-;2195:6;2203;2211;2260:2;2248:9;2239:7;2235:23;2231:32;2228:119;;;2266:79;197:1;194;187:12;2266:79;2386:1;2411:53;2456:7;2436:9;2411:53;:::i;:::-;2401:63;;2357:117;2541:2;2530:9;2526:18;2513:32;2572:18;2564:6;2561:30;2558:117;;;2594:79;320:1;317;310:12;2594:79;2707:64;2763:7;2754:6;2743:9;2739:22;2707:64;:::i;:::-;2689:82;;;;2484:297;2116:672;;;;;:::o;2794:118::-;2881:24;2899:5;2881:24;:::i;:::-;2876:3;2869:37;2794:118;;:::o;2918:222::-;3049:2;3034:18;;3062:71;3038:9;3106:6;3062:71;:::i;3989:419::-;4193:2;4206:47;;;4178:18;;4270:131;4178:18;3844:2;3252:19;;3461:34;3304:4;3295:14;;3438:58;3530:34;3513:15;;;3506:59;-1:-1:-1;;;3582:15:55;;;3575:29;3965:12;;;3617:366;4652;4879:2;3252:19;;4794:3;3304:4;3295:14;;4554:34;4531:58;;-1:-1:-1;;;4618:2:55;4606:15;;4599:40;4808:74;-1:-1:-1;4891:93:55;-1:-1:-1;5009:2:55;5000:12;;4652:366::o;5024:419::-;5228:2;5241:47;;;5213:18;;5305:131;5213:18;5305:131;:::i;5680:366::-;5907:2;3252:19;;5822:3;3304:4;3295:14;;5589:34;5566:58;;-1:-1:-1;;;5653:2:55;5641:15;;5634:33;5836:74;-1:-1:-1;5919:93:55;5449:225;6052:419;6256:2;6269:47;;;6241:18;;6333:131;6241:18;6333:131;:::i;6734:139::-;6823:6;6818:3;6813;6807:23;-1:-1:-1;6864:1:55;6846:16;;6839:27;6734:139::o;6879:386::-;6983:3;7011:38;7043:5;6556:12;;6477:98;7011:38;7162:65;7220:6;7215:3;7208:4;7201:5;7197:16;7162:65;:::i;:::-;7243:16;;;;;6879:386;-1:-1:-1;;6879:386:55:o;7271:271::-;7401:3;7423:93;7512:3;7503:6;7423:93;:::i;7761:377::-;7849:3;7877:39;7910:5;6556:12;;6477:98;7877:39;3252:19;;;3304:4;3295:14;;7925:78;;8012:65;8070:6;8065:3;8058:4;8051:5;8047:16;8012:65;:::i;:::-;7745:2;7725:14;-1:-1:-1;;7721:28:55;8093:39;;;;;;-1:-1:-1;;7761:377:55:o;8144:313::-;8295:2;8308:47;;;8280:18;;8372:78;8280:18;8436:6;8372:78;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"400000","executionCost":"infinite","totalCost":"infinite"},"external":{"":"infinite","admin()":"infinite","implementation()":"infinite","upgradeTo(address)":"infinite","upgradeToAndCall(address,bytes)":"infinite"},"internal":{"_admin()":"infinite","_beforeFallback()":"infinite","_getAdmin()":"infinite"}},"methodIdentifiers":{"admin()":"f851a440","implementation()":"5c60da1b","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \\\"admin cannot fallback to proxy target\\\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is upgraded.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"admin()\":{\"details\":\"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\"},\"constructor\":{\"details\":\"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\"},\"implementation()\":{\"details\":\"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\"},\"upgradeTo(address)\":{\"details\":\"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\"},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol\":\"OptimizedTransparentUpgradeableProxy\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"hardhat-deploy/solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n    /**\\n     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n     * address.\\n     *\\n     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n     * function revert if invoked through a proxy.\\n     */\\n    function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n    /**\\n     * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n     *\\n     * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n     * function call, and allows initializating the storage of the proxy like a Solidity constructor.\\n     */\\n    constructor(address _logic, bytes memory _data) payable {\\n        assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\\\"eip1967.proxy.implementation\\\")) - 1));\\n        _upgradeToAndCall(_logic, _data, false);\\n    }\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function _implementation() internal view virtual override returns (address impl) {\\n        return ERC1967Upgrade._getImplementation();\\n    }\\n}\\n\",\"keccak256\":\"0x6309f9f39dc6f4f45a24f296543867aa358e32946cd6b2874627a996d606b3a0\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n    // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n    bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n    /**\\n     * @dev Storage slot with the address of the current implementation.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n    /**\\n     * @dev Emitted when the implementation is upgraded.\\n     */\\n    event Upgraded(address indexed implementation);\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     */\\n    function _getImplementation() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 implementation slot.\\n     */\\n    function _setImplementation(address newImplementation) private {\\n        require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n        StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeTo(address newImplementation) internal {\\n        _setImplementation(newImplementation);\\n        emit Upgraded(newImplementation);\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCall(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _upgradeTo(newImplementation);\\n        if (data.length > 0 || forceCall) {\\n            Address.functionDelegateCall(newImplementation, data);\\n        }\\n    }\\n\\n    /**\\n     * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n     *\\n     * Emits an {Upgraded} event.\\n     */\\n    function _upgradeToAndCallUUPS(\\n        address newImplementation,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        // Upgrades from old implementations will perform a rollback test. This test requires the new\\n        // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n        // this special case will break upgrade paths from old UUPS implementation to new ones.\\n        if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n            _setImplementation(newImplementation);\\n        } else {\\n            try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n                require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n            } catch {\\n                revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n            }\\n            _upgradeToAndCall(newImplementation, data, forceCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Storage slot with the admin of the contract.\\n     * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n     * validated in the constructor.\\n     */\\n    bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n    /**\\n     * @dev Emitted when the admin account has changed.\\n     */\\n    event AdminChanged(address previousAdmin, address newAdmin);\\n\\n    /**\\n     * @dev Returns the current admin.\\n     */\\n    function _getAdmin() internal view virtual returns (address) {\\n        return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new address in the EIP1967 admin slot.\\n     */\\n    function _setAdmin(address newAdmin) private {\\n        require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n        StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n    }\\n\\n    /**\\n     * @dev Changes the admin of the proxy.\\n     *\\n     * Emits an {AdminChanged} event.\\n     */\\n    function _changeAdmin(address newAdmin) internal {\\n        emit AdminChanged(_getAdmin(), newAdmin);\\n        _setAdmin(newAdmin);\\n    }\\n\\n    /**\\n     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n     * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n     */\\n    bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n    /**\\n     * @dev Emitted when the beacon is upgraded.\\n     */\\n    event BeaconUpgraded(address indexed beacon);\\n\\n    /**\\n     * @dev Returns the current beacon.\\n     */\\n    function _getBeacon() internal view returns (address) {\\n        return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n    }\\n\\n    /**\\n     * @dev Stores a new beacon in the EIP1967 beacon slot.\\n     */\\n    function _setBeacon(address newBeacon) private {\\n        require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n        require(Address.isContract(IBeacon(newBeacon).implementation()), \\\"ERC1967: beacon implementation is not a contract\\\");\\n        StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n    }\\n\\n    /**\\n     * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n     * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n     *\\n     * Emits a {BeaconUpgraded} event.\\n     */\\n    function _upgradeBeaconToAndCall(\\n        address newBeacon,\\n        bytes memory data,\\n        bool forceCall\\n    ) internal {\\n        _setBeacon(newBeacon);\\n        emit BeaconUpgraded(newBeacon);\\n        if (data.length > 0 || forceCall) {\\n            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x17668652127feebed0ce8d9431ef95ccc8c4292f03e3b8cf06c6ca16af396633\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n    /**\\n     * @dev Delegates the current call to `implementation`.\\n     *\\n     * This function does not return to its internal call site, it will return directly to the external caller.\\n     */\\n    function _delegate(address implementation) internal virtual {\\n        assembly {\\n            // Copy msg.data. We take full control of memory in this inline assembly\\n            // block because it will not return to Solidity code. We overwrite the\\n            // Solidity scratch pad at memory position 0.\\n            calldatacopy(0, 0, calldatasize())\\n\\n            // Call the implementation.\\n            // out and outsize are 0 because we don't know the size yet.\\n            let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n            // Copy the returned data.\\n            returndatacopy(0, 0, returndatasize())\\n\\n            switch result\\n            // delegatecall returns 0 on error.\\n            case 0 {\\n                revert(0, returndatasize())\\n            }\\n            default {\\n                return(0, returndatasize())\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\\n     * and {_fallback} should delegate.\\n     */\\n    function _implementation() internal view virtual returns (address);\\n\\n    /**\\n     * @dev Delegates the current call to the address returned by `_implementation()`.\\n     *\\n     * This function does not return to its internall call site, it will return directly to the external caller.\\n     */\\n    function _fallback() internal virtual {\\n        _beforeFallback();\\n        _delegate(_implementation());\\n    }\\n\\n    /**\\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n     * function in the contract matches the call data.\\n     */\\n    fallback() external payable virtual {\\n        _fallback();\\n    }\\n\\n    /**\\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n     * is empty.\\n     */\\n    receive() external payable virtual {\\n        _fallback();\\n    }\\n\\n    /**\\n     * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n     * call, or as part of the Solidity `fallback` or `receive` functions.\\n     *\\n     * If overriden should call `super._beforeFallback()`.\\n     */\\n    function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xd5d1fd16e9faff7fcb3a52e02a8d49156f42a38a03f07b5f1810c21c2149a8ab\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n    /**\\n     * @dev Must return an address that can be used as a delegate call target.\\n     *\\n     * {BeaconProxy} will check that this address is a contract.\\n     */\\n    function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n     *\\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n     * constructor.\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize/address.code.length, which returns 0\\n        // for contracts in construction, since the code is only stored at the end\\n        // of the constructor execution.\\n\\n        return account.code.length > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain `call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value\\n    ) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(\\n        address target,\\n        bytes memory data,\\n        uint256 value,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(\\n        address target,\\n        bytes memory data,\\n        string memory errorMessage\\n    ) internal returns (bytes memory) {\\n        require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n     * revert reason using the provided one.\\n     *\\n     * _Available since v4.3._\\n     */\\n    function verifyCallResult(\\n        bool success,\\n        bytes memory returndata,\\n        string memory errorMessage\\n    ) internal pure returns (bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/openzeppelin/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (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        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        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        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        assembly {\\n            r.slot := slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca\",\"license\":\"MIT\"},\"hardhat-deploy/solc_0.8/proxy/OptimizedTransparentUpgradeableProxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../openzeppelin/proxy/ERC1967/ERC1967Proxy.sol\\\";\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable by an admin.\\n *\\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n *\\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches one of the admin functions exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\\n * \\\"admin cannot fallback to proxy target\\\".\\n *\\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\\n * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\\n * to sudden errors when trying to call a function from the proxy implementation.\\n *\\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\\n */\\ncontract OptimizedTransparentUpgradeableProxy is ERC1967Proxy {\\n    address internal immutable _ADMIN;\\n\\n    /**\\n     * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\\n     * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\\n     */\\n    constructor(\\n        address _logic,\\n        address admin_,\\n        bytes memory _data\\n    ) payable ERC1967Proxy(_logic, _data) {\\n        assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\\\"eip1967.proxy.admin\\\")) - 1));\\n        _ADMIN = admin_;\\n\\n        // still store it to work with EIP-1967\\n        bytes32 slot = _ADMIN_SLOT;\\n        // solhint-disable-next-line no-inline-assembly\\n        assembly {\\n            sstore(slot, admin_)\\n        }\\n        emit AdminChanged(address(0), admin_);\\n    }\\n\\n    /**\\n     * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\\n     */\\n    modifier ifAdmin() {\\n        if (msg.sender == _getAdmin()) {\\n            _;\\n        } else {\\n            _fallback();\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the current admin.\\n     *\\n     * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\\n     *\\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n     * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n     */\\n    function admin() external ifAdmin returns (address admin_) {\\n        admin_ = _getAdmin();\\n    }\\n\\n    /**\\n     * @dev Returns the current implementation.\\n     *\\n     * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\\n     *\\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n     * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n     * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n     */\\n    function implementation() external ifAdmin returns (address implementation_) {\\n        implementation_ = _implementation();\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy.\\n     *\\n     * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\\n     */\\n    function upgradeTo(address newImplementation) external ifAdmin {\\n        _upgradeToAndCall(newImplementation, bytes(\\\"\\\"), false);\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\\n     * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\\n     * proxied contract.\\n     *\\n     * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\\n     */\\n    function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\\n        _upgradeToAndCall(newImplementation, data, true);\\n    }\\n\\n    /**\\n     * @dev Returns the current admin.\\n     */\\n    function _admin() internal view virtual returns (address) {\\n        return _getAdmin();\\n    }\\n\\n    /**\\n     * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\\n     */\\n    function _beforeFallback() internal virtual override {\\n        require(msg.sender != _getAdmin(), \\\"TransparentUpgradeableProxy: admin cannot fallback to proxy target\\\");\\n        super._beforeFallback();\\n    }\\n\\n    function _getAdmin() internal view virtual override returns (address) {\\n        return _ADMIN;\\n    }\\n}\\n\",\"keccak256\":\"0xa30117644e27fa5b49e162aae2f62b36c1aca02f801b8c594d46e2024963a534\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}}}}}